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, |