第45章UART接口功能及應用_第1頁
第45章UART接口功能及應用_第2頁
第45章UART接口功能及應用_第3頁
第45章UART接口功能及應用_第4頁
第45章UART接口功能及應用_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、S3C44B0的UART接口功能及應用開發(fā)UART概述 nUART(Universal Asynchronous Receiver/Transmitter) 通用異步收發(fā)器n提供兩個獨立的UART;n皆可工作于中斷和DMA模式,即UART可以通過產(chǎn)生中斷或DMA請求來完成CPU和UART間的數(shù)據(jù)傳輸 ;n最高波特率達115.2Kbps;n每一個UART單元包含一個16字節(jié)的FIFO,用于數(shù)據(jù)的接收和發(fā)送,其次還包含一個波特率發(fā)生器,接收器,發(fā)送器和控制單元。 n提供兩個串口DB9。其中UART1為主串口,可與PC或MODOM進行串行通迅。采用MAX3243E作為電平轉換器UART0只采用二根接

2、線RXD和TXD,因此只能進行簡單的數(shù)據(jù)傳輸及接收功能。UART0采用MAX3221E作為電平轉換器。 UART概述 工作過程工作過程串口在電氣連接上有3wire和9wire UART程序設計 n串口初始化 n數(shù)據(jù)發(fā)送和接收數(shù)據(jù) UART的操作 n數(shù)據(jù)發(fā)送 n數(shù)據(jù)接收 n自動流控制AFC( Auto Flow Control)n非自動流控制 n波特率的產(chǎn)生n回環(huán)(Loop-back)模式 數(shù)據(jù)發(fā)送與接收 n工作過程n數(shù)據(jù)幀格式:可編程,它包含1個開始位,5到8個數(shù)據(jù)位,一個可選奇偶位和1到2個的停止位,具體由行控制寄存器(ULCONn)來定義。 n接收狀態(tài):q溢出錯誤表明新的數(shù)據(jù)在舊數(shù)據(jù)沒有被

3、讀取的情況下,覆蓋了舊的數(shù)據(jù)。q奇偶錯誤表明接收器發(fā)現(xiàn)一個不希望出現(xiàn)的奇偶錯誤。q幀錯誤 表明接收到的數(shù)據(jù)沒有一個有效的停止位。q斷點條件表明接收器收到的輸入保持了大于傳輸一幀數(shù)據(jù)時間的邏輯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)生和校驗0 xx無100奇校驗101

4、偶校驗110強制為1111強制為02Stop bit該位確定停止位的個數(shù)0每幀一位停止位1每幀兩位停止位1:0Word length該位確定數(shù)據(jù)位的個數(shù)005位016位107位118位自動流控制AFCnRTS:發(fā)送請求信號 nCTS:清除發(fā)送信號nCTS信號有效表示對方UART的接收FIFO已準備好,nRTS信號有效表示自己的接收器FIFO已經(jīng)準備好;CTS信號控制發(fā)送器的操作,接收器的狀態(tài)影響RTS信號非自動流控制主要用于與modem連接時使用UART控制寄存器UCON0UART0控制寄存器地址:0 x01D00004R/W始值0 x00 UCON1UART1控制寄存器地址:0 x01D04

5、004R/W初始值0 x00位位名稱描述9Tx interrupt type發(fā)送中斷請求類型0脈沖1電平8Rx interrupt type接收中斷請求類型0脈沖1電平7Rx time out enable允許/不允許Rx超時中斷0不允許 1允許6interrupt enable允許/不允許產(chǎn)生UART錯誤中斷0不允許 1允許5Loop-back Mode該位為1使UART進入回環(huán)模式(loop back)模式0普通運行1回環(huán)模式(loop back)4Send Break Signal該位為1使UART發(fā)送一個暫停條件,該位在發(fā)送一個暫停信號后自動清除0正常傳送1發(fā)送暫停條件3:2Trans

