大神好。我在用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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持数字示波器】树莓派PICO调试器官方固件本地化部署实践被打赏24分 | |
【换取手持数字示波器】分享一个KEIL无法识别CMSIS-DAP调试器的解决办法被打赏20分 | |
【换取手持数字示波器】分享一个自制的ArduinoNano扩展板底板被打赏23分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 | |
【换取手持示波器】树莓派PICO逻辑分析仪被打赏16分 |