GD32F30X的USB cdc虚拟串口,走modbus RTU协议问题

[复制链接]
193|3
手机看帖
扫描二维码
随时随地手机跟帖
童心~|  楼主 | 2022-11-24 11:14 | 显示全部楼层 |阅读模式
GD32F30X的USB cdc虚拟串口,走modbus RTU协议问题

根据官网提供的USB cdc虚拟串口例程,能够调通USB通讯,收发正常。即使发送给ARM一帧1024bytes的数据,程序也能够正常回复1024bytes。
但是这个过程其实是分为多帧进行的,因为USB一帧只能收发64个bytes,所以程序其实是将一帧长字节的数据分割为多帧进行收发的。

那么,如果想要在USB内走modbus RTU的协议,可能收到大约64bytes的数据帧,并对这个数据帧进行分析做出相应回复。
改如何修改例程?应该在USB接收中断内将收到的数据进行组合?(如果不在中断内处理,是不是来不及转存导致后面的数据被覆盖?)

有没有大神做过类似的修改?STM32的USB cdc例程与GD的差异较大,似乎借鉴意义不大

使用特权

评论回复
童心~|  楼主 | 2022-11-24 17:42 | 显示全部楼层
有做过的前辈吗?还请指导

使用特权

评论回复
fxyc87| | 2022-11-25 08:43 | 显示全部楼层
和普通串口收是一样啊,收到一组USB数据后,定时器中置标志,超时5mS后就认为modbus结束,正常usb是1mS一组数据。

使用特权

评论回复
童心~|  楼主 | 2022-11-25 10:16 | 显示全部楼层
fxyc87 发表于 2022-11-25 08:43
和普通串口收是一样啊,收到一组USB数据后,定时器中置标志,超时5mS后就认为modbus结束,正常usb是1mS一组 ...

感谢回复!
再请教您:
那在连续接收状态,收到数据并组合数据的操作应该在USB中断usbd_isr()内进行吗?
\version 2022-06-10, V3.1.0, firmware for GD32F30x,这个版本的USB 驱动是下面这个部分代码吗 36486380252c41965.png

使用特权

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

本版积分规则