发新帖我要提问
12
返回列表
打印
[应用相关]

STM32 USB相关知识扫盲

[复制链接]
楼主: labasi
手机看帖
扫描二维码
随时随地手机跟帖
21
labasi|  楼主 | 2021-7-4 16:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
下面摘取一个STM32官方MSC设备的实例进行分析:



可以看到一共用到了4个端点,分别是输入端点0X80和0X81,输出端点0X00和0X01,其中0X00端点和0X80端点是供USB使用必须有的,0X81和0X01端点则是MSC设备输入输出端点。

那么一共使用了4个端点,按理来说PMA头部的端点描述大小应该是4X8=32(十六进制的0X20)字节,0X20之后的才是各个端点缓冲区,但是ST这里的却是从0X18开始,也就是说使用了三个端点,这个地方我还没有搞明白为什么,欢迎各位补充!

至于为什么0X18之后是0X58,是因为USB全速设备的最大包是64字节(十进制的0X40),所以这里PMA的划分就是:

头部0X18字节为各个端点的描述
0X18地址开始的64字节为输出端点0的缓冲区
0X58地址开始的64字节为输入端点0的缓冲区
0X98地址开始的64字节为输出端点1的缓冲区
0XD8地址开始的64字节为输入端点1的缓冲区
这里注意一点,缓冲区分配好之后访问是不会溢出的,也就是说缓冲区之间完全隔离。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则