USB不同的应用需要使用到的端点数和端点数据长度各不相同,如果为每个端点都单独规划一个存储区非常浪费。
所以STM32为USB模块提供了共512个字节的存储区,至于如何为每个端点分配使用这512B的空间,就是用户自己的事情了,这样存储区的分配就非常经济灵活。这512B空间的首地址是0x40006000。
你看到的#define ENDP2_RXADDR (0xD8),这个0xD8就是在这512B空间里的偏移地址,说明端点2收到的数据将放在0x40006000 + 0xD8 * 2的地址空间里。至于为什么要×2,是因为这部分存储区是按照2字节访问的,即每存放1个字节的数据要占据2个字节的空间。所以这段存储区的地址是从0x40006000到0x400063FF。
至于如何定义端点2的发送缓冲区,就看你的应用了。你把端点2的接受缓冲区定义在0xd8,如果端点2的接收数据长度是64个字节,那就要为端点2的接收保留64个字节,端点2的发送缓冲区就要定义到0xd8+64之后的空间。
即:#define ENDP2_TXADDR (0xD8+64),
当然也可以#define ENDP2_TXADDR (0xD8+100)或是其他。
总之如何分配这段存储区,完全可以按照你应用的需求来做。
最近研究了下103VBT6的USB,看了很多次都看不明白,我开始怀疑我的阅读能力了。现有以下几点疑问请教大家
1.缓冲区描述表在缓冲区内即0x4000 6000--0x400063FF。如果我只用端点0,那么端点0的缓冲区描述表为
ADDR0_TX、COUNT0_TX、ADDR0_RX、COUNT0_RX所对应的地址为0x4000 6000--0x4000 6008 (USB_BTABLE = 0)
现在有两人疑问:
A.0x4000 6008以后的地址可不可以作缓冲区?
B.如果给ADDR0_TX、COUNT0_TX赋个合适的值,会不会端点0的缓冲区在0x4000 6000--0x4000 6008内,从而覆盖了它的缓冲区描术表?
2.为什么分组缓冲区地址(按字节编址)要乘以2才是缓冲区在MCU的地址,能不能举个例子说明?
3.0x4000 6000--0x400063FF等于1024字节,为什么是512字节,是不是后一半没有使用,芯片为103VBT6?如果我有一个端
点用了512字节缓冲区,那么缓冲区就用完了,是不是表示其他端点就没有缓冲区可用了,连缓冲区描述表都没有空间可分配了
1.A) 如果只使用端点0,0x4000 6010以后的地址可以作缓冲区。注意不是0x4000 6008以后的地址,原因请看下面的2)。
1.B) 如果给ADDR0_TX、COUNT0_TX赋的值不合适,端点0的缓冲区有可能覆盖缓冲区描述表,所以请选择合适的值,以避免冲突。
2)这是因为分组缓冲区是一个双端口的RAM,CPU一端需要使用32位方式访问,但USB模块一端使用16位方式访问。
例如需要从0x4000 6010开始分配8个字节的缓冲区,则从CPU一端看,需要占用0x4000 6010、0x4000 6014、0x4000 6018和0x4000 601C开始的4个字的空间,即CPU端每4个字节的地址空间中,只有2个字节的地址空间对应实际的存储器,而另2个字节的地址空间没有对应到任何物理的存储器。
3)1024字节与512字节的问题,请看上面的说明。
如果有一个端点用了512字节缓冲区,那么缓冲区就用完了,表示其他端点就没有缓冲区可用了,连缓冲区描述表都没有空间可分配了。
上一篇:STM32之DMA二
下一篇:使用STM32的USB模块中后对USB缓冲区的认识
推荐阅读最新更新时间:2024-11-09 10:53
设计资源 培训 开发板 精华推荐
- AD8626ARZ精密放大器用于8极Sallen-Key低通滤波器的典型应用电路
- 效果器模拟开关旁路
- RT8289 5A、32V、500kHz降压转换器的典型应用
- CY8CMBR3106S 触摸屏多传感器类型典型应用
- ZTL431过压/欠压保护电路典型应用
- 用于线性欧姆表的 TL431 可编程精密基准的典型应用
- LT1766EFE 演示板,1.5A、200kHz 高压降压转换器,Vin = 6V-60V,Vout = 5V @ 1A
- STM32M2Dock
- EZ-PD CCG2 USB Type-C 转 DisplayPort 线缆解决方案参考设计
- 使用 ROHM Semiconductor 的 BU4826 的参考设计
- NXP微控制器电路板,针对USB Type C接口设计,评测创意有奖征集,晒心得更有多重好礼!
- 端午节芯币大兑换
- 【泰有聊】系列技术文章连载1:示波器“芯”升级,聊一聊TEK061/041 ASIC创新平台
- 2009 EEWORLD 年度人物大评选活动评奖揭晓
- 直播|基于英特尔® Agilex™ FPGA的PCIe Gen5和CXL解决方案
- 情人节礼物:爱要怎么说出口?
- 答题赢好礼:利用GAN技术应对电源适配器设计挑战
- 只为汽车更安全,下载 TI DRV3000系列产品手册,抢楼截图入好礼喽!
- 月度原创精选评选:有料,够精彩,要的就是它!
- Microchip有奖问答 | 新品 MCU 独立于内核的外设(CIP)技术解密
- vivo平板电脑和智能手表已量产,笔记本电脑正在路上
- 外媒评测谷歌Pixel 5a:物超所值低价5G手机
- 小米10/Pro/至尊纪念版推送GPU驱动更新
- 苹果Apple TV支持德国电信的第三方遥控器,产品通过认证
- 微软为翻译App带来了方言语音选项,支持英语、西班牙语等
- 苹果在iPhone爆料泄密者群体中秘密安插“双重间谍”
- 华为Mate 20/Pro系列推鸿蒙HarmonyOS 2.0.0.165新版更新
- Galaxy手机用户现可于Samsung Pay中存储出示新冠疫苗接种证明
- 三星推出UPC屏下摄像头技术,用于Galaxy Z Fold 3可折叠显示屏
- 欧盟新规会让iPhone用USB-C口吗?