大神好。我在用DMA发送串口数据时会出现数据覆盖的现象
我用这种方式打开并配置串口DAM:
g_uart2obc = rt_device_find("uart1");
if(!g_uart2obc)
{
AWLOG_ERROR("can't find obc conn uart");
return -1;
}
struct serial_configure uart_config = RT_SERIAL_CONFIG_DEFAULT;
uart_config.baud_rate = 115200;
uart_config.bufsz = 4096;
if(RT_EOK != rt_device_control(g_uart2obc, RT_DEVICE_CTRL_CONFIG, &uart_config))
{
AWLOG_ERROR("config obc uart faiLED");
return -1;
}
if(RT_EOK != rt_device_open(g_uart2obc, RT_DEVICE_FLAG_DMA_RX|RT_DEVICE_FLAG_DMA_TX))
{
AWLOG_ERROR("open obc uart failed");
return -1;
}
return 0;
但是如果连续发送两个数据包就会出现第二个数据包被发出去,而第一个数据包没有被发出去的情况,代码:
rt_device_write(g_uart2obc, 0, buf1, length1); // 发送第一个数据包
rt_device_write(g_uart2obc, 0, buf2, length2); // 发送第二个数据包
如果发送两个数据包中间有延时那么两个数据包就都能被发送出去:
rt_device_write(g_uart2obc, 0, buf1, length1); // 发送第一个数据包
rt_thread_mdelay(5);
rt_device_write(g_uart2obc, 0, buf2, length2); // 发送第二个数据包
所以我推测是DMA底层代码的发送缓冲区资源分配的问题,导致数据被覆盖了
麻烦大神确认下这个问题,万分感谢!!!
共3条
1/1 1 跳转至页
如何解决DMA发送串口数据时出现的数据覆盖问题?

只看楼主 1楼
关键词: DMA 串口数据
共3条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
【Zephyr】使用Zephyr外设初始化过程解析被打赏30分 | |
【S32K146】S32DS watchdog 配置使用被打赏20分 | |
【Zephyr】使用 IAR 调试 Zephyr 镜像被打赏20分 | |
赚取电动螺丝刀+电源电路理论知识分享1被打赏5分 | |
我想要一部加热台+分享常见运算放大器电路的应用被打赏5分 | |
【Zephyr】MCXN947 Zephyr 开发入门适配shell被打赏20分 | |
我想要一部加热台+常见的MOS管驱动电路被打赏5分 | |
【我要开发板】6.联合MATLAB记录数据被打赏50分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下串口调试printf输出记录被打赏29分 | |
【瑞萨RA2E1开发板】:使用ADC功能实现位移传感器采集方案被打赏20分 |