文章目录
实验目的
S3C2440共有三个UART,分别是UART0
、UART1
、UART2
,本文使用最常用的UART0
实现JZ2440与PC机的串口通信。并利用串口实现putchar()
、getchar()
和puts()
函数。
UART的时钟框图
时钟框图如下:
初始化UART0
引脚设置
在I/O Ports
那一章,表格S3C2440A Port Configuration
说明了每个引脚可用的功能。UART通信只需要发送和接收因引脚。找到RXD0
和TXD0
可以看到GPH3
用于RXD0
,而GPH2
用于TXD0
。
于是我们直到要去配置GPH2
和GPH3
。
编写以下代码:
/*初始化引脚TXD0-GPH2,RXD0-GPH3*/
GPHCON &= ~((3 << 6) | (3 << 4));
GPHCON |= ((2 << 6) | (2 << 4));
根据UART的通信协议,在没有数据传输时,将TXD和RXD的电平拉高。当有数据传输时,发送方会把TXD拉低,然后等待1.5个时钟周期后,接接收方开始读取数据。S3C2440中GPxUP
用于端口的上拉。