《物聯(lián)網(wǎng)系統(tǒng)設計與應用開發(fā)》課件3-4 任務4 串口通信_第1頁
《物聯(lián)網(wǎng)系統(tǒng)設計與應用開發(fā)》課件3-4 任務4 串口通信_第2頁
《物聯(lián)網(wǎng)系統(tǒng)設計與應用開發(fā)》課件3-4 任務4 串口通信_第3頁
《物聯(lián)網(wǎng)系統(tǒng)設計與應用開發(fā)》課件3-4 任務4 串口通信_第4頁
《物聯(lián)網(wǎng)系統(tǒng)設計與應用開發(fā)》課件3-4 任務4 串口通信_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

并行通信和串行通信01CC2530串口通信03目錄任務:串口通信04異步通信和同步通信02并行通信和串行通信通信方式串行通信并行通信

微控制器與外設之間的數(shù)據(jù)通信方式,根據(jù)連線結(jié)構(gòu)和傳送方式的不同,可以分為兩種:并行通信和串行通信。并行通信和串行通信ReceiverReceiverTransmitter并行通信串行通信并行接口是8車道大型高速公路,而串行接口更像是一條單車道鄉(xiāng)村小路。

并行通信:數(shù)據(jù)的各位(比特)同時由多根數(shù)據(jù)線傳送,傳輸數(shù)據(jù)速度快。

串行通信:在單根數(shù)據(jù)線上將數(shù)據(jù)一位(比特)一位(比特)地依次傳送。例如:要傳輸一個字節(jié)8bits的數(shù)據(jù),并行通信用8根線,在1s中之內(nèi)傳完。串行通信用一根線,在8s之內(nèi)傳完。串行和并行通信之間的區(qū)別串行通信并行通信逐位發(fā)送數(shù)據(jù),一次發(fā)送一位一次傳輸1個字節(jié),8位同時發(fā)送需要1根數(shù)據(jù)線需要8根數(shù)據(jù)線通信速度慢通信速度快安裝成本低安裝成本高干擾低,優(yōu)選用于長途通信抗干擾能力差,用于短距離通信示例:計算機到計算機計算機到多功能打印機并行通信應用場合:例如主機和打印機、復印機的通信,加快數(shù)據(jù)傳輸速度。并行通信和串行通信單片機、嵌入式系統(tǒng)等微處理器成本較低,支持較少量的輸入/輸出引腳,并且長距離傳輸數(shù)據(jù),一般選擇串行通信。串行通信有兩種基本形式:同步和異步通信(1)同步通信①收發(fā)雙方在時鐘信號的控制下同步進行。②數(shù)據(jù)傳送是以數(shù)據(jù)塊(一組字符,字符串)為單位,字符與字符之間、字符內(nèi)部的位與位之間都同步。③在一個數(shù)據(jù)塊內(nèi),字符與字符間無間隔。應用場合:電路實現(xiàn)相對復雜,通信網(wǎng)中,有大批量數(shù)據(jù)需要傳輸。同步通信和異步通信異步通信:是指數(shù)據(jù)傳送以字符為單位,字符與字符間的傳送是完全異步的(無時鐘信號)。①以字符為單位傳送信息,一次發(fā)送一個字符。②相鄰兩字符間的間隔是任意長。③異步傳輸?shù)臅r候要加上起始位和結(jié)束位,否則接收方就不知道什么時候開始接收數(shù)據(jù)什么時候結(jié)束。應用場合:因為每個字符都需補加專門的同步信息,傳輸字符的輔助開銷多。異步方式適用于短距離、速率不高的情況。實現(xiàn)簡單,但傳輸速率較低。

同步通信和異步通信單片機主要使用異步通信模式串口什么是串口?串口是串行通信接口的簡稱,COM(clustercommunicationport)接口。是微控制器與其它設備傳送信息的一種標準接接口。電腦上RS232接口,DB9的物理接口,就是一種常見的串口。DB9每種接頭都有公頭和母頭之分,其中帶針狀的接頭是公頭,而帶孔狀的接頭是母頭DB9這種接口基本已被淘汰,慢慢用USB轉(zhuǎn)UART取代了RS232接口。USB轉(zhuǎn)TTL串口的小板,可以用USB擴展出一個串口。通過轉(zhuǎn)串口芯片模仿串口輸出,芯片為PL2303,需要安裝驅(qū)動。串口PL2303CC2530串口通信CC2530有兩個串口USART0和USART1;兩個USART

