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.基本关键函数的设计
-
串口基本构件的关键函数是初始化、发送一个字节、接收一个字节。 先基本实现再逐步增加宏条件,基本保护等完善的功能。随后再完成其他函数的设计实现。
