嵌入式技术论坛
直播中

jjll652

9年用户 1456经验值
私信 关注
[问答]

为什么RT-Thread在使用串口DMA模式的时候接收数据接收不到00呢?

受到警告
提示: 作者被禁止或删除 内容自动屏蔽

回帖(2)

建立建利12

2023-2-3 11:35:41
以你的最后一张图为例。

你发出的数据Hex是:01 03 01 48 00 08 C4 1A,右侧的buffer显示收到了后续数据,其中,
48H = 72D, 08H = 08D, C4H = 196D, 1AH = 26D。

你看Com4_Write实现方法咯,用rt_strlen计算buffer长度,遇到’’,即0x00就停止输出了。

这显然不是串口DMA的问题。

你可以使用rt_device_read的返回值,表示返回数据的长度。同时适当改写Com4_Write函数即可,如增加一个输入参数表示数据长度,如果为0,则使用rt_strlen获取buf中的字符串。
举报

张丽

2023-2-3 11:35:50
同意,这个与串口DMA无关,buffer里应该已经收到所有的数据了,不应该使用printf打印,会忽略掉00以及之后的数据,楼主需要使用

rt_device_write(dev_uart1, 0, buffer, size);
来发送数据给串口助手
举报

更多回帖

发帖
×
20
完善资料,
赚取积分