打印
[技术问答]

又发现 NUC505 虚拟串口代码的2个Bug

[复制链接]
582|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
seawwh|  楼主 | 2020-4-22 17:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码位于 NUC505_Series_BSP_CMSIS_V3.03.001/SampleCode/USBD_VCOM_SerialEmulator

1. uint8_t gUsbRxBuf[64] = {0};  其中的64应改为512,这是HOST向USB虚拟串口发送大与64字节数据包时发现的。
2. 如果USB发送一个512Byte 的数据包,是发送不出去的。
  改正方法:
  对于512Byte 的数据包,再补充发送一个0长度的数据包。
  或者, 每次发包的最大长度定为511

使用特权

评论回复
沙发
huangcunxiake| | 2020-4-22 20:55 | 只看该作者
非常赞。

使用特权

评论回复
板凳
huangcunxiake| | 2020-4-22 20:56 | 只看该作者
那是不是还可以修改成1024,发送更长的。

使用特权

评论回复
地板
xixi2017| | 2020-4-22 23:55 | 只看该作者
应该不算BUG,这个是人家设置的。

使用特权

评论回复
5
dongnanxibei| | 2020-4-23 13:20 | 只看该作者
这应该不算BUG。

使用特权

评论回复
6
seawwh|  楼主 | 2020-4-24 12:20 | 只看该作者
huangcunxiake 发表于 2020-4-22 20:56
那是不是还可以修改成1024,发送更长的。

2048 Bytes Configurable RAM used as endpoint buffer
Supports Endpoint Maximum Packet Size up to 1024 bytes

NUC505 USBD 专用RAM为2048B,每个端点最大可用 1024B
因此可以将某个端点的RAM设置为 1024B以提高传输速度,但是还要考虑到其他端点的可用RAM。

Sample 代码中是这样分配的:

/* Define EP maximum packet size */
#define CEP_MAX_PKT_SIZE        64
#define CEP_OTHER_MAX_PKT_SIZE  64
#define EPA_MAX_PKT_SIZE        512
#define EPA_OTHER_MAX_PKT_SIZE  64
#define EPB_MAX_PKT_SIZE        512
#define EPB_OTHER_MAX_PKT_SIZE  64
#define EPC_MAX_PKT_SIZE        64
#define EPC_OTHER_MAX_PKT_SIZE  64

需要保证这些RAM的总和不大于 2048B

使用特权

评论回复
7
玛尼玛尼哄| | 2020-4-24 14:59 | 只看该作者
专用RAM为2048B,每个端点最大可用 1024B,楼上说的这句话非常重要,感谢提醒

使用特权

评论回复
8
jiekou001| | 2020-4-26 08:49 | 只看该作者
可以用个宏,做个减法。

使用特权

评论回复
9
yiy| | 2020-4-26 20:04 | 只看该作者
问题不算严重。

使用特权

评论回复
10
yiyigirl2014| | 2020-4-26 22:44 | 只看该作者
竟然支持USB,666

使用特权

评论回复
11
天灵灵地灵灵| | 2020-4-27 09:05 | 只看该作者
没有利用完,那肯定算BUG

使用特权

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

本版积分规则

145

主题

368

帖子

0

粉丝