一、前言
上一篇讲述了OSAL中的按键处理流程,本节再来分析一下OSAL中的UART是如何实现收发的。
在OSAL中串行通信包括USB、SPI、UART三种方式,它们被抽象出共同的NPI接口层,下面以UART通信为例,分析其收发流程。
二、UART流程分析
在本例中UART发送通道结合DMA和UART ISR进行数据发送,接收通道则以轮询的方式接收。下图是UART的收发流程的时序图。
其中:
dmaCfg.uartCB是NPI接收数据回调处理函数,在NPI_InitTransport初始化时注册。
下面具体看看整个流程中的每个层间是的信息流是如何传递的,分别完成了什么动作。
1、初始化
在HalDmaInit()主要完成DMA通道地址初始化并打开DMA中断使能。
以下是HalUARTInit()的主要代码片段: