大神好。我在用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 跳转至页
回复
有奖活动 | |
---|---|
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? | |
抽奖了,抽奖了,金升阳医疗电源 |
打赏帖 | |
---|---|
【换取手持数字示波器】+树莓派pico驱动步进电机被打赏30分 | |
【换取手持数字示波器】Ubuntu中QT5的安装被打赏40分 | |
【换取手持数字示波器】Ubuntu中vsftpd的安装与配置被打赏40分 | |
【换取手持数字示波器】基于STM32U0的最全功耗测试被打赏40分 | |
【分享评测,赢取加热台】+极海APM32F035低压电机通用评估板+串口被打赏40分 | |
N32A455硬件I2C调试被打赏40分 | |
【分享评测,赢取加热台】+EFR32xG24 PWM控制红色LED(呼吸灯)被打赏40分 | |
【分享评测,赢取加热台】+利用IIC读温湿度传感器Si7021串口打印被打赏40分 | |
【分享评测,赢取加热台】+称远开发板PWM与串口功能分享被打赏50分 | |
【分享评测,赢取加热台】+DDR走线与差分对走线分享。被打赏50分 |