ADSP-BF533 串口通信学习(原创)
0赞今天继续学习ADSP-BF533的串口通信,UART(Universal Asynchronous Receiver/Transmitter (UART) port)接口,是全双工通用的串行接口,由RX 和TX 两根线组成,扩展RS232 芯片可以直接和计算机串口通讯,通常作为调试用的命令和数据通讯接口。
ADSP-BF533的串口作为一种异步串行通信,可以通过相关寄存器进行以下的配置:
1. 5-8位数据位;
2. 1, 1½,或者2位停止位;
3. 奇、偶校验或者不要检验;
串口通信的波特率可以通过以下公式计算得出:
Baud rate = SCLK/(16 *Divisor)
其中的SCLK是系统时钟频率,Divisor值的范围为1-65536.
通过串口传输的数据至少需要一个起始位和至少一个停止位,再回可有可无的校验位,每一个数据的长度大概为7-12位。传输的数据帧的格式由UART_LCR寄存器进行控制,通常是从数据的最低位LSB开始发送和接收,如下图所示:

跟学习单片机一样,在使用ADSP-BF533的串口功能之前,我们还是先了解和其相关的各个寄存器的功能以及用法。如下为各个寄存器介绍:
1. UART_LCR寄存器:该寄存器为线路控制寄存器,主要用于控制传输的数据帧的格式。包括数据位的长度,停止位的长度,校验位的设置等等,寄存器的具体描述如下图所示:

2. UART_LSR寄存器:该寄存器为线路状态寄存器,用于获取串口通信过程中的各个标志位的状态,具体的描述如下图,其中最常用的是第5位THRE和第1位DR,第5位用于判断数据寄存器THR是否为空的,如果该位为1则表示数据已经发送出去了。第1位用于判断UART接收缓存寄存器是否已经接收到新的数据,如果为1表示数据已经接收完成了。其他位还可以判断例如帧错误、校验码错误等状态。

3. UART_THR寄存器和UART_RBR寄存器分别为传输数据寄存器和接收缓存寄存器,UART_THR用于串口发送时的数据存放,UART_RBR用于串口接收时数据接收。
4. UART_IER寄存器:该寄存器为串口中断使能寄存器,寄存器的具体描述如下图所示,第0位和第1位分别用于使能串口的接收中断使能和发送中断使能。

5. UART_GCTL寄存器:该寄存器为串口全局控制寄存器,寄存器的具体描述如下图所示,第0位和第3位用得比较多,第0位用于使能内部的串口时钟,第3位则用于控制串口通信接口在空闲时的高低状态。

6. UART_DLL寄存器和UART_DLH寄存器:这两个寄存器非常重要,用于设置串口通信的波特率,计算公式如下:
Baud rate = SCLK/(16 *Divisor),Divisor即为DL的值,而DL=UART_DLH<<8|UART_DLL。
下面给出一个官方软件上给出的计算好的波特率表,系统时钟为100MHZ:

根据上表的数据,我们也可以来验证一下计算公式,以最后一个为例,系统时钟为100MHZ,波特率为6250000,根据公式DL=100000000/(16*625000)=1,可知该公式正确。