具有同樣的功能,可分別運行于異步模式(UART)和同步模式(SPI)。串口USART異步模式UART同步模式SPI使用同一時鐘使用各自的時鐘(UniversalSynchronous/AsynchronousReceiver/TransmitterUniversalAsynchronousReceiver/Transmitter(SerialPeripheralInterface)CC2530串口通信UART連接方式發(fā)送方接收方(2)UxGCR:USARTx通用控制寄存器(設置波特率用)(3)UxBAUD:USARTx波特率控制寄存器(設置波特率用)(2)CLKCONCMD:時鐘控制寄存器,設置系統(tǒng)時鐘頻率32MHz還是16MHz(設置波特率用)CC2530串口相關(guān)寄存器(1)PERCFG外設寄存器:選擇外設的I/O位置(4)UxCSR:USARTx控制和狀態(tài)寄存器

主要用于設置是是UART工作模式還是SPI工作模式(5)UxDBUF:USARTx接收/發(fā)送數(shù)據(jù)緩沖寄存器

用于存放發(fā)送和接收的數(shù)據(jù)(6)中斷標志:UTXxIF、URXxIF對于CC2530的串口通信,有如下幾個寄存器(x是USART的編號,為0或者1USART、定時器和ADC這樣的外設同樣也需要I/O口實現(xiàn)其功能,對于USART、定時器具有兩個可以選擇的位置對應它們的I/O引腳,如表所示。通過PERCFG寄存器可以設置兩個USART接口對應外部I/O引腳的映射關(guān)系:

位置1:RX0

---P0_2

TX0

---P0_3

RX1

---P0_5

TX1

---P0_4

位置2:RX0

---P1_4

TX0

---P1_5

RX1

---P1_7

TX1

---P1_6CC2530串口外設映射外設/功能P0P17654321076543210USART0UART

RTCTTXRX

Alt.2

RXTXRTCT

USART1UART

RXTXRTCT

Alt.2

RXTXRTCT

位置1位置2位置1位置2PERCFG外設控制寄存器:串口相關(guān)寄存器用以設置外設的I/O位置。0為備用位置11為備用位置2例如:使用備用位置1PERCFG=0x00;//外設控制寄存器USART0的IO位置:0為P0口位置1P0SEL|=0x0c;//P0_2,P0_3用作串口(外設功能)流控制說明數(shù)據(jù)在兩個串口之間傳輸時,常常會出現(xiàn)丟失數(shù)據(jù)的現(xiàn)象,如接收端數(shù)據(jù)緩沖區(qū)已滿,則此時繼續(xù)發(fā)送來的數(shù)據(jù)就會丟失。流控制能解決這個問題,當接收端數(shù)據(jù)處理不過來時,就會發(fā)出“不在接收”的信號,發(fā)送到就停止發(fā)送,直到收到“可以繼續(xù)發(fā)送”的信號在發(fā)送數(shù)據(jù)。注意:如果只有兩根線傳送數(shù)據(jù)的時候要關(guān)閉流控制。CC2530串口通信波特率

:指單位時間內(nèi)傳送二進制數(shù)據(jù)的位數(shù),以位/秒為單位,它是衡量串口傳送速度快慢的重要參數(shù)。

例如:假如數(shù)據(jù)傳送速率是120位/秒,則傳送的波特率為:120

注意:異步通信的傳送速度一般在50波特--19200波特之間。時鐘設置CC2530時鐘設置:用命令寄存器(CLKCONCMD)來改變系統(tǒng)時鐘源,用狀態(tài)寄存器(CLKCONSTA)來判斷改變后的寄存器是否穩(wěn)定了。

CLKCONCMD&=~0x40;//設置系統(tǒng)時鐘源為32MHZ晶振

while(CLKCONSTA&0x40);//等待晶振穩(wěn)定為32MCLKCONCMD&=~0x47;//設置系統(tǒng)主時鐘頻率為32MHZ波特率的計算

CC2530的波特率由BAUD_M和BAUD_E共同決定:

公式中的F為微控制器的系統(tǒng)時鐘頻率:16MHz或32MHz。

波特率設置設置波特率為115200時的參數(shù)值:U0BAUD=216;U0GCR=11;不同系統(tǒng)時鐘下各常用波特率的參數(shù)值(5)UxDBUF:USARTx接收/發(fā)送數(shù)據(jù)緩沖寄存器

用于存放發(fā)送和接收的數(shù)據(jù)串口相關(guān)寄存器注意:數(shù)據(jù)發(fā)送是以字符(即1個字節(jié))為單位發(fā)送

當USART的發(fā)送/接收數(shù)據(jù)緩沖寄存器UxDBUF被寫入數(shù)據(jù)時,該字節(jié)就會發(fā)送到TXD引腳,開始數(shù)據(jù)的傳輸。由于UxDBUF是雙緩沖的,所以在發(fā)送開始后會立即觸發(fā)TX完成中斷標志UTX0IF,并且數(shù)據(jù)緩沖器被卸載,也就是說,當字節(jié)正在發(fā)送時,新的字節(jié)能夠裝入數(shù)據(jù)緩沖器UxDBUF。

在單字節(jié)的發(fā)送函數(shù)中,把要發(fā)送的數(shù)據(jù)寫入UxDBUF后,查詢TX完成標志UTX0IF,當該標志被置1時,表示數(shù)據(jù)發(fā)送完成,然后清除該標志。(6)中斷標志:UTXxIF、URXxIF串口初始化CC2530串口初始化的一般步驟:(1)時鐘初始化;(2)選擇外設引腳備用位置PERCFG=0x00(3)將相應IO口配置為外設功能。此處配置P0_2和P0_3用作串口UART0。

P0SEL=0x3C(4)選擇USART模式:UART或SPI。U0CSR=0x80(5)設置波特率

(信號傳輸?shù)乃俾剩?/p>

串口初始化代碼如下:PERCFG=0x00//位置1P0口P0SEL|=0x0c;//P0_2,P0_3用作串口(外部設備功能)U0CSR|=0x80;//設置為UART方式

U0GCR|=11;U0BAUD|=216;//波特率設為115200UTX0IF=0;//UART0TX中斷標志初始置位0任務:串口通信在無線傳感網(wǎng)絡中,CC2530需要將采集到的數(shù)據(jù)發(fā)送給上位機處理,同時上位機需要向CC2530發(fā)送控制信息,這一切都離不開兩者之間的信息傳遞。本任務就是實現(xiàn)CC2530與上位機的通信,串口通信程序流程圖如圖所示。

。程序設計流程圖

主函數(shù)主要實現(xiàn)了以下功能。(1)初始化時鐘和串口。(2)使用while(1)不斷地去試圖獲取接收的每一個字符。當此字符不為“#”時,則表示還未輸入完成,繼續(xù)將此字符添加到字符數(shù)組RxData中;當此字符正好為“#”時,則表示輸入完成。(3)跳出循環(huán)將RxData中的每一個字符按次序發(fā)送到PC端,同時重置count。程序分析程序分析voidmain(void){ CLKCONCMD&=~0x40;//設置系統(tǒng)時鐘源為32MHZ晶振while(CLKCONSTA&0x40);//等待晶振穩(wěn)定為32MCLKCONCMD&=~0x47;//設置系統(tǒng)主時鐘頻率為32MHZInitUart();//調(diào)用串口初始化函數(shù)

UartState=UART0_RX;//串口0默認處于接收模式memset(RxData,0,SIZE);while(1){if(UartState==UART0_RX)//接收狀態(tài)

{if(RxBuf!=0){if(count<50)//以'#'為結(jié)束符,一次最多接收50個字符

RxData[count++]=RxBuf;else{if(count>=50)//判斷數(shù)據(jù)合法性,防止溢出{count=0;//計數(shù)清0memset(RxData,0,SIZE);//清空接收緩沖區(qū)}elseUartState=UART0_TX;//進入發(fā)送狀態(tài)

}RxBuf=0;}}if(UartState==UART0_TX)//發(fā)送狀態(tài)

{U0CSR&=~0x40;//禁止接收

UartSendString(RxData,count);//發(fā)送已記錄的字符串。U0CSR|=0x40;//允許接收

UartState=UART0_RX;//恢復到接收狀態(tài)

count=0;//計數(shù)清0memset(RxData,0,SIZE);//清空接收緩沖區(qū)}}}串口初始化的實現(xiàn)代碼如下:程序分析/*串口初始化函數(shù)*/voidInitUart(void){PERCFG=0x00;//外設控制寄存器USART0的IO位置:0為P0口位置1P0SEL=0x0c;//P0_2,P0_3用作串口(外設功能)

P2DIR&=~0xC0;//P0優(yōu)先作為UART0

U0CSR|=0x80;//設置為UART方式

U0GCR|=11; U0BAUD|=216;//波特率設為115200UTX0IF=0;//UART0TX中斷標志初始置位0U0CSR|=0x40;//允許接收

IEN0|=0x84;//開總中斷允許接收中斷}串口發(fā)送字節(jié)、發(fā)送字符串和接收字節(jié)函數(shù)代碼如下:程序分析/*串口發(fā)送函數(shù)*/voidUartSendString(char*Data,intlen){uinti;

for(i=0;i<len;i++){U0DBUF=*Data++;while(UTX0IF==0);UTX0IF=0;}}/*串口中斷處理函數(shù):當串口0產(chǎn)生接收中斷,將收到的數(shù)據(jù)保存在RxBuf中*/

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論