6、mit Mode這兩位確定哪個模式可以寫TX數(shù)據(jù)到UART發(fā)送保持寄存器00禁止(Disable)01中斷請求或 polling 模式10BDMA0請求(僅用于UART0)11BDMA1請求(僅用于UART1)1:0Receive Mode這兩位確定哪個模式可以從UART接收緩沖寄存器讀數(shù)據(jù)00禁止(Disable)01中斷請求或 polling 模式10BDMA0請求(僅用于UART0)11BDMA1請求(僅用于UART1)波特率的產(chǎn)生UART傳輸?shù)臅r鐘:由內(nèi)部系統(tǒng)時鐘經(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四舍五入UART 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復位位,該位在FIFO復位后自動清除0正常1Tx FIFO復位1Rx FIFO ResetRx FIFO復位位該位在FIFO復位后自動清除0正常1Rx FIFO復位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; /普通模式,無奇偶校驗,1個停止位,8位數(shù)據(jù)位 rUCON0=0 x245; /rx為邊沿觸發(fā)、tx為電平觸發(fā)、 /禁止超時中斷、產(chǎn)生接受錯誤中斷、 /普通傳送、發(fā)送與接受為輪循模式 rUBRDIV0=( (int)(mclk/16./baud + 0.5) -1 ); for(i=0;i100;i+); /延時作用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ā)送移位寄存器為空時為10發(fā)送移位寄存器不空 1發(fā)送移位寄存器空1Transmit buffer Empty該位在發(fā)送緩沖寄存器沒有包含有效的數(shù)據(jù)為1。如果UART使用FIFO,用戶應當檢查UFSTAT寄存器的Tx FIFO計數(shù)位和Tx FIFO滿標志位代替檢查該位。0不空1空0Receive buffer data ready無論何時接收緩沖寄存器包含有效數(shù)

12、據(jù),該位為1,如果UART使用FIFO,用戶應當檢查UFSTAT寄存器的Rx FIFO計數(shù)位代替檢查該位。0空1接收緩沖寄存器中有接收數(shù)據(jù)發(fā)送字符void Uart_SendByte (int data)if(data=n) while(!(rUTRSTAT0 & 0 x2); /一直等到一直等到THR為空為空Delay(10); /因為超級終端的響應慢因為超級終端的響應慢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();/接收到一個字符Uart_SendByte(pt_stri);/發(fā)送剛才收到的字符 Uart_SendString(* pt_str );/發(fā)送整串字符超級終端的配置n打開超級終端: 開始/程序/附件/通信/超級終端n配置: 115200波特率

15、,8位數(shù)據(jù)位,無奇偶檢驗,1位停止位,無硬件流控制。 格式化輸出函數(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ù)表由一個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ū) 實時時鐘RTCn功能: 日歷/時鐘及數(shù)據(jù)存儲功能 定時功能n特點: RTC可在斷電后繼續(xù)使用 8位BCD數(shù)據(jù),秒分時日月年 硬件支持閏年產(chǎn)生器n操作: 讀/寫R

17、TC模塊中的寄存器,讀取并設置 產(chǎn)生滴答時鐘中斷。 RTC功能框圖 時鐘源由外部32.768KHz晶振提供n操作: 1.讀取并設置當前的時間, 讀/寫RTC模塊中的寄存器, 2.產(chǎn)生滴答時鐘中斷。 寄存器寄存器寄存器名稱名稱功能功能RTCCONRTC控制寄存器控制寄存器用于控制用于控制BCDBCD寄存器的讀寄存器的讀/ /寫使能寫使能 BCDSECBCD 秒寄存器秒寄存器用于存放秒的用于存放秒的BCD值值BCDMINBCD 分鐘寄存器分鐘寄存器用于存放月的用于存放月的BCD值值BCDHOURBCD小時寄存器小時寄存器用于存放小時的用于存放小時的BCD值值BCDDAYBCD 日寄存器日寄存器用于

18、存放日的用于存放日的BCD值值BCDDATEBCD 星期寄存器星期寄存器用于存放星期的用于存放星期的BCD值值BCDMONBCD月寄存器月寄存器用于存放月的用于存放月的BCD值值BCDYEARBCD年寄存器年寄存器用于存放年的用于存放年的BCD值值TICNTTICK TIME計數(shù)計數(shù)寄存器寄存器用于確定是否允許時間滴答中斷和時用于確定是否允許時間滴答中斷和時間中斷的計數(shù)值。間中斷的計數(shù)值。RTC控制寄存器RTCCON 地址:0 x01D70040(小端) R/W(字節(jié)) 初始值:0 x0位位名稱描述3CLKRSTRTC時鐘計數(shù)復位:0不復位1復位2CNTSELBCD計數(shù)器選擇:0組合的BCD計

19、數(shù)器1保留(分離的BCD計數(shù)器)1CLKSELBCD計數(shù)器時鐘選擇0XTAL1/215 divided clock1保留(XTAL clock only for test)0RTCENRTC讀寫允許:0禁止1允許如果RTC讀寫允許,STOP電流將大大增大,為了減少STOP電流,當不存取RTC時,設置該位為0,雖然為0,但RTC時鐘仍運行。1.讀取并設置當前的時間n讀取當前時間 訪問RTC模塊的寄存器,首先要設RTCCON的bit0為1。CPU通過讀取RTC模塊中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON 和BCDYEAR的值,得到當前的相應時間

20、值。n但是,在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ù)。 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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論