




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
S3C44B0的UART接口功能及應用開發(fā)UART概述UART(UniversalAsynchronousReceiver/Transmitter)通用異步收發(fā)器提供兩個獨立的UART;皆可工作于中斷和DMA模式,即UART可以通過產(chǎn)生中斷或DMA請求來完成CPU和UART間的數(shù)據(jù)傳輸;最高波特率達115.2Kbps;每一個UART單元包含一個16字節(jié)的FIFO,用于數(shù)據(jù)的接收和發(fā)送,其次還包含一個波特率發(fā)生器,接收器,發(fā)送器和控制單元。提供兩個串口DB9。其中UART1為主串口,可與PC或MODOM進行串行通迅。采用MAX3243E作為電平轉(zhuǎn)換器UART0只采用二根接線RXD和TXD,因此只能進行簡單的數(shù)據(jù)傳輸及接收功能。UART0采用MAX3221E作為電平轉(zhuǎn)換器。UART概述工作過程串口在電氣連接上有3wire和9wireUART程序設計串口初始化數(shù)據(jù)發(fā)送和接收數(shù)據(jù)UART的操作數(shù)據(jù)發(fā)送數(shù)據(jù)接收自動流控制AFC(AutoFlowControl)非自動流控制波特率的產(chǎn)生回環(huán)(Loop-back)模式數(shù)據(jù)發(fā)送與接收工作過程數(shù)據(jù)幀格式:可編程,它包含1個開始位,5到8個數(shù)據(jù)位,一個可選奇偶位和1到2個的停止位,具體由行控制寄存器(ULCONn)來定義。接收狀態(tài):溢出錯誤表明新的數(shù)據(jù)在舊數(shù)據(jù)沒有被讀取的情況下,覆蓋了舊的數(shù)據(jù)。奇偶錯誤表明接收器發(fā)現(xiàn)一個不希望出現(xiàn)的奇偶錯誤。幀錯誤表明接收到的數(shù)據(jù)沒有一個有效的停止位。斷點條件表明接收器收到的輸入保持了大于傳輸一幀數(shù)據(jù)時間的邏輯0狀態(tài)。UART的行控制寄存器UART行控制寄存器ULCON0 地址:0x01D00000 R/W 初始值0x00UART0的行控制寄存器ULCON1 地址:0x01D04000 R/W 初始值0x00UART1的行控制寄存器位位名稱描述[7]保留[6]Infra-RedMode該位確定是否使用紅外模式0=普通操作模式
1=紅外發(fā)送/接收模式[5:3]ParityMode該位確定奇偶如何產(chǎn)生和校驗0xx=無
100=奇校驗101=偶校驗
110=強制為1111=強制為0[2]Stopbit該位確定停止位的個數(shù)0=每幀一位停止位
1=每幀兩位停止位[1:0]Wordlength該位確定數(shù)據(jù)位的個數(shù)00=5位
01=6位
10=7位
11=8位自動流控制AFCnRTS:發(fā)送請求信號nCTS:清除發(fā)送信號nCTS信號有效表示對方UART的接收FIFO已準備好,nRTS信號有效表示自己的接收器FIFO已經(jīng)準備好;CTS信號控制發(fā)送器的操作,接收器的狀態(tài)影響RTS信號非自動流控制主要用于與modem連接時使用UART控制寄存器UCON0 UART0控制寄存器
地址:0x01D00004 R/W 始值0x00UCON1 UART1控制寄存器地址:0x01D04004 R/W 初始值0x00位位名稱描述[9]Txinterrupttype發(fā)送中斷請求類型0=脈沖
1=電平[8]Rxinterrupttype接收中斷請求類型0=脈沖
1=電平[7]Rxtimeoutenable允許/不允許Rx超時中斷0=不允許
1=允許[6]interruptenable允許/不允許產(chǎn)生UART錯誤中斷0=不允許
1=允許[5]Loop-backMode該位為1使UART進入回環(huán)模式(loopback)模式0=普通運行
1=回環(huán)模式(loopback)[4]SendBreakSignal該位為1使UART發(fā)送一個暫停條件,該位在發(fā)送一個暫停信號后自動清除0=正常傳送
1=發(fā)送暫停條件[3:2]TransmitMode這兩位確定哪個模式可以寫TX數(shù)據(jù)到UART發(fā)送保持寄存器00=禁止(Disable)01=中斷請求或
polling模式10=BDMA0請求(僅用于UART0)11=BDMA1請求(僅用于UART1)[1:0]ReceiveMode這兩位確定哪個模式可以從UART接收緩沖寄存器讀數(shù)據(jù)00=禁止(Disable)
01=中斷請求或
polling模式10=BDMA0請求(僅用于UART0)11=BDMA1請求(僅用于UART1)波特率的產(chǎn)生UART傳輸?shù)臅r鐘:由內(nèi)部系統(tǒng)時鐘經(jīng)16位分頻器分頻后產(chǎn)生。UART波特率分頻寄存器
UBRDIV0UART波特率分頻寄存器UBRDIV0UART0波特率分頻寄存器地址:0x01D00028 R/W
UBRDIV1UART1波特率分頻寄存器
地址:0x01D04028 R/W
波特率的產(chǎn)生UBRDIVn=(round_off)(MCLK/(bps×16))–1例如:如果波特率為115200bps,而MCLK為40MHz,則:UBRDIVn=(int)(40000000/(115200*16)+0.5)-1=(int)(21.7+0.5)-1=22-1=21round_off四舍五入UARTFIFO控制寄存器UFCON0 UART0FIFO控制寄存器地址:0x01D00008 R/W 初始值0x00UFCON1 UART1FIFO控制寄存器地址:0x01D04008 R/W 初始值0x00位位名稱描述[7:6]TxFIFOTriggerLevel這兩位確定發(fā)送FIFO的觸發(fā)條件00=空
01=4-byte10=8-byte 11=12-byte[5:4]RxFIFOTriggerLevel這兩位確定接收FIFO的觸發(fā)條件00=4-byte 01=8-byte10=12-byte 11=16-byte[3]保留[2]TxFIFOResetTXFIFO復位位,該位在FIFO復位后自動清除0=正常
1=TxFIFO復位[1]RxFIFOResetRxFIFO復位位該位在FIFO復位后自動清除0=正常
1=RxFIFO復位[0]FIFOEnable0=FIFO禁止
1=FIFO模式初始化voidUart_Init(int
mclk,intbaud){
inti;
mclk=MCLK;rUFCON0=0x0; //禁止FIFO
rUMCON0=0x0;
//禁止AFC
rULCON0=0x3; //普通模式,無奇偶校驗,1個停止位,8位數(shù)據(jù)位
rUCON0=0x245;//rx為邊沿觸發(fā)、tx為電平觸發(fā)、
//禁止超時中斷、產(chǎn)生接受錯誤中斷、
//普通傳送、發(fā)送與接受為輪循模式
rUBRDIV0=((int)(mclk/16./baud+0.5)-1);
for(i=0;i<100;i++);//延時作用}UART發(fā)送保持寄存器UTXH0/1 UTXH0 UART0發(fā)送緩沖寄存器
地址:0x01D00020(小端模式) 0x01D00023(大端模式)UTXH1 UART1發(fā)送緩沖寄存器地址:0x01D04020(小端模式) 0x01D04023(大端模式)
UART接收保持寄存器UART接收緩沖寄存器和FIFO寄存器URXH0 UART0接收緩沖寄存器地址:0x01D00024(小端模式) 0x01D00027(大端模式)URXH1 UART1接收緩沖寄存器地址:0x01D04024(小端模式) 0x01D04027(大端模式)UARTTx/Rx狀態(tài)寄存器UTRSTAT0
UART0TX/RX狀態(tài)寄存器地址:0x01D00010
R
初始值0x6 UTRSTAT1
UART1TX/RX狀態(tài)寄存器
地址:0x01D04010
R
初始值0x6 位位名稱描述[2]TransmitshifterEmpty該位在發(fā)送移位寄存器沒有有效的數(shù)據(jù)或發(fā)送移位寄存器為空時為10=發(fā)送移位寄存器不空
1=發(fā)送移位寄存器空[1]TransmitbufferEmpty該位在發(fā)送緩沖寄存器沒有包含有效的數(shù)據(jù)為1。如果UART使用FIFO,用戶應當檢查UFSTAT寄存器的TxFIFO計數(shù)位和TxFIFO滿標志位代替檢查該位。
0=不空
1=空[0]Receivebufferdataready無論何時接收緩沖寄存器包含有效數(shù)據(jù),該位為1,如果UART使用FIFO,用戶應當檢查UFSTAT寄存器的RxFIFO計數(shù)位代替檢查該位。0=空
1=接收緩沖寄存器中有接收數(shù)據(jù)發(fā)送字符voidUart_SendByte(intdata){
if(data=='\n') {
while(!(rUTRSTAT0&0x2));//一直等到THR為空
Delay(10);//因為超級終端的響應慢
WrUTXH0('\r'); }
while(!(rUTRSTAT0&0x2));//一直等到THR為空
Delay(10);
WrUTXH0(data);//將數(shù)據(jù)寫入發(fā)送保存寄存器中}
#defineWrUTXH0(ch)(*(volatileunsignedchar*)0x1d00020)=(unsignedchar)(ch)發(fā)送字符串voidUart_SendString(char*pt){while(*pt)
Uart_SendByte(*pt++);}
接收字符charUart_Getch(void){
while(!(rUTRSTAT0&0x1));//Receivedataread returnRdURXH0();
//返回接收保持寄存器的內(nèi)容}#defineRdURXH0() (*(volatileunsignedchar*)0x1d00024)voidMain(void){ charinput_char; /*userinputchar*/
inti;charpt_str[10]={0,0,0,0,0,0,0,0,0,0};
sys_Init(); Uart_Init(0,115200);for(i=0;i<10;i++){
pt_str[i]=Uart_Getch();//接收到一個字符
Uart_SendByte(pt_str[i]);//發(fā)送剛才收到的字符
}
Uart_SendString(*pt_str);//發(fā)送整串字符}超級終端的配置打開超級終端:開始/程序/附件/通信/超級終端配置:
115200波特率,8位數(shù)據(jù)位,無奇偶檢驗,1位停止位,無硬件流控制。
格式化輸出函數(shù)Uart_Printf(“pleaseinput:\n“);voidUart_Printf(char*fmt,...){
va_list
ap;charstring[256];
va_start(ap,fmt);
vsprintf(string,fmt,ap);
Uart_SendString(string);
va_end(ap);}函數(shù)申明:
int
vsprintf(char*buf,constchar
*format,
va_list
arglist);
函數(shù)用途:
該函數(shù)作用同sprintf函數(shù),向變量輸出格式化字符串。區(qū)別是參數(shù)表由一個va_list類型的指針代替
頭文件:
stdio.h
stdarg.h
輸入?yún)?shù):
format:參數(shù)格式說明,具體參見printf函數(shù)
arglist:參數(shù)列表指針,類型va_list是一個void類型的指針(見stdarg.h),即等價于:
int
vsprintf(char
*buf,
const
char
*format,
void
*arglist)
輸出參數(shù):
buf:要寫入的緩沖區(qū)
實時時鐘RTC功能:日歷/時鐘及數(shù)據(jù)存儲功能定時功能特點:
RTC可在斷電后繼續(xù)使用
8位BCD數(shù)據(jù),秒\分\時\日\月\年
硬件支持閏年產(chǎn)生器操作:讀/寫RTC模塊中的寄存器,讀取并設置產(chǎn)生滴答時鐘中斷。
RTC功能框圖
時鐘源由外部32.768KHz晶振提供操作:
1.讀取并設置當前的時間,讀/寫RTC模塊中的寄存器,
2.產(chǎn)生滴答時鐘中斷。寄存器寄存器名稱功能RTCCONRTC控制寄存器用于控制BCD寄存器的讀/寫使能
BCDSECBCD秒寄存器用于存放秒的BCD值BCDMINBCD分鐘寄存器用于存放月的BCD值BCDHOURBCD小時寄存器用于存放小時的BCD值BCDDAYBCD日寄存器用于存放日的BCD值BCDDATEBCD星期寄存器用于存放星期的BCD值BCDMONBCD月寄存器用于存放月的BCD值BCDYEARBCD年寄存器用于存放年的BCD值TICNTTICKTIME計數(shù)寄存器用于確定是否允許時間滴答中斷和時間中斷的計數(shù)值。RTC控制寄存器RTCCON地址:0x01D70040(小端) R/W(字節(jié))初始值:0x0位位名稱描述[3]CLKRSTRTC時鐘計數(shù)復位:0=不復位
1=復位[2]CNTSELBCD計數(shù)器選擇:0=組合的BCD計數(shù)器
1=保留(分離的BCD計數(shù)器)[1]CLKSELBCD計數(shù)器時鐘選擇0=XTAL1/215dividedclock1=保留(XTALclockonlyfortest)[0]RTCENRTC讀寫允許:
0=禁止
1=允許如果RTC讀寫允許,STOP電流將大大增大,為了減少STOP電流,當不存取RTC時,設置該位為0,雖然為0,但RTC時鐘仍運行。1.讀取并設置當前的時間讀取當前時間訪問RTC模塊的寄存器,首先要設RTCCON的bit0為1。CPU通過讀取RTC模塊中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR的值,得到當前的相應時間值。但是,在RTC模塊中,由于多個寄存器在讀,可能會產(chǎn)生1s的偏差。例如:當用戶從BCDYEAR到BCDMIN讀寄存器時,結果假定是1959年12月31日23時59分,當用戶讀BCDSEC寄存器并且結果是從1到59,這沒問題,但如果結果是0秒,則年月日時分秒可能變?yōu)?960年1月1日0時0秒,因為存在1秒偏差。所以這時,若BCDSEC是0,用戶應該從BCDYEAR向BCDSEC重新讀取數(shù)據(jù)。voidRead_Rtc(void){
Uart_Printf(“youcanreadRTCValue");
rRTCCON=0x01;//R/Wenable,1/32768,Normal(merge),Noresetwhile(1){
if(rBCDYEAR==0x99) year=0x1999; else year=0x2000+rBCDYEAR; month=rBCDMON; day=rBCDDAY; weekday=rBCDDATE; hour=rBCDHOUR; min=rBCDMIN; sec=rBCDSEC;
if(sec!=0) break;}
rRTCCON=0x0;//R/Wdisable(forpowerconsumption)}rtc.h文件#defineTESTYEAR (0x02)#defineTESTMONTH (0x12)#defineTESTDAY (0x31)#defineTESTDATE(0x03)#defineTESTHOUR (0x23)#defineTESTMIN (0x59)#defineTESTSEC (0x59)#include"rtc.h“voidRtc_Init(void){
rRTCCON=0x01; //R/Wenable,1/32768,Normal(merge),Noreset
rBCDYEAR=TESTYEAR;
rBCDMON=TESTMONTH;
rBCDDAY=TESTDAY; //SUN:1MON:2TUE:3WED:4THU:5FRI:6SAT:7
rBCDDATE=TESTDATE;
rBCDHOUR=TESTHOUR;
rBCDMIN=TESTMIN;
rBCDSEC=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園獲獎公開課:中班數(shù)學《小刺猬的項鏈》第二版微課件
- 硬脂酰氯企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 智能照明結合營造氛圍行業(yè)跨境出海戰(zhàn)略研究報告
- 軟體沙發(fā)企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報告
- 皮革制品企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 便攜式收錄放設備家電專門零售企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 殘疾人輔助機器人行業(yè)跨境出海戰(zhàn)略研究報告
- 絹絲及交織機織物企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 骨髓食品企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 客戶來訪安全須知
- 《中國缺血性卒中和短暫性腦缺血發(fā)作二級預防指南2022》解讀
- 2024年西安電力高等??茖W校高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 袁家村招商策劃方案
- 天龍八部礦石分布圖
- 光伏電站運維安全培訓內(nèi)容
- 丹尼斯人事規(guī)章(10年基層)崗前培訓
- GB/T 5750.2-2023生活飲用水標準檢驗方法第2部分:水樣的采集與保存
- 《非暴力溝通》分享
- 企業(yè)人力資源管理師(三級)人力資源管理師考試題庫及答案
- 班主任基本功大賽模擬情景答辯主題(含解析)
- 護理文書書寫規(guī)范PDCA
評論
0/150
提交評論