S3C2440的UART
时间:11-21
来源:互联网
点击:
S3C2440 的通用异步收发器(UART)配有3个独立异步串行I/O(SIO)端口
每个 UART 包含一个波特率发生器、发送器、接收器和一个控制单元
UART 基本工作原理
内置波特率发生器,为串行数据的发送和接收提供时钟,根据这个时钟节拍,数据先写到FIFO中然后在拷贝到发送移位器中,在移位发送到引脚TxDn, 期间,发送过来的数据通过引脚RxDn进入移位器中然后拷贝到接收器的FIFO中
UART寄存器(详情见数据手册)
ULCONn(3个)
UCONn(3个)
UFCONn(3个)
UMCONn(2个)
UTRSTATn(3个)
UERSTATn(3个)
UFSTATn(3个)
UMSTATn(2个)
UTXHn(3个)
URXHn(3个)
UBRdivn(3个)
存储在波特率分频寄存器中的值(UBRdivn)是用于决定如下的串行Tx/Rx时钟率(波特率):
UBRdivn = (int)( UART时钟 / ( 波特率 × 16) ) –1
( UART时钟:PCLK,FCLK/n 或UEXTCLK )
一个例子(启动代码自己添加)
- #include"config.h"
- #definePCLK50000000
- voidUart0_Init(unsignedintbandrate)
- {
- rGPHCON&=~((3<4)|(3<6));
- rGPHCON|=(2<4)|(2<6);//GPH2--TXD[0];GPH3--RXD[0]
- rGPHUP=0x00;//使能上拉功能
- rULCON0|=0x03;//8位数据,1位停止位
- rUCON0=0x05;
- rUBRdiv0=PCLK/bandrate/16-1;
- rURXH0=0;//清空UART0接收缓冲器
- }
- voidSendchar(unsignedcharc)
- {
- rUTXH0=c;//写入UART0发送缓冲器
- while(!(rUTRSTAT0&(1<2)));//等待字符发送完
- }
- unsignedcharGetchar(void)
- {
- unsignedcharc;
- while(!(rUTRSTAT0&(1<0)));//等待接收字符
- c=rURXH0;//接收缓冲器的字符
- returnc;
- }
- intMain()
- {
- unsignedcharZ_char;
- Uart0_Init(115200);
- while(1)
- {
- Z_char=Getchar();
- Sendchar(Z_char);
- }
- return0;
- }
S3C2440UAR 相关文章:
- S3C2440的UART详解(11-26)
- S3C2440之UART操作(FIFO中断模式)(11-21)
- 最简单的s3c2440的UART功能测试(11-20)
- 最简单的S3c2440UART功能测试(11-20)
- S3C2440 UART串口驱动(11-20)
- ARM-Linux s3c2440 之UART分析(一)(11-19)