您的位置:首页 > 其它

学习笔记----stm32的usb外设概述

2013-05-22 13:52 141 查看


学习笔记----stm32的usb外设概述

一、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挂起模式的唤醒事件触发。





#嵌入式系统技术
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: