历史上的今天
返回首页

历史上的今天

今天是:2024年10月28日(星期一)

正在发生

2020年10月28日 | 学习笔记----stm32的usb外设概述

2020-10-28 来源:eefocus

一、stm32的usb简介:

1。usb外设实现了usb2.0全速总线和APB1总线间的接口。

2。usb外设支持usb挂起/恢复操作,可以停止设备时钟实现低功耗。


二、usb主要特征

1。符合usb2.0全速设备的技术规范

2。可配置1到8个usb端口

3。CRC(循环荣誉校验)生成/检验,反向不归零(NRZI)编码/解码和位填充

4。支持同步传输

5。支持批量/同步端点的双缓冲区机制

6。支持usb挂起/恢复操作

7。诊所定时钟脉冲生成

注意:usb和can公用一个专用的512字节的SRAM存储器用于数据的发送和接收,因此不能同时使用usb和can(共享的SRAM被usb和can模块互斥的访问)usb和can可以同时用于一个应用中但不能在同一个时间内使用。


三、usb设备框图


四、usb功能描述

usb模块为pc主机和微控制器所实现的功能之间提供了符合usb规范的通信连接。pc主机和微控制器之间的数据传输是通过共享一专用的数据缓冲区来完成的,该数据缓冲区能被usb外设直接访问。这块专用数据缓冲区的大小由所使用的端点数目和每个端点的数据分组大小所决定,每个端点最大可使用512字节缓冲区,最多可用于16个单向或8个双向端点。us模块同pc主机通信,根据usb负ifanshixian灵牌分组的检测,数据发送和接收的处理,和握手分组的处理。整个传输的格式由硬件完成,其中包括CRC的生成和校验。


每个端点都有一个缓冲区描述快,描述该端点使用的缓冲区地址、大小和需要传输的字节数。当usb模块识别出一个有效的功能/端点的令牌分组时,(如果需要还书数据并且断电已配置)随之发生相关的数据传输。usb模块通过一个内部的16位寄存器实现端口与专用缓冲区的数据交换。在所有的数据传输完成后,如果需要,则根据传输的方向,发送或接收适当的握手分组。


在数据传输结束时,usb模块将触发与端点相关的中断,通过读状态寄存器和/或者利用不同的中断处理程序,为控制其可以确定以下几个问题:1。哪个端点需要得到服务;2。产生如位填充、格式、CRC、协议、缺失ACK、缓冲区溢出/缓冲区未满等错误时,这个内在急性的是哪种类型的传输。


usb模块对同步传输和高吞吐量的批量传输提供了特殊的双缓冲区机制,在微控制器使用一个缓冲区的时候,该机制保证了usb外设总是可以使用另一个缓冲区。


在任何不需要使用usb模块的时候,通过写控制寄存器总可以使usb模块置于低功耗模式(low power mode ,suspend模式)。在这种模式下,不产生任何静态电流消耗,同时usb时钟也会减慢或停止。通过对usb线上数据传输的检测,可以在低功耗模式下唤醒usb模块。也可以将一特定的中断输入源直接连接到唤醒引脚上,以使系统能立即恢复正常的时钟系统,并支持直接启动或停止时钟系统。


五、usb功能模块描述

usb模块实现了标准usb接口的所有特性,它由以下部分组成:


串行接口引擎(S.I.E):该模块包括的功能有:帧头同步域的识别,位填充,CRC的产生和校验,PID的验证/产生,和握手分组处理等。它与usb收发器交互,利用分组缓冲接口提供的虚拟缓冲区存储局部数据。它也根据usb事件,和类似于传输结束或一个包正确接受等端点相关事件生成信号,例如帧首(Start of Frame),usb复位,数据错误等等,这些信号用来产生中断。


定时器:本模块的功能是产生一个与帧开始报文同步时钟脉冲,并在3ms内没有数据传输的状态,检测出全局挂起条件。


分组缓冲器接口:此模块管理那些用于发送和接收的临时本地内存单元。它根据SIE的要求分配合适的缓冲区,并定位到端点寄存器所指向的存储区地址。它在每个字节传输后,自动递增地址,直到数据分组传输结束。它记录传输的字节数并防止缓冲区溢出。


