版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、S3C44B0的UART接口功能及應(yīng)用開發(fā)UART概述 nUART(Universal Asynchronous Receiver/Transmitter) 通用異步收發(fā)器n提供兩個(gè)獨(dú)立的UART;n皆可工作于中斷和DMA模式,即UART可以通過(guò)產(chǎn)生中斷或DMA請(qǐng)求來(lái)完成CPU和UART間的數(shù)據(jù)傳輸 ;n最高波特率達(dá)115.2Kbps;n每一個(gè)UART單元包含一個(gè)16字節(jié)的FIFO,用于數(shù)據(jù)的接收和發(fā)送,其次還包含一個(gè)波特率發(fā)生器,接收器,發(fā)送器和控制單元。 n提供兩個(gè)串口DB9。其中UART1為主串口,可與PC或MODOM進(jìn)行串行通迅。采用MAX3243E作為電平轉(zhuǎn)換器UART0只采用二根接
2、線RXD和TXD,因此只能進(jìn)行簡(jiǎn)單的數(shù)據(jù)傳輸及接收功能。UART0采用MAX3221E作為電平轉(zhuǎn)換器。 UART概述 工作過(guò)程工作過(guò)程串口在電氣連接上有3wire和9wire UART程序設(shè)計(jì) n串口初始化 n數(shù)據(jù)發(fā)送和接收數(shù)據(jù) UART的操作 n數(shù)據(jù)發(fā)送 n數(shù)據(jù)接收 n自動(dòng)流控制AFC( Auto Flow Control)n非自動(dòng)流控制 n波特率的產(chǎn)生n回環(huán)(Loop-back)模式 數(shù)據(jù)發(fā)送與接收 n工作過(guò)程n數(shù)據(jù)幀格式:可編程,它包含1個(gè)開始位,5到8個(gè)數(shù)據(jù)位,一個(gè)可選奇偶位和1到2個(gè)的停止位,具體由行控制寄存器(ULCONn)來(lái)定義。 n接收狀態(tài):q溢出錯(cuò)誤表明新的數(shù)據(jù)在舊數(shù)據(jù)沒有被
3、讀取的情況下,覆蓋了舊的數(shù)據(jù)。q奇偶錯(cuò)誤表明接收器發(fā)現(xiàn)一個(gè)不希望出現(xiàn)的奇偶錯(cuò)誤。q幀錯(cuò)誤 表明接收到的數(shù)據(jù)沒有一個(gè)有效的停止位。q斷點(diǎn)條件表明接收器收到的輸入保持了大于傳輸一幀數(shù)據(jù)時(shí)間的邏輯0狀態(tài)。UART的行控制寄存器UART行控制寄存器ULCON0地址:0 x01D00000R/W初始值0 x00UART0的行控制寄存器ULCON1地址:0 x01D04000R/W初始值0 x00UART1的行控制寄存器位位名稱描述7保留6Infra-Red Mode該位確定是否使用紅外模式0普通操作模式1紅外發(fā)送/接收模式5:3Parity Mode該位確定奇偶如何產(chǎn)生和校驗(yàn)0 xx無(wú)100奇校驗(yàn)101
4、偶校驗(yàn)110強(qiáng)制為1111強(qiáng)制為02Stop bit該位確定停止位的個(gè)數(shù)0每幀一位停止位1每幀兩位停止位1:0Word length該位確定數(shù)據(jù)位的個(gè)數(shù)005位016位107位118位自動(dòng)流控制AFCnRTS:發(fā)送請(qǐng)求信號(hào) nCTS:清除發(fā)送信號(hào)nCTS信號(hào)有效表示對(duì)方UART的接收FIFO已準(zhǔn)備好,nRTS信號(hào)有效表示自己的接收器FIFO已經(jīng)準(zhǔn)備好;CTS信號(hào)控制發(fā)送器的操作,接收器的狀態(tài)影響RTS信號(hào)非自動(dòng)流控制主要用于與modem連接時(shí)使用UART控制寄存器UCON0UART0控制寄存器地址:0 x01D00004R/W始值0 x00 UCON1UART1控制寄存器地址:0 x01D04
5、004R/W初始值0 x00位位名稱描述9Tx interrupt type發(fā)送中斷請(qǐng)求類型0脈沖1電平8Rx interrupt type接收中斷請(qǐng)求類型0脈沖1電平7Rx time out enable允許/不允許Rx超時(shí)中斷0不允許 1允許6interrupt enable允許/不允許產(chǎn)生UART錯(cuò)誤中斷0不允許 1允許5Loop-back Mode該位為1使UART進(jìn)入回環(huán)模式(loop back)模式0普通運(yùn)行1回環(huán)模式(loop back)4Send Break Signal該位為1使UART發(fā)送一個(gè)暫停條件,該位在發(fā)送一個(gè)暫停信號(hào)后自動(dòng)清除0正常傳送1發(fā)送暫停條件3:2Trans
6、mit Mode這兩位確定哪個(gè)模式可以寫TX數(shù)據(jù)到UART發(fā)送保持寄存器00禁止(Disable)01中斷請(qǐng)求或 polling 模式10BDMA0請(qǐng)求(僅用于UART0)11BDMA1請(qǐng)求(僅用于UART1)1:0Receive Mode這兩位確定哪個(gè)模式可以從UART接收緩沖寄存器讀數(shù)據(jù)00禁止(Disable)01中斷請(qǐng)求或 polling 模式10BDMA0請(qǐng)求(僅用于UART0)11BDMA1請(qǐng)求(僅用于UART1)波特率的產(chǎn)生UART傳輸?shù)臅r(shí)鐘:由內(nèi)部系統(tǒng)時(shí)鐘經(jīng)16位分頻器分頻后產(chǎn)生。UART波特率分頻寄存器波特率分頻寄存器 UBRDIV0UART 波特率分頻寄存器UBRDIV0
7、UART0波特率分頻寄存器 地址:0 x01D00028R/WUBRDIV1UART1波特率分頻寄存器 地址:0 x01D04028 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=21 round_off四舍五入U(xiǎn)ART FIFO控制寄存器UFCON0UART0 FIFO控制寄存器地址:0 x01D00008 R/W初始值0 x00 UFCON1UAR
8、T1 FIFO控制寄存器地址:0 x01D04008 R/W初始值0 x00 位位名稱描述7:6Tx FIFO Trigger Level這兩位確定發(fā)送FIFO的觸發(fā)條件00空014-byte 108-byte 1112-byte5:4Rx FIFO TriggerLevel這兩位確定接收FIFO的觸發(fā)條件004-byte018-byte1012-byte1116-byte3保留2Tx FIFO ResetTX FIFO復(fù)位位,該位在FIFO復(fù)位后自動(dòng)清除0正常1Tx FIFO復(fù)位1Rx FIFO ResetRx FIFO復(fù)位位該位在FIFO復(fù)位后自動(dòng)清除0正常1Rx FIFO復(fù)位0FIFO
9、Enable0FIFO禁止1FIFO模式初始化void Uart_Init(int mclk,int baud) int i; mclk=MCLK; rUFCON0=0 x0;/禁止FIFO rUMCON0=0 x0; /禁止AFC rULCON0=0 x3; /普通模式,無(wú)奇偶校驗(yàn),1個(gè)停止位,8位數(shù)據(jù)位 rUCON0=0 x245; /rx為邊沿觸發(fā)、tx為電平觸發(fā)、 /禁止超時(shí)中斷、產(chǎn)生接受錯(cuò)誤中斷、 /普通傳送、發(fā)送與接受為輪循模式 rUBRDIV0=( (int)(mclk/16./baud + 0.5) -1 ); for(i=0;i100;i+); /延時(shí)作用UART發(fā)送保持寄存
10、器UTXH0/1UTXH0 UART0發(fā)送緩沖寄存器地址:0 x01D00020(小端模式)0 x01D00023(大端模式)UTXH1 UART1發(fā)送緩沖寄存器地址:0 x01D04020(小端模式)0 x01D04023(大端模式)UART 接收保持寄存器UART 接收緩沖寄存器和FIFO寄存器URXH0 UART0接收緩沖寄存器地址:0 x01D00024(小端模式)0 x01D00027(大端模式)URXH1 UART1接收緩沖寄存器地址:0 x01D04024(小端模式)0 x01D04027(大端模式)UART Tx/Rx狀態(tài)寄存器UTRSTAT0 UART0 TX/RX狀態(tài)寄存器
11、地址:0 x01D00010R初始值0 x6 UTRSTAT1 UART1 TX/RX狀態(tài)寄存器地址:0 x01D04010R 初始值0 x6 位位名稱描述2Transmit shifter Empty該位在發(fā)送移位寄存器沒有有效的數(shù)據(jù)或發(fā)送移位寄存器為空時(shí)為10發(fā)送移位寄存器不空 1發(fā)送移位寄存器空1Transmit buffer Empty該位在發(fā)送緩沖寄存器沒有包含有效的數(shù)據(jù)為1。如果UART使用FIFO,用戶應(yīng)當(dāng)檢查UFSTAT寄存器的Tx FIFO計(jì)數(shù)位和Tx FIFO滿標(biāo)志位代替檢查該位。0不空1空0Receive buffer data ready無(wú)論何時(shí)接收緩沖寄存器包含有效數(shù)
12、據(jù),該位為1,如果UART使用FIFO,用戶應(yīng)當(dāng)檢查UFSTAT寄存器的Rx FIFO計(jì)數(shù)位代替檢查該位。0空1接收緩沖寄存器中有接收數(shù)據(jù)發(fā)送字符void Uart_SendByte (int data)if(data=n) while(!(rUTRSTAT0 & 0 x2); /一直等到一直等到THR為空為空Delay(10); /因?yàn)槌?jí)終端的響應(yīng)慢因?yàn)槌?jí)終端的響應(yīng)慢WrUTXH0(r);while(!(rUTRSTAT0 & 0 x2); /一直等到一直等到THR為空為空Delay(10);WrUTXH0(data);/將數(shù)據(jù)寫入發(fā)送保存寄存器中將數(shù)據(jù)寫入發(fā)送保存寄存器
13、中#define WrUTXH0(ch) (*(volatile unsigned char *)0 x1d00020)=(unsigned char)(ch)發(fā)送字符串void Uart_SendString(char *pt) while(*pt)Uart_SendByte(*pt+);接收字符char Uart_Getch(void) while(!(rUTRSTAT0 & 0 x1); /Receive data readreturn RdURXH0();/返回接收保持寄存器的內(nèi)容#define RdURXH0()(*(volatile unsigned char *)0 x1
14、d00024)void Main(void)char input_char;/* user input char */ int i; char pt_str 10=0,0,0,0,0, 0,0,0,0,0;sys_Init();Uart_Init(0,115200); for( i=0;i10 ; i+ ) pt_stri = Uart_Getch();/接收到一個(gè)字符Uart_SendByte(pt_stri);/發(fā)送剛才收到的字符 Uart_SendString(* pt_str );/發(fā)送整串字符超級(jí)終端的配置n打開超級(jí)終端: 開始/程序/附件/通信/超級(jí)終端n配置: 115200波特率
15、,8位數(shù)據(jù)位,無(wú)奇偶檢驗(yàn),1位停止位,無(wú)硬件流控制。 格式化輸出函數(shù)Uart_Printf(“ please input : n“);void Uart_Printf(char *fmt,.) va_list ap; char string256; va_start(ap,fmt); vsprintf(string,fmt,ap); Uart_SendString(string); va_end(ap);函數(shù)申明: int vsprintf(char *buf, const char *format, va_list arglist); 函數(shù)用途: 該函數(shù)作用同sprintf函數(shù),向變量輸出格
16、式化字符串。 區(qū)別是參數(shù)表由一個(gè)va_list類型的指針代替 頭文件: stdio.h stdarg.h 輸入?yún)?shù): format:參數(shù)格式說(shuō)明,具體參見printf函數(shù) arglist:參數(shù)列表指針, 類型 va_list是一個(gè)void類型的指針(見stdarg.h),即等價(jià)于: int vsprintf(char *buf, const char *format, void *arglist) 輸出參數(shù): buf: 要寫入的緩沖區(qū) 實(shí)時(shí)時(shí)鐘RTCn功能: 日歷/時(shí)鐘及數(shù)據(jù)存儲(chǔ)功能 定時(shí)功能n特點(diǎn): RTC可在斷電后繼續(xù)使用 8位BCD數(shù)據(jù),秒分時(shí)日月年 硬件支持閏年產(chǎn)生器n操作: 讀/寫R
17、TC模塊中的寄存器,讀取并設(shè)置 產(chǎn)生滴答時(shí)鐘中斷。 RTC功能框圖 時(shí)鐘源由外部32.768KHz晶振提供n操作: 1.讀取并設(shè)置當(dāng)前的時(shí)間, 讀/寫RTC模塊中的寄存器, 2.產(chǎn)生滴答時(shí)鐘中斷。 寄存器寄存器寄存器名稱名稱功能功能RTCCONRTC控制寄存器控制寄存器用于控制用于控制BCDBCD寄存器的讀寄存器的讀/ /寫使能寫使能 BCDSECBCD 秒寄存器秒寄存器用于存放秒的用于存放秒的BCD值值BCDMINBCD 分鐘寄存器分鐘寄存器用于存放月的用于存放月的BCD值值BCDHOURBCD小時(shí)寄存器小時(shí)寄存器用于存放小時(shí)的用于存放小時(shí)的BCD值值BCDDAYBCD 日寄存器日寄存器用于
18、存放日的用于存放日的BCD值值BCDDATEBCD 星期寄存器星期寄存器用于存放星期的用于存放星期的BCD值值BCDMONBCD月寄存器月寄存器用于存放月的用于存放月的BCD值值BCDYEARBCD年寄存器年寄存器用于存放年的用于存放年的BCD值值TICNTTICK TIME計(jì)數(shù)計(jì)數(shù)寄存器寄存器用于確定是否允許時(shí)間滴答中斷和時(shí)用于確定是否允許時(shí)間滴答中斷和時(shí)間中斷的計(jì)數(shù)值。間中斷的計(jì)數(shù)值。RTC控制寄存器RTCCON 地址:0 x01D70040(小端) R/W(字節(jié)) 初始值:0 x0位位名稱描述3CLKRSTRTC時(shí)鐘計(jì)數(shù)復(fù)位:0不復(fù)位1復(fù)位2CNTSELBCD計(jì)數(shù)器選擇:0組合的BCD計(jì)
19、數(shù)器1保留(分離的BCD計(jì)數(shù)器)1CLKSELBCD計(jì)數(shù)器時(shí)鐘選擇0XTAL1/215 divided clock1保留(XTAL clock only for test)0RTCENRTC讀寫允許:0禁止1允許如果RTC讀寫允許,STOP電流將大大增大,為了減少STOP電流,當(dāng)不存取RTC時(shí),設(shè)置該位為0,雖然為0,但RTC時(shí)鐘仍運(yùn)行。1.讀取并設(shè)置當(dāng)前的時(shí)間n讀取當(dāng)前時(shí)間 訪問RTC模塊的寄存器,首先要設(shè)RTCCON的bit0為1。CPU通過(guò)讀取RTC模塊中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON 和BCDYEAR的值,得到當(dāng)前的相應(yīng)時(shí)間
20、值。n但是,在RTC模塊中,由于多個(gè)寄存器在讀,可能會(huì)產(chǎn)生1s的偏差。例如:當(dāng)用戶從BCDYEAR到 BCDMIN讀寄存器時(shí),結(jié)果假定是1959年12月31日23時(shí)59分,當(dāng)用戶讀BCDSEC寄存器并且結(jié)果是從1到59,這沒問題,但如果結(jié)果是0秒,則年月日時(shí)分秒可能變?yōu)?960年1月1日0時(shí)0秒,因?yàn)榇嬖?秒偏差。所以這時(shí),若BCDSEC是0,用戶應(yīng)該從BCDYEAR 向 BCDSEC重新讀取數(shù)據(jù)。 void Read_Rtc(void) Uart_Printf(“you can read RTC Value); rRTCCON = 0 x01; / R/W enable, 1/32768,
21、Normal(merge), No reset while(1) if(rBCDYEAR = 0 x99) year = 0 x1999;else year = 0 x2000 + rBCDYEAR; month=rBCDMON; day=rBCDDAY; weekday=rBCDDATE; hour=rBCDHOUR; min=rBCDMIN; sec=rBCDSEC;if(sec!=0) break; rRTCCON = 0 x0; / R/W disable(for power consumption)rtc.h文件#define TESTYEAR (0 x02)#define TEST
22、MONTH (0 x12)#define TESTDAY(0 x31)#define TESTDATE (0 x03)#define TESTHOUR (0 x23)#define TESTMIN(0 x59)#define TESTSEC(0 x59)#include rtc.h“void Rtc_Init(void) rRTCCON = 0 x01;/ R/W enable, 1/32768, Normal(merge), No reset rBCDYEAR = TESTYEAR; rBCDMON = TESTMONTH; rBCDDAY = TESTDAY;/ SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7 rBCDDATE = TESTDATE; rBCDHOUR = TESTHOUR; rBCDMIN = TESTMIN; rBCDSEC = TESTSEC; rRTCCON = 0 x0;/ R/W d
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年物業(yè)管理責(zé)任服務(wù)協(xié)議書(含物業(yè)合同續(xù)簽)3篇
- 體育用品行業(yè)創(chuàng)新商業(yè)模式探索考核試卷
- 2025年農(nóng)村地房產(chǎn)租賃土地租賃協(xié)議
- 2025年度木材加工與木工安裝服務(wù)承包合同4篇
- 2025年體育賽事直播技術(shù)合作協(xié)議
- 2025年公司增資協(xié)議書面模板約定案例
- 2025年大型保險(xiǎn)合同
- 2025年借款質(zhì)押合同
- 基于2025年度市場(chǎng)分析的酒店承包經(jīng)營(yíng)合同3篇
- 2025年家庭房產(chǎn)無(wú)償轉(zhuǎn)讓協(xié)議書
- 土地買賣合同參考模板
- 新能源行業(yè)市場(chǎng)分析報(bào)告
- 2025年天津市政建設(shè)集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 房地產(chǎn)運(yùn)營(yíng)管理:提升項(xiàng)目品質(zhì)
- 自愿斷絕父子關(guān)系協(xié)議書電子版
- 你劃我猜游戲【共159張課件】
- 專升本英語(yǔ)閱讀理解50篇
- 中餐烹飪技法大全
- 新型電力系統(tǒng)研究
- 滋補(bǔ)類用藥的培訓(xùn)
- 北師大版高三數(shù)學(xué)選修4-6初等數(shù)論初步全冊(cè)課件【完整版】
評(píng)論
0/150
提交評(píng)論