完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、对于单发送或者接收的端点,端点数据长度为32字节,是否可配置DMA缓存长度为32字节;
2、手册上有这样一句话: “注:接收数据的缓冲区的长度 >= min(可能接收到的最大数据包长度 + 2 字节,64 字节)” 这个“2字节”是个什么意思? |
|
相关推荐
7个回答
|
|
1、需要指定端点描述符大小为32+2字节。
2、在USB数据包中的有效数据后会有2字节的CRC。当DATA包的数据段不满64字节时,2字节的CRC也会被DMA搬运至RAM中,需要在定义缓冲区的时候进行占位。 |
|
|
|
就是说多出来的2字节在分配dma空间时还是必须分配,但是软件的其他地方是否可以使用这2字节的空间呢?还是让他空着不管?
|
|
|
|
你好,顺便再问个问题,请问ch55x系列单片机中所有的中断优先级可不可以设置成同级别的,也就说让某几个中断不嵌套。我看了下手册感觉中断默认都是嵌套的。谢谢!
|
|
|
|
如果是传输长度不满64字节,缓冲区需要2字节占位的情况下,这两个字节随时可能被USB外设修改(当发生了USB传输的时候)。
如果不想产生嵌套,IP寄存器全部设为0即可。 |
|
|
|
注:接收数据的缓冲区的长度 >= min(可能接收到的最大数据包长度 + 2字节,64字节)
还是这个问题,如果设备描述符的端点0最大包设置为64字节=0x40,最大可能收到的数据包为64字节, 这里min(64+2,64)=64,缓冲区长度要设置为64?可能多出来的两个字节CRC放哪里呢? 看了很多Demo,端点0最大包都设置为8字节,是否可以设置为64字节呢? 或者是否可以这样理解:最大缓冲区长度可以设置64字节,可接收的最大数据包长度为64-2=62字节? |
|
|
|
1、USB传输较长包时,有效数据加上2字节CRC超过64字节长度的,超出64的部分不会被DMA搬运到RAM中。
所以缓冲区长度定义成64,就可以保证任意长度的数据传输可靠。 当USB传输全部是短包的时候,从节约ram使用的角度考虑,可以准确的定义缓冲区长度为 最大包长度+2。 举例:当设计端点0的最大长度为8字节(端点0能力是64字节,根据需要可以改)的时候,缓冲区长度需要配置成8+2=10字节 端点1根据通讯双方约定的最大包长度是32字节的时候,长度32+2=34字节 端点1根据通讯双方约定的最大包长度是63字节的时候,63+2=65,65大于最大长度64,长度写成64字节 端点1根据通讯双方约定的最大包长度是64字节的时候,长度直接等于64字节 2、端点长度问题 端点0可以配置成64字节的长度,缓冲区定义长度问题同其余端点一致 |
|
|
|
感谢解释,这下就非常清楚了。
一句话总结就是:USB的DMA在搬运数据时,会多搬运2个字节的CRC,但是搬运总数据最大不超过64字节。 ps. 两个字节的CRC对用户来说是没有用的,感觉这个像是USB IP的的一个known issue. |
|
|
|
只有小组成员才能发言,加入小组>>
435 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2847 浏览 2 评论
2340 浏览 1 评论
788浏览 2评论
CH565W以太网,是必须有SKCKET中断才能发送数据吗?
415浏览 1评论
322浏览 1评论
用DVP采集图像,用UDP传给PC端,采集两帧后图像报错是什么原因?
457浏览 1评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
605浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 19:30 , Processed in 1.165020 second(s), Total 90, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号