TQ2440 学习笔记—— 23、通用异步收发器 UART
2019-07-13 00:12发布
生成海报
(韦东山——嵌入式Linux 应用开发完全手册)
通用异步收发器 UART
UART(Universal
Asynchronous Receiver/Transmitter,通用异步接收/发送装置)用于异步通信,可以实现全双工发送和接收。最精简的连线方法只有三根电线:TxD 用于发送数据,RxD 用于接收数据,Gnd
用于给双方提供参考电平。
UART 使用的标准的TTL/CMOS 逻辑电平(0 - 5V、0 - 3.3V 等)来表示数据,高电平表示1,低电平表示0.为了增强数据的抗干扰能力、提高传输长度,通常是将TTL/CMOS
逻辑电平 转换为 RS-232 逻辑电平, 3 ~ 12V 表示0,-3 ~ -12V 表示1。
PC 使用串口:
1、确定用哪个串口
2、波特率、流控的选择、数据位、校验位、停止位
3、打开
4、发送接收
/*
* 初始化UART0
* 115200,8N1,无流控
*/
void uart0_init(void)
{
GPHCON |= 0xa0; // GPH2,GPH3用作TXD0,RXD0
GPHUP = 0x0c; // GPH2,GPH3内部上拉
ULCON0 = 0x03; // 8N1(8个数据位,无较验,1个停止位)
UCON0 = 0x05; // 查询方式,UART时钟源为PCLK
UFCON0 = 0x00; // 不使用FIFO
UMCON0 = 0x00; // 不使用流控
UBRDIV0 = UART_BRD; // 波特率为115200
}
用到的寄存器:
GPHCON :端口配置引脚寄存器
GPHUP:使能上拉禁止寄存器
ULCON0:线路控制寄存器
UCON0:通道控制寄存器
UTRSTAT0:发送/接收状态寄存器
UBRDIV0:波特率分频寄存器
UTXTH0:通道0发送缓冲寄存器
URXTH0:通道0接收缓冲寄存器
发送字符的函数:
/*
* 发送一个字符
*/
void putc(unsigned char c)
{
/* 等待,直到发送缓冲区中的数据已经全部发送出去 */
while (!(UTRSTAT0 & TXD0READY));
/* 向UTXH0寄存器中写入数据,UART即自动将它发送出去 */
UTXH0 = c;
}
/*
* 接收字符
*/
unsigned char getc(void)
{
/* 等待,直到接收缓冲区中的有数据 */
while (!(UTRSTAT0 & RXD0READY));
/* 直接读取URXH0寄存器,即可获得接收到的数据 */
return URXH0;
}
测试结果:
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