端点相关寄存器:每个端点都有一个与之相关的寄存器,用于描述端点类型和当前状态。对于单项和单缓冲器端点,一个寄存器就可以用于实现两个不同的端点。一共8个寄存器,可以用于实现最多16个单向/单缓冲端点或者7个双缓冲的端点或者这些端点的组合。例如,可以同时实现4个双环冲端点和8个单缓冲/单向端点。


控制寄存器:这些寄存器包含整个usb模块的状态信息,用来出发注入恢复,低功耗等usb事件。


中断寄存器:这些寄存其包含中断评比信息和中断事件的记录信息。配制和访问这些寄存其可以获取中断源,中断状态等信息,并能清除待处理中断的状态标志。


注意:端点0总是作为单缓冲模式下的控制端点。


usb模块通过APB1接口部件与APB1总线相连,APB1接口部件包括以下部分:

分组缓冲区:数据分组缓存在分组缓冲区中,它由分组缓冲接口控制并创建数据结构。应用软件可以直接访问该缓冲区。它的大小为512个字节,由256个16位的字构成。


仲裁器:该部件负责处理来自APB1总线和usb接口的存储器请求。它通过向APB1提供较高的访问优先权来解决总线的冲突,并且总是保留一半的存储器带宽供USB完成传输。它采用时分复用的策略实现了虚拟的双端口SRAM,即在USB传输的同时,允许应用程序访问存储器。此策略也允许任意长度的多字节APB1传输。


寄存器映射单元:此部件将usb模块的各种字节宽度和位宽度的寄存器映射陈能被APB1寻址的16位宽度的内存集合。


APB1封装:此部件为缓冲区和寄存器提供了到APB1的接口,并将整个usb模块映射到APB1地址空间。


中断映射单元:将可能产生中断的usb实践映射到三个不同的NVIC请求线上:

——usb低优先级中断(通道20):可由所有usb事件出发(正确传输,usb复位等)。固件在处理中断前应当首先确定中断源。


——usb高优先级中断(通道19):仅能由同步和双缓冲批量传输的正确传输事件出发,目的是保证最大的传输速率。


——usb唤醒中断(通道42):由usb挂起模式的唤醒事件触发。


推荐阅读

史海拾趣

常忆科技(CHINGIS)公司的发展小趣事

为了满足不断增长的市场需求,常忆科技积极拓展国内外市场。公司通过与全球知名的电子产品制造商建立合作关系,成功将产品打入国际市场。同时,常忆科技还积极参加各类国际电子展会和技术交流活动,展示其最新的技术和产品,吸引了众多国际客户的关注。

随着国际化战略的深入实施,常忆科技的产品逐渐在全球范围内得到应用。这不仅提升了公司的品牌知名度和影响力,也为公司带来了丰厚的经济回报。

Holt Integrated Circuits公司的发展小趣事

除了传统的航空电子解决方案外,Holt还致力于高压LCD显示驱动器的研发。这些产品不仅满足了航空电子设备对高可靠性和高清晰度的需求,还广泛应用于工业过程自动化和井下钻探等领域。Holt的高压LCD显示驱动器以其卓越的性能和稳定性,赢得了众多客户的信赖和好评。

昭华(CHA)公司的发展小趣事

随着市场需求的不断变化,昭华公司敏锐地捕捉到了防水型轻触开关的市场潜力。他们投入大量资金进行技术研发,成功开发出了一系列防水性能优异、稳定性强的防水型轻触开关。这些产品一经推出便受到了市场的热烈欢迎,为昭华公司带来了可观的利润。此外,昭华公司还不断探索新的技术路线,成功将LED与开关结合,推出了发光开关系列产品,进一步丰富了公司的产品线。

Ho Chien Electronics Group Inc公司的发展小趣事

昭华公司一直注重品牌建设和市场拓展。他们通过参加各种行业展会、举办技术研讨会等方式,积极宣传公司的产品和技术优势。同时,昭华公司还加强了与客户的沟通和合作,深入了解客户需求并提供定制化的解决方案。这些努力使得昭华公司的品牌知名度不断提升,市场份额也逐渐扩大。

酷宅(Coolkit)公司的发展小趣事

