UART驱动构件的设计方法

设计UART驱动构件

UART寄存器功能

UARTX控制寄存器

UARTx控制寄存器1(设置UART的工作方式、运行模式、唤醒模式、空闲类型)

UARTx控制寄存器2(UARTx_C2)主要用于收/发及相关中断控制设置。

在设计UART驱动构件时主要用到该寄存器的3个位。分别为D5位(接收中断使能位RIE)、D3位(发射器使能位TE)和D2位(接收器使能位RE)。

D5(RIE):配合状态寄存器RDRF。

RIE=0,串口接收中断禁用,使用查询方式接收数据。

RIE=1,RDRF=1,产生串口接收中断请求。

D3(TE):TE=1,才可以使用串口UART发送器,发送发送引脚作为串口UART系统的输出。

TE=0,禁用发送器无法进行串口数据的发送。

D2(RE):RE=1,接收器使能,串口使用RX引脚接收数据。

RE=0,接收器禁用,无法通过串口接收数据。

UART0控制寄存器4(

UART0控制寄存器5(

以上两个寄存器仅在UART0模块中有定义。

状态寄存器

D7(发送数据寄存器空标志位TDRE):在复位之后或者当一个发送数据从缓冲区转移到发送移位器之后,该位被置位。如果要清TDRE位,应先进行读操作,然后写UART数据寄存器才可以完成清位。

当TDRE=0时,发送数据寄存器已满;TDRE=1,发送数据寄存器为空。

D5(数据寄存器已满标志位RDRF):当接收缓冲区满了以后,该位置位。清除RDRF,应先对该位进行读操作,然后读UART数据寄存器。

当RDRF=0时,接收数据寄存器为空;RDRF=1时,接收数据寄存器已满,该位一般与控制寄存器的RIE位搭配使用完成串口数据的读取。

波特率寄存器

进行串口数据发送时需要确定串口发送的波特率。

KL25/26的串口模块中,波特率寄存器有高位与低位,一同控制波特率生成器的分频因子。

只有当收发器都禁用的情况下,13位的波特率设置为([SBR12:SBR0])才可以被设置。

波特率设置位计算公式

当BR为1~8191时,

UART0波特率=USRT0时钟/((OSR+1)*BR)

UART1、UART2波特率=BUSCKL/(16*BR)

数据寄存器

数据寄存器实际有两个单独的8位寄存器,读操作则会返回只读接收数据寄存器中的内容,写操作会写到只写发送寄存器中。

UART驱动构件的实现

UART驱动构件存放在工程目录“05_Driver”底层驱动构件文件夹中,方便复制使用。

对串口使用的引脚进行宏定义,提高适应性。

由于单字节的校验较少使用,奇偶校验不再作为构件的基本要素。

底层驱动构件的设计

1.完成串口通信的管理打通

    选择一个确定的串口、确定的硬件引脚、确定的波特率。如9699、8位数据、无校验,完成串口初始化。 完成循环发送单个字符。如2及16进制0x32 利用PC机串口调试工具设置相同的波特率及各格式。 运行观察,直到有字符2出现说明原理打通。

2.基本关键函数的设计

    串口基本构件的关键函数是初始化、发送一个字节、接收一个字节。 先基本实现再逐步增加宏条件,基本保护等完善的功能。随后再完成其他函数的设计实现。
经验分享 程序员 微信小程序 职场和发展