OM6621X-串口DMA应用:
1.启动UART DMA有以下5个步骤:
1)step1:注册DMA接收中断回调函数-uart_rx_done_evt_handler;
2)step2:初始化-dma_init;
3)step3:DMA串口配置-uart_dma_config;
4)step4:DMA串口使能-uart1_enable;
5)step5:DMA串口启动接收-dma_start;
2.需要注意的事项:
1)dma uart接收的长度是固定的,需要接收到设定的数据,才会产生中断,中间可以间隔;这个地方后续会详细说明--
如何增加DMA接收超时;
2)每次接收数据的时候需要重新初始化步骤流程,因掉为休眠的时候,外设会被关;
3)如果接收完成,不需要接收下一帧数据,需要关闭DMA和UART,否则会有总线数据干扰;导致下一帧数据的前面几
个字节出错。
4)如果只是使用dma接收固定数据长度的数据,可以不需要修改lib,直接把提供的参考代码添加到工程即可:
3.如何增加DMA接收超时;
1)硬件串口有一个字符超时指示器,但是在标准的SDK并没有处理这个超时中断。
2)软件实现,还需要修改uart.c源文件;
3)使用源文件,需要屏蔽lib文件的定义:
4)打开串口的时候,添加超时中断函数即可。
-------详细的请见参考代码,uart_dma.c, uart _dma.h,
uart_dma-202306156515.rar