1
STM32F1 USB外设实现了USB2.0全速总线和APB1总线间的接口。看不懂的话看下图。
2
STM32F1 USB外设功能描述
USB外设为PC主机和微控制器所实现的功能之间提供了符合USB规范的通信连接。PC主机和微控制器之间的数据传输是通过共享一专用的数据缓冲区来完成的,该数据缓冲区能被USB外设直接访问。这块专用数据缓冲区的有效大小由所使用的端点数目和每个端点最大的数据包大小所决定(总共有16端点,PMA大小为512字节,可以用多少拿多少,也可以全用),所有端点共享用512字节缓冲区,最多可用于16个单向或8个双向端点。USB模块同PC主机通信,根据USB规范实现令牌包的检测,数据发送/接收的处理,和握手包的处理。整个传输的格式由硬件完成,其中包括CRC的生成和校验。
也就是说16个端点共享一个512字节的缓冲区,我们可以理解为USB HOST就是通过对这些缓冲区的读写来实现和设备的数据交互,其实原理大概就是如此。 如果主机发送数据给设备 ,设备会把USB外设接收的数据放入缓冲区,完毕之后通知CPU读取数据了, 如果主机读取USB设备的数据 ,CPU会把数据放到缓冲区,然后告诉USB外设可以发送数据了,USB外设会把缓冲区的数据通过总线发送给主机。
2
STM32F1 USB外设主要特征
1.符合USB2.0全速设备的技术规范。
2.可配置1到8个USB双向端点,我们可以理解为8个IN端点和8个OUT端点,也就是每一个双向端点可以被配置为一个IN端点和一个OUT端点,但是这两个端点共用一个端点寄存器,两个端点的类型必须是一致的(控制端点、中断端点、批量端点、同步端点)。
3.外设硬件自动为每一个PID和Packet字段生成CRC效验,并和其他字段组成一个完整的USB Packet。
4.支持控制传输、中断传输、同步传输、批量传输。
5.支持同步传输和批量传输双缓冲机制,比如说我们采集ADC或者接收外部传感器的数据时必须保持数据的完整性,就可以使用双缓冲机制防止丢数。
6.支持对自己的挂起和恢复操作。
7.帧锁定时钟脉冲生成。当收到一个SOF帧开始包,可以生成一个脉冲信号给其他模块使用,如果SOF中断使能,会进入SOF中断处理函数。
-
微控制器
+关注
关注
48文章
7482浏览量
151014 -
USB接口
+关注
关注
9文章
699浏览量
55569 -
中断处理
+关注
关注
0文章
94浏览量
10956 -
stm32f1
+关注
关注
1文章
56浏览量
12182 -
CRC效验
+关注
关注
0文章
30浏览量
1093
发布评论请先 登录
相关推荐
评论