酷宅科技在智能家居市场的发展中,选择了电子电工和照明类市场作为切入点。这个市场具有巨大的智能化需求,但生产厂家众多,垄断程度低,利润率也相对较低。酷宅凭借其在物联网技术方面的优势,迅速满足了这一市场的迫切需求,并获得了巨大的出货量。随着市场的不断扩大,酷宅科技又进一步进入小家电市场,瞄准了加湿器、香薰机等长尾品类,继续扩大其市场份额。

Everspin Technologies公司的发展小趣事

在寻求更广泛的市场应用和技术合作方面,Everspin与Quicklogic Corporation签订了分包协议。根据协议,Quicklogic将其部分开发服务分包给Everspin,共同推进战略辐射加固现场可编程门阵列原型项目的开发。这一合作不仅展示了Everspin在电子行业中的技术实力和市场影响力,也为其未来的发展开辟了新的道路。

以上五个故事概述了Everspin Technologies公司在电子行业中发展起来的关键历程和成就。这些故事展示了Everspin在MRAM技术领域的领先地位、创新能力和市场应用方面的成功。

问答坊 | AI 解惑

电机的控制

用的是直流电机,信号由PWM来控制,采用H桥驱动,经过齿轮箱,把旋转运动转化为直线运动,负载是控制弹簧的开度。 有人告诉我,电机的电压越大,电流越小,这是为什么? 当电机扭矩不够大,带不动负载时,电机是什么状态,转还是不转? 当电机把 ...…

查看全部问答>

中兴通讯电源输入端口的电磁兼容设计

中兴通讯电源输入端口的电磁兼容设计…

查看全部问答>

电路板新手问一些电路板上的基础问题

不知道发在什么版合适,看来看去还是发在这个版块了~ 现在我在学习电路板、电路图的知识。以前在学校虽然学习过模电数电但是毕竟没有怎么接触过真东西,只是理论知识。 现在手头有一块电路板,我需要画出它的电路图来。面临的问题是,我不懂电路 ...…

查看全部问答>

qt串口编程的问题

make后提示 serialthread.h 语法错误,但没发现serialthread.h中的语法错误。为什么编译不成功呢?? [root@localhost qt-1]# make g++ -c -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -fno-default-inline -DNO_DEBUG -I/working/qt/q ...…

查看全部问答>

wince下能调通的程序不能执行!

我通过#pragma 引入了几个lib文件,还需要在项目属性中手动输入那些文件吗? 我生成exe文件后运行的时候显示0x8007007e错误  我又把那些lib文件手工复制到模拟器中,放在exe文件的目录下还是不能执行 请问这是怎么回事? …

查看全部问答>

有没有在STM32F103上成功实现IAP的兄弟?

                                 刚到ST的网站上下了个IAP的PDF和例程,是官方给提供的例子,基于他们的开发板的,用的是超级终端下ymodem协议传输 ...…

查看全部问答>

深圳有哪些ST代理商

                                 我想问STM32F103T6的价格,还有开发工具事项…

查看全部问答>

分享ARM7学习经验--跑马灯(一)

首先介绍下恩智浦公司的MCU型号划分方法,这些MCU中,LPC3000、LH7A采用ARM9内核,LPC2000和LH7采用ARM7内核,LPC1000系列采用Cortex-M3或M0内核。开发板的芯片是LPC2148,属于LPC2100系列,所以再介绍下LPC2100系列MCU。LPC2100系列MCU基于一个 ...…

查看全部问答>

刚完成了一个CycloneIII fpga开发板,将CycloneIII设计中的问题分享一下,持续更新

我所使用的芯片是Cyclone III EP3C5E144,与ep3c10e144是引脚兼容,没有去兼容ep3c16和25,因为用户IO相差太大, 本来qfp144的封装io就不太多,ep3c16和25就没有考虑。 ep3c5有5136个逻辑资源,跑普通的Verilog代码和niosII 完全 ...…

查看全部问答>

恩智浦充分挖掘多功能汽车钥匙的潜能

推出市场就绪型NFC“智能”汽车钥匙 中国上海,2011年6月15日 --\" 智能\"汽车钥匙市场的先驱--恩智浦半导体NXP Semiconductors N.V. (NASDAQ:NXPI) 今日宣布推出针对多功能汽车钥匙的生产就绪单芯片解决方案--NCF2970 (KEyLink L ...…

查看全部问答>