S3C2440的UART
每個(gè) UART 包含一個(gè)波特率發(fā)生器、發(fā)送器、接收器和一個(gè)控制單元
本文引用地址:http://www.ex-cimer.com/article/201611/319199.htmUART 基本工作原理
內(nèi)置波特率發(fā)生器,為串行數(shù)據(jù)的發(fā)送和接收提供時(shí)鐘,根據(jù)這個(gè)時(shí)鐘節(jié)拍,數(shù)據(jù)先寫(xiě)到FIFO中然后在拷貝到發(fā)送移位器中,在移位發(fā)送到引腳TxDn, 期間,發(fā)送過(guò)來(lái)的數(shù)據(jù)通過(guò)引腳RxDn進(jìn)入移位器中然后拷貝到接收器的FIFO中
UART寄存器(詳情見(jiàn)數(shù)據(jù)手冊(cè))
ULCONn(3個(gè))
UCONn(3個(gè))
UFCONn(3個(gè))
UMCONn(2個(gè))
UTRSTATn(3個(gè))
UERSTATn(3個(gè))
UFSTATn(3個(gè))
UMSTATn(2個(gè))
UTXHn(3個(gè))
URXHn(3個(gè))
UBRDIVn(3個(gè))
存儲(chǔ)在波特率分頻寄存器中的值(UBRDIVn)是用于決定如下的串行Tx/Rx時(shí)鐘率(波特率):
UBRDIVn = (int)( UART時(shí)鐘 / ( 波特率 × 16) ) –1
( UART時(shí)鐘:PCLK,F(xiàn)CLK/n 或UEXTCLK )
一個(gè)例子(啟動(dòng)代碼自己添加)
- #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位數(shù)據(jù),1位停止位
- rUCON0=0x05;
- rUBRDIV0=PCLK/bandrate/16-1;
- rURXH0=0;//清空UART0接收緩沖器
- }
- voidSendchar(unsignedcharc)
- {
- rUTXH0=c;//寫(xiě)入U(xiǎn)ART0發(fā)送緩沖器
- while(!(rUTRSTAT0&(1<<2)));//等待字符發(fā)送完
- }
- 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;
- }
評(píng)論