版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第六章 S3C2410的串口UART及編程 第六章 S3C2410的串口UART及編程ppt課件(全)主要內(nèi)容:6.1 S3C2410的串口UART概述6.2 UART的控制寄存器6.3 UART通信程序例子第六章 S3C2410的串口UART及編程ppt課件(全)6.1 S3C2410的串口UART概述6.1.1 S3C2410串行通信(UART)單元S3C2410 UART單元提供3個獨立的異步串行通信接口,皆可工作于中斷和DMA模式。使用系統(tǒng)時鐘最高波特率達230. 4 kb/s,如果使用外部設(shè)備提供的時鐘,可以達到更高的速率。每一個UART單元包含一個16字節(jié)的FIFO發(fā)送緩沖器和一個
2、16字節(jié)的FIFO接收緩沖器,用于數(shù)據(jù)的接收和發(fā)送。S3C2410X UART支持可編程波特率、紅外發(fā)送/接收( 只UART2 )、1個或2個停止位、5位/6位/7位/8位數(shù)據(jù)寬度和奇偶校驗。第六章 S3C2410的串口UART及編程ppt課件(全)6.1.2 波特率的產(chǎn)生波特率由一個專用的UART波特率分頻寄存器(UBRDIVn)(n=02)控制,計算公式如下 UBRDIVn=(int)ULK/(波特率 16)1或者 UBRDIVn=(int) PLK/(波特率 16)1第六章 S3C2410的串口UART及編程ppt課件(全)6.1.3 UART通信操作下面簡略介紹UART操作,關(guān)于數(shù)據(jù)發(fā)
3、送、數(shù)據(jù)接收、中斷產(chǎn)生、波特率產(chǎn)生、查詢檢測模式、紅外模式和自動流控制的詳細介紹,請參照相關(guān)教材和數(shù)據(jù)手冊。發(fā)送數(shù)據(jù)幀是可編程的。一個數(shù)據(jù)幀包含1個起始位、58個數(shù)據(jù)位、1個可選的奇偶校驗位和12位停止位,停止位位數(shù)通過行控制寄存器ULCONn配置。第六章 S3C2410的串口UART及編程ppt課件(全)6.2 UART的控制寄存器6.2.1 UART線路控制寄存器ULCONn該寄存器的位6決定是否使用紅外模式,位5、位4和位3決定校驗方式,位2決定停止位長度,位1和位0決定每幀的數(shù)據(jù)位數(shù)。具體如表6-1所示:第六章 S3C2410的串口UART及編程ppt課件(全)第六章 S3C2410的
4、串口UART及編程ppt課件(全)6.2.2 UART控制寄存器UCONn該寄存器決定UART的各種模式,見表6-2所示:第六章 S3C2410的串口UART及編程ppt課件(全)6.2.3 UART FIFO控制寄存器UFCONnS3C2410 UART每通道有16個字節(jié)的先入先出(FIFO)接收緩沖器和16個字節(jié)的先入先出(FIFO)發(fā)送緩沖器,如果在程序中使用它們,必須要對UART FIFO控制寄存器UFCONn進行定義,UFCONn的配置如表6-3所示:第六章 S3C2410的串口UART及編程ppt課件(全)第六章 S3C2410的串口UART及編程ppt課件(全)6.2.4 UAR
5、T 調(diào)制解調(diào)器控制寄存器UMCONn(n=0或1)第六章 S3C2410的串口UART及編程ppt課件(全)發(fā)送寄存器UTXH和接收寄存器URXH這兩個寄存器存放發(fā)送和接收的數(shù)據(jù),當然只有1字節(jié)(8位數(shù)據(jù))。需要注意的是,在發(fā)生溢出錯誤時,接收的數(shù)據(jù)必須被讀出來,否則會引發(fā)下次溢出錯誤。第六章 S3C2410的串口UART及編程ppt課件(全)6.2.6 UART TX/RX 狀態(tài)寄存器UTRSTATUART TX/RX狀態(tài)寄存器UTRSTAT配置見表6-5:第六章 S3C2410的串口UART及編程ppt課件(全)6.3 UART通信程序例子UART通信電平可有三種形式,TTL電平,RS23
6、2或RS485。嵌入式控制系統(tǒng)大多具有小、巧、輕、靈、薄的特點,許多傳感器和S3C2410一體或距離很近,沒有干擾,例如多參數(shù)監(jiān)護儀等醫(yī)療設(shè)備,為簡化電路,可采用TTL電平直接與S3C2410相連。如果通信距離在幾十米左右并是點對點通信可采用RS232接口,否則只能采用RS485通信。在工程上UART通信大多采用三線制(發(fā)送連對方接收、接收連對方發(fā)送,雙方共地)。本節(jié)在介紹RS232接口電路的同時給出了一個UART通信程序?qū)嵗?。第六?S3C2410的串口UART及編程ppt課件(全)6.3.1 RS232接口電路本實驗平臺的電路中,UART0與S3C2410連接電路如圖6-1所示,UART0
7、只采用兩根接線RXD0和TXD0 (RS232只能實現(xiàn)點對點通信,且兩點要共地),因此只能進行簡單的數(shù)據(jù)傳輸及接收。UART0采用美信332電平轉(zhuǎn)換器(MAX332)做電平轉(zhuǎn)換 第六章 S3C2410的串口UART及編程ppt課件(全)圖6-1 UART0X與S3C2410的連接電路圖第六章 S3C2410的串口UART及編程ppt課件(全) 6.3.2 UART實驗程序/-/ 頭文件uart0.h/-#define TX_INTTYPE 1 /1:發(fā)送中斷電平觸發(fā)標志#define RX_INTTYPE 1 /1:接收中斷電平觸發(fā)標志extern void Uart_Port_Set(voi
8、d); /保存本程序使用的端口原狀態(tài)extern void Uart_Port_Return(void); /恢復本程序使用的端口原狀態(tài)extern void Uart_Uclk_En(int, int); /串行通信使用UCLKextern void Uart_Pclk_En(int, int); / 串行通信使用PCLK void Test_Uart0_Int(void); /UART0初始化/-/ UART實驗程序第六章 S3C2410的串口UART及編程ppt課件(全)/-#include #include #include 2410addr.h#include 2410lib.h#i
9、nclude def.h#include uart0.hvoid Uart_Port_Set(void);void Uart_Port_Return(void);void _irq Uart0_TxInt(void) ; /發(fā)送中斷服務(wù)程序void _irq Uart0_RxIntOrErr(void); /接收字符和錯誤代碼中斷服務(wù)程序void _sub_Uart0_RxInt(void); /接收字符子中斷服務(wù)程序,從上面程序分出volatile U32 save_rGPHCON,save_rGPHDAT,save_rGPHUP;volatile U32 save_ULCON0,save_
10、UCON0,save_UFCON0,save_UMCON0;第六章 S3C2410的串口UART及編程ppt課件(全)/* 定義一些變量,做臨時保存端口數(shù)據(jù)和狀態(tài)的緩沖區(qū),通信結(jié)束,端口數(shù)據(jù)和狀態(tài)要恢復*/Volatile U32 isTxint isRxint; /定義二個變量,分別做發(fā)送和接收中斷結(jié)束與否標志volatile static char *uart0TxStr;/ UART0發(fā)送字串地址volatile static char *uart0RxStr;/ UART0接收字串地址/-/ 保存UART實驗使用的端口和寄存器/-void Uart_Port_Set(void) /保存
11、H口控制寄存器 save_rGPHCON=rGPHCON; save_rGPHDAT=rGPHDAT; save_rGPHUP=rGPHUP; /配置UART口 rGPHCON&=0 x3c0000;第六章 S3C2410的串口UART及編程ppt課件(全) rGPHCON|=0 x2faaa; /H口控制寄存器nRTS1,nCTS1功能使能 rGPHUP|=0 x1ff; /Uart 口上拉禁止 /rINTSUBMSK=0 x7ff; /屏蔽全部子中斷 save_ULCON0=rULCON0; /保存UART控制寄存器 save_UCON0=rUCON0; save_UFCON0=rUFCO
12、N0; save_UMCON0=rUMCON0; /Initialize UART0, port /-/ 恢復UART實驗使用的端口和寄存器/-void Uart_Port_Return(void) 第六章 S3C2410的串口UART及編程ppt課件(全) /Pop UART GPIO port configuration rGPHCON=save_rGPHCON; rGPHDAT=save_rGPHDAT; rGPHUP=save_rGPHUP; /Pop Uart control registers rULCON0=save_ULCON0; rUCON0 =save_UCON0; rUF
13、CON0=save_UFCON0; rUMCON0=save_UMCON0; /-/ UART通信使用UCLK做波特率發(fā)生器第六章 S3C2410的串口UART及編程ppt課件(全)void Uart_Uclk_En(int ch,int baud) int ch, baud; Uart_Printf(nSelect UART channel0:UART0;1:UART1;2:UART2:n); ch=Uart_GetIntNum(); /從鍵盤讀通道號 Uart_Printf(nSelect baud rate :n); baud=Uart_GetIntNum(); /從鍵盤讀波特率 if(
14、ch = 0) /選UART0 Uart_Select(0); rUCON0|=0 x400; /選UCLK rUBRDIV0=( (int)(UCLK/16./baud) -1 );/波特率因子寄存器 Uart_Printf(UCLK is enabled by UART0.n); for(i=0;i100;i+ 第六章 S3C2410的串口UART及編程ppt課件(全) UART實驗使用PCLK/-void Uart_Pclk_En(int ch, int baud) int ch, baud;Uart_Printf(nSelect UART channel0:UART0/1:UART1/
15、2:UART2:n); ch=Uart_GetIntNum(); Uart_Printf(nSelect baud rate :n); baud=Uart_GetIntNum(); if(ch = 0) 選UART0 Uart_Select(0);第六章 S3C2410的串口UART及編程ppt課件(全)rUCON0&=0 x3ff;/ Select PCLK rUBRDIV0=( (int)(PCLK/16./baud) -1 );/Baud rate divisior register Uart_Printf(PCLK is enabled by UART0.n); for(i=0;iUA
16、RT0 Tx interrupt test is good!rn; /發(fā)送的實驗字串Uart_Printf(Uart channel 0 Tx Interrupt Testn);/在終端上提示pISR_UART0=(unsigned)Uart0_TxInt; /設(shè)中斷向量,即發(fā)送中斷服務(wù)程序入口rULCON0=(06)|(03)|(02)|(3); /* 正常發(fā)送,無效驗,一個停止位,8個數(shù)據(jù)位 選 UCLK */ rUCON0&=0 x400;rUCON0|=(TX_INTTYPE9)|(RX_INTTYPE8)|(07)|(06)|(05)|(04)|(12)|(); /選時鐘,發(fā)送,接收
17、中斷 Uart_TxEmpty(0); /等,直到發(fā)送緩沖器空,此時會產(chǎn)生發(fā)送中斷 rINTMSK=(BIT_UART0); / 總中斷屏蔽(UART0位)打開 rINTSUBMSK=(BIT_SUB_TXD0); / 子中斷屏蔽(UART0發(fā)送位)打開 while(isTxInt);/* 從此處進入中斷,中斷結(jié)束又返回這里等下次中斷,直到發(fā)送結(jié)束 第六章 S3C2410的串口UART及編程ppt課件(全)isTxInt=0跳出,在超級終端上可看到發(fā)給它的字符 */ / UART0接收中斷實驗,UART0接收從鍵盤上輸入的字符,按ENTER鍵接收結(jié)束isRxInt=1;/接收中斷標志,接收結(jié)束
18、,isRxInt=0 uart0RxStr=(char *)UARTBUFFER;/ 接收字串緩沖區(qū)首地址設(shè)定Uart_Printf(nUart channel 0 Rx Interrupt Test:n);/提示Uart_Printf(After typing ENTER key, you will see the characters which was typed by you.);Uart_Printf(nTo quit, press ENTER key.!n);Uart_TxEmpty(0) ;/*等,直到發(fā)送緩沖器空,(等上面發(fā)送的最后一個字符被對方取走,才進行接收實驗)*/pIS
19、R_UART0 =(unsigned)Uart0_RxIntOrErr;/ 設(shè)中斷向量,即接收中斷服務(wù)程序入口rULCON0=(06)|(03)|(02)|(3); /正常接收,無效驗,一個停止位,8個數(shù)據(jù)位rUCON0 &= 0 x400; /選 UCLKrUCON0|= (TX_INTTYPE9)|(RX_INTTYPE8)|(07)|(16)|(05)|(04)|(12)|(1); /選時鐘,發(fā)送,接收中斷第六章 S3C2410的串口UART及編程ppt課件(全) ClearPending(BIT_UART0); /清UART0中斷掛起rINTMSK=(BIT_UART0); /中斷打開
20、rSUBSRCPND=(BIT_SUB_TXD0|BIT_SUB_RXD0|BIT_SUB_ERR0); rINTSUBMSK=(BIT_SUB_RXD0|BIT_SUB_ERR0);/ 子中斷打開while(isRxInt); /* 從此處進入中斷,中斷結(jié)束又返回這里等下次中斷,直到接收結(jié)束isRxInt=0跳出 */ rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_ERR0);/ 中斷結(jié)束,屏蔽子中斷(0通道接收位)rINTMSK|=(BIT_UART0); /中斷結(jié)束,屏蔽總中斷(0通道UART位) Uart_Printf(%sn,(char *)UARTBUFFER);/打印接收的字符串,實際就是在終端上顯示第六章 S3C2410的串口UAR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024裝修合同范本版
- 個人倉庫租賃協(xié)議樣本
- 小學食堂食品供應(yīng)合同
- 2024年冷鏈車運輸合同
- 校企合作框架協(xié)議書范例
- 2024售樓處物業(yè)服務(wù)合同(物業(yè))
- 2024英文股份合同范本英文股份合同
- 2024個人裝修房屋合同范本
- 2024《鋁合金門窗合同》
- 機動車輛交易協(xié)議文本
- 優(yōu)秀團員競選主題班會課件
- 用戶運營專員工作職責與任職要求(7篇)
- 杜甫生平介紹最終版課件
- 專題七馬克思主義剩余的價值理論課件
- 超星爾雅學習通《改革開放史(王向明)》章節(jié)測試答案
- 手術(shù)患者輸血反應(yīng)的應(yīng)急預案流程圖
- 三級數(shù)學下冊 面積1 滬教
- 圓面積公式的推導優(yōu)秀課件
- 科學實驗:磁懸浮課件
- 六病區(qū)護理創(chuàng)新 改良冰敷袋課件
- 海康威視-視頻監(jiān)控原理培訓教材課件
評論
0/150
提交評論