打印
[N32G45x]

USB库代码bug

[复制链接]
509|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaojiwei422|  楼主 | 2022-5-19 16:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#技术资源#
Nationstech.N32G45x_Library.2.0.0这个版本的固件库,其usb部分的usb_regs.h的如下部分:
#define _BlocksOf32(dwReg, wCount, wNBlocks)                              \
    {                                                                                            \
        wNBlocks = wCount >> 5;                                                    \
        if ((wCount & 0x1f) == 0)                                                    \
            wNBlocks--;                                                                     \
        *pdwReg = (uint32_t)((wNBlocks << 11) | 0x8000);               \
    } /* _BlocksOf32 */
应改为:
*pdwReg = (uint32_t)((wNBlocks << 10) | 0x8000);
具体原因可参考UM_N32G45x系列用户手册V2.0.0.pdf文档的19.5.4.4章节对于接收数据字节数寄存器的描述,如果是右移11位,则当wCount = 64时写入该寄存器中NUM_BLK[4:0]域的值为二进制0100,对应表19-10则分组缓冲区的大小就被错误的设置为96字节。

请官方提供这种底层库的时候注意检查。

使用特权

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

本版积分规则

2

主题

3

帖子

1

粉丝