OM6621X-串口DMA应用笔记

Curry · 377次点击 · 10个月前

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;

1686820562037.png

2.需要注意的事项:

1)dma uart接收的长度是固定的,需要接收到设定的数据,才会产生中断,中间可以间隔;这个地方后续会详细说明--

     如何增加DMA接收超时;

2)每次接收数据的时候需要重新初始化步骤流程,因掉为休眠的时候,外设会被关;

3)如果接收完成,不需要接收下一帧数据,需要关闭DMAUART,否则会有总线数据干扰;导致下一帧数据的前面几

  个字节出错。

4)如果只是使用dma接收固定数据长度的数据,可以不需要修改lib,直接把提供的参考代码添加到工程即可:

1686823052734.png


3.如何增加DMA接收超时;

1)硬件串口有一个字符超时指示器,但是在标准的SDK并没有处理这个超时中断。

image.png

image.png

2)软件实现,还需要修改uart.c源文件;

image.png

3)使用源文件,需要屏蔽lib文件的定义:

image.png



4)打开串口的时候,添加超时中断函数即可。

1686823684317.png



-------详细的请见参考代码,uart_dma.c, uart _dma.h,

uart_dma-202306156515.rar
被收藏 0  ∙  0 赞  
加入收藏
点赞
8 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站