历史上的今天

今天是:2024年11月05日(星期二)

正在发生

2020年11月05日 | stm32 usb数据缓冲区疑问

发布者:MysticEssence 来源: eefocus关键字:stm32吗  usb  数据缓冲区 手机看文章 扫描二维码
随时随地手机看文章

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吗  usb  数据缓冲区 引用地址:stm32 usb数据缓冲区疑问

上一篇:STM32之DMA二
下一篇:使用STM32的USB模块中后对USB缓冲区的认识

推荐阅读

苹果秋季发布会带来了三款新品,New MacBook Air、New iPad Pro,还有 New Mac mini。无一不令人兴奋。它们有着截然不同的外貌,却默默分享着一个共同点——Type-C。发布会之后有用户戏称:“这恐怕是最不像 Mac mini 的 Mac mini,接口太齐全了。”  Mac mini 有 3 个 Type-C 苹果对接口标准的固执  如果说 MacBook Air 的 Typ...
由于被美国列入“实体清单”,公司目前的 40 亿美元估值面临不确定性,人工智能创业公司旷视科技正在考虑是否推迟其 IPO 计划。 新闻主体:北京旷视科技有限公司由印奇、唐文斌、杨沐三人 2011 年创办于北京市海淀区中关村, 致力于打造服务于各商业领域的 AIoT 操作系统,以及构建具备连接物联网设备能力的生态系统。 在北京、上海、深圳、成都...
11月5日消息,型号为SM-G998U的三星手机获得NFC认证。  报道指出,SM-G998U便是三星Galaxy S21 Ultra,是Galaxy S21系列中的超大杯,也将是三星最强悍的旗舰手机。  之前有爆料称三星Galaxy S21系列将于1月14日发布,1月底上市发售。  与往年Galaxy S系列发布时间相比,Galaxy S21系列亮相时间似乎提前,外界猜测三星提前发布Galaxy...
人类流动的概念正在被设计成与人类体验保持一致。比赛开始了。创新的汽车制造商、软件开发商和技术公司正在引领汽车行业的彻底变革 。他们正在改进和重新定义现有技术,并引入新的、令人兴奋的概念,如人工智能和联网汽车,为我们提供前所未有的驾驶体验。让我们看看那个未来:一辆完全自动驾驶的汽车将一个人运送到目的地,无需驾驶员监督——不需要关注...

史海拾趣

问答坊 | AI 解惑

FPGA设计流程简介及设计注意事项

FPGA设计流程简介及设计注意事项…

查看全部问答∨

自制简易热风焊台

现代电子产品广泛采用表面焊接技术,这给维修人员拆卸元器件带来不便。特别是拆卸多引脚芯片和塑封无引脚芯片,更使无专用工具的维修人员感到无从下手。   当然,采用热风焊台,可使上述难题迎刃而解。但是,一台进口热风焊台价格昂贵,国产的热 ...…

查看全部问答∨

如何判断wince是否支持MFC和com组件?

wince设备,想看看其wince系统是否支持mfc和com组件,怎么看?以及能查看到相关的版本信息吗?…

查看全部问答∨

单片机3X3键盘如何实现不同的LED灯闪形式(汇编语言)

如何用矩阵式键盘来控制不同的LED灯闪形式(循环闪烁,什么形式都行), 要求键盘用定时器扫描!先谢谢啦!…

查看全部问答∨

XXX_IOControl里的读和写

有个问题搞不懂,这是一个SPI驱动,开发板用s3c6410,作为master,外面的设备作为slave,这个设备在XXX_Open后要设置一些它里面的寄存器参数才能工作,这在XXX_IOControl中实现,就是我要把传入IOControl函数里的InBuffer里的数据写到设备中去,那 ...…

查看全部问答∨

vxWorks下进行串口调试

vxWorks下进行串口调试,目标机一端总出现如下信息: Fatal WTX error (0x10136), synchronization stopped                        Fatal WTX error (0x1012f ...…

查看全部问答∨

DNW里面显示的USB协议怎么跟EBOOT里面的通过USB接收处理协议对不上?

DNW里面显示的USB协议怎么跟EBOOT里面的通过USB接收处理协议对不上? 1>DNW里面的ABOUT菜单显示的为           2. USB Tx format: addr(4)+size(4)+data(n)+cs(2) 2>C:\\WINCE500\\PLATFORM\\COMMON\\SRC\\COM ...…

查看全部问答∨

求救:程序出俩错误,拜托高手帮忙

程序: BOOL CreateSolidBrush(COLORREF crColor);    //声明 void CMy0628_1Dlg::OnDonny() {         // TODO: Add your control notification handler code here         //I write & ...…

查看全部问答∨

请教一个SIM300的问题

430单片机与SIM300模块做的保护器,用短信控制设备,现在有个问题,当保护器断电或关机后再开机设备就不执行命令,但人工复位后又恢复执行命令了,还有如果用键盘操作设备向手机发短信后也会恢复命令,就好象SIM300在睡觉,只要唤醒后就可以执行命 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved