qq240997293 发表于 2023-2-15 20:06:16

RT1052在threadX环境运行时,DMA串口收数据异常

基本情况描述
1.使用RT1052芯片,在KEIL AC6环境下,下载了官方的2.12版本的SDK库;
2.启用了串口收发的DMA功能,与USB HOST MSD功能;
3.创建线程列表如下(1.串口(优先级3),2.LVGL(优先级6)3.页面逻辑控制(优先级6)4.USB枚举(优先级3)...)所有线程均为autostart
4.页面控制逻辑线程中,大概程序框架为
void entry(void)
{
    dis_open();//显示开机画面
    shakeHand();//与下位机通讯;
    load_first_page();//加载第一个显示页面
    while(1)
    {
          function();//根据当前在页面序号,获取相关数据,并及时通知LVGL刷新显示
    }
}
问题描述:
1.串口咋shakeHand()步骤中,收发均正常。但是在function()步骤中的通讯,接收到的数据是异常的,且收到的数据个数不对,如:正常包为 0x010x03 0x02 0x44 0x55 0x66 0x77,收到的包为0x01 0x03 0x02 0x01 0x00 ...
2.插着U盘上电,USB枚举线程正常挂载上U盘,程序在第一次运行至function()时,异常卡死,触发了MemManage_Handler()中断服务函数。
3.如果在load_first_page()之后,才启动USB枚举线程,程序不会卡死。

eric2013 发表于 2023-2-16 14:34:32

开DMA要注意Cache问题,注意个问题了吧

qq240997293 发表于 2023-3-3 11:23:50

eric2013 发表于 2023-2-16 14:34
开DMA要注意Cache问题,注意个问题了吧

这个注意了,收发缓存都是放在nocache去、区

qq240997293 发表于 2023-3-3 11:24:12

eric2013 发表于 2023-2-16 14:34
开DMA要注意Cache问题,注意个问题了吧

这个注意了,收发缓存都是放在nocache区

qq240997293 发表于 2023-3-3 11:25:59

eric2013 发表于 2023-2-16 14:34
开DMA要注意Cache问题,注意个问题了吧

这个注意了,收发缓存都是放在nocache区
页: [1]
查看完整版本: RT1052在threadX环境运行时,DMA串口收数据异常