數(shù)字信號msp430f5課件第9章單片機(jī)usci-uart_第1頁
數(shù)字信號msp430f5課件第9章單片機(jī)usci-uart_第2頁
數(shù)字信號msp430f5課件第9章單片機(jī)usci-uart_第3頁
數(shù)字信號msp430f5課件第9章單片機(jī)usci-uart_第4頁
數(shù)字信號msp430f5課件第9章單片機(jī)usci-uart_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1第9章 MSP430F5單片機(jī)USCI-UART9.1 通用串行通信接口(USCI)模塊概述9.2 異步通信模塊的結(jié)構(gòu)9.3 異步通信操作9.4 異步通信寄存器9.5 異步通信舉例注:USCI(Unversal Serial Communication Interface)UART(Universal Asynchronous Receiver/Transmitter),通用異步接收/發(fā)送裝置,UART是一個并行輸入成為串行輸出的體制。SPI(Serial Peripheral Interface)串行外設(shè)接口29.1 通用串行通信接口(USCI)模塊概述MSP430系列單片機(jī)的每種型號均具

2、有串口通信的功能。串口通信可以通過兩種方式來實現(xiàn):1硬件實現(xiàn),即由串行同步/異步通信模塊(USART)直接實現(xiàn),通過配置相應(yīng)的寄存器,由硬件自動實現(xiàn)數(shù)據(jù)的移入和移出,完成串行通信的功能。采用這種方式完成串口通信具有系統(tǒng)穩(wěn)定可靠,不需要占用CPU時間的優(yōu)點。2軟件模擬,通過定時器模塊的支持實現(xiàn)串口通信功能,采用這種方式的優(yōu)勢是成本低,實時性好,但是需要占用一定的CPU時間。3通用串行通信接口(USCI)模塊支持多種串行通信模塊。不同的USCI模塊支持不同的模式。每一個不同的USCI模塊以不同的字母命名。例如,USCI_A 和 USCI_B。如果一個以上相同的 USCI模塊在一個設(shè)備上執(zhí)行,它們被

3、命名為USCI_A0和USCI_A1。4USCI_Ax模塊支持: UART模式 脈沖整形的IrDA 通信 自動波特率檢測的LIN通信 SPI模式 USCI_Bx模塊支持: I2C模式 SPI模式 5在異步模式下,USCI_Ax模塊通過兩個外部引腳 UCAxRXD和 UCAxTXD 連接 MSP430 和外部系統(tǒng)。(P3.3 USCI_A0 TXD/ P3.4 RXD)當(dāng) 寄存器UCAxCTL0的UCSYNC位清零時,UART被選擇。 UART模塊特征包括: 7位或者8位數(shù)據(jù),奇校驗,偶校驗或者無校驗 獨立的發(fā)送和接收移位寄存器 獨立的發(fā)送和接受緩沖寄存器 最低位優(yōu)先或者最高位優(yōu)先的數(shù)據(jù)發(fā)送和接

4、收 內(nèi)置線路空閑和地址位通信協(xié)議的多處理器系統(tǒng) 接收機(jī)起始邊沿檢測自動從LPMx模式喚醒 可編程的和小數(shù)調(diào)整的波特率支持 狀態(tài)標(biāo)志位用于錯誤檢測和抑制 狀態(tài)標(biāo)志位用于地址檢測 獨立的發(fā)送和接受中斷能力 6異步通信在不發(fā)送數(shù)據(jù)時,數(shù)據(jù)信號線上總是呈現(xiàn)高電平狀態(tài),稱為空閑狀態(tài)(又稱MARK狀態(tài))。當(dāng)有數(shù)據(jù)發(fā)送時,信號線變成低電平,并持續(xù)一位的時間,用于表示發(fā)送字符的開始,該位稱為起始位,也稱SPACE狀態(tài)。起始位之后,在信號線上依次出現(xiàn)待發(fā)送的每一位字符數(shù)據(jù),并且按照先低位后高位的順序逐位發(fā)送。采用不同的字符編碼方案,待發(fā)送的每個字符的位數(shù)不同,在5、6、7或8位之間選擇。數(shù)據(jù)位的后面可以加上一位

5、奇偶校驗位,也可以不加,由編程指定。最后傳送的是停止位,一般選擇1位、1.5位或2位。 79.2異步通信模塊的結(jié)構(gòu)該模塊主要包含四個部分:1用來控制串行通信數(shù)據(jù)接收和發(fā)送速率的波特率部分;2用來接收串行輸入的接收部分,在接收時,當(dāng)移位寄存器將接收來的數(shù)據(jù)流組合滿一個字節(jié)后,就保存到接收緩存UCAxURXBUF中。3用來發(fā)送串行輸出數(shù)據(jù)的發(fā)送部分,在發(fā)送時,將發(fā)送緩存UCAxUTXBUF內(nèi)的數(shù)據(jù)逐位送到發(fā)送端口。發(fā)送和接收兩個移位寄存器的移位時鐘都是波特率發(fā)生器產(chǎn)生的時鐘信號BITCLK。4用來完成并/串轉(zhuǎn)換和串/并轉(zhuǎn)換的接口部分。899.3異步通信操作1.異步通信格式異步通信的特點是:一個字符

6、一個字符地傳輸,每個字符一位一位地傳輸,并且傳輸一個字符時,總是以“起始位”開始,以“停止位”結(jié)束,字符之間沒有固定的時間間隔要求。每一個字符的前面都有一位起始位(低電平,邏輯值),字符本身由5-8位數(shù)據(jù)位組成,接著字符后面是一位校驗位(也可以沒有校驗位),最后是一位或一位半或二位停止位,停止位后面是不定長的空閑位。10異步通信的特點是:停止位和空閑位都規(guī)定為高電平(邏輯值),這樣就保證起始位開始處一定有一個下跳沿。如下圖所示,這種格式是靠起始位和停止位來實現(xiàn)字符的界定或同步的,故稱為起止式協(xié)議。通信中每一位的周期由選定的時鐘周期和波特率寄存器決定。 UCMSB位控制著傳送的方向和選擇低位優(yōu)先

7、或高位優(yōu)先,低位優(yōu)先是UART串口通訊的典型應(yīng)用。1112接收操作以收到有效起始位開始。起始位由檢測URXD端口的下降沿開始,然后以3次采樣多數(shù)表決的方法取值。如果3此采樣至少兩次是0才表明是下降沿,然后開始接收初始化操作,這一過程實現(xiàn)錯誤起始位的拒收和幀中各數(shù)據(jù)的中心定位功能。MSP430可以處于低功耗模式,通過上述過程識別正確起始位之后,MSP430可以被喚醒,然后按照通用串行接口控制寄存器中設(shè)定的數(shù)據(jù)格式,開始接收數(shù)據(jù),直到本幀采集完畢。13在異步模式下,傳送數(shù)據(jù)是以字符為單位來傳送的。因為每個字符在起始位處可以通過起始位判別重新定位,所以傳送時多個字符可以一個接一個地連續(xù)傳送,也可以斷

8、續(xù)傳送。并且同步時鐘脈沖不傳送到接收方,收發(fā)雙方各自用自己的時鐘源來控制發(fā)送和接受。142.異步通信多機(jī)模式線路空閑多機(jī)模式地址位多機(jī)模式153.自動錯誤檢測為防止UART由于干擾毛刺被啟動,接收線路上任何時間少于t(大約150ns)的低電平將被忽略,具體參數(shù)見器件手冊。當(dāng)接收線路上出現(xiàn)一個超過t的低電平時,以3次采樣多數(shù)表決的方法取值判斷是否為起始位,如果判斷為一個合法的起始位則UART開始準(zhǔn)備接收字符數(shù)據(jù),等待接收線路上的下一個周期。為了提高可靠性,對其它的位判斷也采用3次采樣多數(shù)表決的方式。16標(biāo)志位錯誤狀態(tài)錯誤描述UCFE幀錯誤當(dāng)一個接收字符的停止位為0并被裝入接收緩存,接收的為一個錯

9、誤的幀,那么幀錯誤標(biāo)志被設(shè)置為1,即使在多停止位模式時也只檢測第一個停止位。同樣,丟失停止位意味著從起始位開始的同步特性丟失,也是一個錯誤幀。在SPI的4線模式時,因總線沖突使有效主機(jī)停止,并在STE引腳信號出現(xiàn)下降沿時使PE位設(shè)置為1.UCPE奇偶校驗錯誤當(dāng)接收字符中1的個數(shù)與它的校驗位不相符,并被裝入接收緩存時,發(fā)生校驗錯誤,設(shè)置PE為1UCOE溢出錯誤當(dāng)一個字符寫入接收緩存URXBUF時,前一個字符還沒有被讀出,這時前一個字符因被覆蓋而丟失,發(fā)生溢出。UCBRK打斷狀態(tài)錯誤當(dāng)發(fā)生一次打斷同時URXEIE置位時,該位被設(shè)置為1,表示接收過程被打斷過。RXD線路從丟失的第一個停止位開始連續(xù)出

10、現(xiàn)至少10位低電平被識別為打斷。17如果一個幀錯誤、奇偶校驗錯誤或打斷狀態(tài)錯誤被檢測到:當(dāng)URXEIE=0時,接收緩存UCAxRXBUF不接收任何數(shù)據(jù);當(dāng)URXEIE=1時,接收緩存UCAxRXBUF接收數(shù)據(jù),相應(yīng)的錯誤檢測標(biāo)志位被置位,直到用戶軟件復(fù)位或者緩存內(nèi)容被讀出時被復(fù)位。18當(dāng)UCFE、UCPE、UCOE、UCBRK或UCRXERR中的任何一位置位,它將保持置位直到用戶軟件復(fù)位它或者UCAxRXBUF被讀出。UCOE必須通過讀UCAxRXBUF復(fù)位。否則,它將不能正常工作。檢測溢出建議采用下面的流程。在一個字符被接收以及UCAxRXIFG置位后,首先讀UCAxSTAT以檢測錯誤標(biāo)志,

11、包括溢出標(biāo)志UCOE。接著讀UCAxRXBUF。在讀UCAxSTAT和UCAxRXBUF期間UCAxRXBUF被重寫,將會清除所有的錯誤標(biāo)志,包括UCOE。因此,UCOE標(biāo)志應(yīng)該在讀取UCAxRXBUF之后被檢查,以檢測溢出狀態(tài)。注意,在這種情況下UCRXERR標(biāo)志不會置位。194.波特率產(chǎn)生所謂波特率,是指單位時間內(nèi)傳送的二進(jìn)制數(shù)據(jù)位數(shù),以位/秒為單位,是衡量串行數(shù)據(jù)傳送速度快慢的重要指標(biāo)和參數(shù)。在異步串行通信時,波特率的產(chǎn)生是必須的。MSP430單片機(jī)的波特率產(chǎn)生部分如圖所示,由時鐘源輸入選擇與分頻、波特率發(fā)生器、調(diào)整器和波特率寄存器等構(gòu)成。其中,整個模塊的時鐘源輸入通過控制寄存器UCAx

12、CTL1中的UCSSEL1和UCSSEL0選擇來自內(nèi)部的3個時鐘或外部輸入時鐘,以決定最終進(jìn)入模塊的時鐘信號BRCLK的頻率。20時鐘信號BRCLK進(jìn)入一個分頻器,通過一系列的硬件控制,當(dāng)計數(shù)器的計數(shù)值減到0時,輸出觸發(fā)器翻轉(zhuǎn),最終輸出兩個移位寄存器使用的移位時鐘BITCLK信號。所以BITCLK信號周期的一半就是定時器即分頻計數(shù)器的定時時間。2122低頻波特率的產(chǎn)生當(dāng)UCOS16=0時選擇低頻模式,當(dāng)UCOS16=1時選擇過采樣模式。該模式允許從低頻時鐘源產(chǎn)生波特率(例如從32768Hz 晶振產(chǎn)生9600波特)。在低頻模式下,波特率發(fā)生器使用一個分頻計數(shù)器和一個調(diào)整器產(chǎn)生位時鐘時序。分頻因子

13、N通常不是一個整數(shù)值。23通過分頻器實現(xiàn)的分頻因子的整數(shù)部分為: UCBRx = INT(N)如果使用通過調(diào)整器UCBRSx實現(xiàn)的分?jǐn)?shù)部分調(diào)整,如下表所示。 2425UCBRSx = round( ( N INT(N) ) 8 ) 2627285. UART初始化和復(fù)位復(fù)位USCI可通過一次PUC或者置位UCSWRST。在一次 PUC后,UCSWRST位自動置位,保持USCI在復(fù)位狀態(tài)。當(dāng)UCSWRST置位時,將復(fù)位UCRXIE、UCTXIE、UCRXIFG、UCRXERR、UCBRK、UCPE、UCOE、UCFE、UCSTOE和UCBTOE位,置位UCTXIFG位。清除UCSWRST將釋放U

14、SCI,使其進(jìn)入操作狀態(tài)。 29初始化或者重新配置UART模塊必須按照以下順序,否則可能會產(chǎn)生不可預(yù)料的結(jié)果。1.置位UCSWRST (BIS.B #UCSWRST,&UCAxCTL1) 2.UCSWRST = 1時初始化所有的USCI 寄存器(包括 UCAxCTL1) 3.配置端口 4.通過軟件清除UCSWRST(BIC.B #UCSWRST,&UCAxCTL1) 5.通過UCRXIE和/或UCTXIE使能中斷(可選擇) 308. UART中斷USCI 只有一個發(fā)送和接收共用的中斷向量。USCI_Ax 和 USC_Bx 不共用中斷向量。在實際使用中,一般通過中斷來完成數(shù)據(jù)的發(fā)送和接收。31(

15、1)UART發(fā)送中斷操作發(fā)送端置位 UCTXIFG 中斷標(biāo)志表明 UCAxTXBUF 已經(jīng)準(zhǔn)備好接收另一個字符。如果 UCTXIE 和 GIE 也置位的話,一個中斷請求發(fā)生。如果一個字節(jié)寫入 UCAxTXBUF,UCTXIFG 將會自動復(fù)位。 在一次PUC后或者UCSWRST = 1時,UCTXIFG置位。32(2)UART接收中斷每次一個字符被接收同時載入 UCAxRXBUF,UCRXIFG 中斷標(biāo)志置位。如果 UCTXIE 和 GIE 也置的話,一個中斷請求發(fā)生。UCRXIFG 和 UCRXIE 通過一次系統(tǒng)復(fù)位 PUC 信號或者 UCSWRST = 1 復(fù)位。當(dāng)UCAxRXBUF 被讀出

16、時,UCRXIFG 自動復(fù)位。 33其它的中斷控制特征包括:當(dāng) UCAxRXEIE = 0 時錯誤字符將不會置位 UCRXIFG。 當(dāng) UCDORM = 1,在多機(jī)模式下的非地址字符將不會置位 UCRXIFG。當(dāng)UCBRKIE = 1,打斷情況將會置位 UCBRK 位和 UCRXIFG 標(biāo)志。349.4異步通信寄存器35363738UCAxCTL0,USCI_Ax控制寄存器 0UCPENBit7奇偶檢驗位允許 0 校驗位禁止。 1校驗位允許。校驗位由 UCAxTXD 產(chǎn)生,由 UCAxRXD 接收。UCPAR Bit6 校驗位選擇。當(dāng)校驗位禁止時,不使用UCPAR。 0 奇校驗 1 偶檢驗 U

17、CMSB Bit5 高位優(yōu)先選擇??刂瓢l(fā)送和接收移位寄存器的方向。 0 低位優(yōu)先 1 高位優(yōu)先 39UC7BIT Bit4 字符長度。選擇7位或者 8 位的字符長度。 0 8位數(shù)據(jù) 1 7位數(shù)據(jù) UCSPB Bit3 停止位選擇。停止位的個數(shù)。 0 一個停止位 1 兩個停止位 UCMODEx Bits2-1 USCI模式。當(dāng)UCSYNC = 0時,UCMODEx選擇異步模式。 00 UART模式 01 空閑線路多處理器模式 10 地址位多處理器模式 11 自動波特率檢測的 UART 模式 UCSYNC Bit0 同步模式。 0 異步模式 1 同步模式40UCAxCTL1,USCI_Ax控制寄存

18、器 1UCSSELBits7-6USCI時鐘源選擇。這些位選擇BRCLK 的時鐘源。 00 UCLK 01 ACLK 10 SMCLK 11 SMCLK UCRXEIE Bit5 接收字符錯誤中斷使能。 0 不接收出錯字符不置位 UCRXIFG 位 1 不接收出錯字符置位 UCRXIFG UCBRKIE Bit4 接收打斷字符中斷使能 0 接收打斷字符不置位 UCRXIFG 1 接收打斷字符置位 UCRXIFG 41UCDORM Bit3 睡眠。使USCI進(jìn)入睡眠模式。0 不睡眠。所有接收字符都會置位 UCRXIFG。 1 睡眠。只有在空閑線路的字符或者地址位的字符將置位UCRXIFG。在自動

19、波特率檢測的 UART 模式下,只有打斷和同步域的組合可以置位 UCRXIFG。UCTXADDR Bit2 發(fā)送地址。當(dāng)在多機(jī)模式下,下一幀發(fā)生那個的數(shù)據(jù)將會 被標(biāo)記為地址。 0 發(fā)送的下一幀是數(shù)據(jù) 1 發(fā)送的下一幀是地址 UCTxBRK Bit1 發(fā)送打斷。0 發(fā)送的下一幀不是打斷 1 發(fā)送的下一幀是一個打斷或者打斷/同步UCSWRST Bit0 軟件復(fù)位使能 0 禁止。USCI復(fù)位釋放操作。 1 使能。USCI在復(fù)位后邏輯電平保持不變。42UCAxBR0,USCI_Ax波特率控制寄存器0UCBRx 波特率發(fā)生器的時鐘分頻因子。UCAxBR1,USCI_Ax波特率控制寄存器143UCAxMC

20、TL,USCI_Ax調(diào)整控制寄存器UCBRFxBits7-4第一調(diào)整階段選擇。 當(dāng)UCOS16 = 1時,這些位確定 BITCLK16 的調(diào)整模式。 當(dāng)UCOS16 = 0時,這些位被忽略。UCBRSx Bits3-1 第二調(diào)整階段選擇。這些位確定 BITCLK的調(diào)整模式。UCOS16 Bit0 過采樣模式使能。 0 禁止 1 使能44UCAxSTAT,USCI_Ax狀態(tài)寄存器UCLISTENBit7偵聽使能。該位置位就選擇一個閉環(huán)回路模式。 0 禁止 1 使能。UCAxTXD端發(fā)送的數(shù)據(jù)就返回給數(shù)據(jù)接收端。UCFE Bit6 幀錯誤標(biāo)志 0 沒有錯誤 1 接收到的字符以低電平的 STOP位結(jié)

21、束。UCOE Bit5 溢出錯誤標(biāo)志。當(dāng)之前在接受緩存UCAxBUF內(nèi)的數(shù)據(jù)沒有被讀取,新的數(shù)據(jù)又被裝在進(jìn)去時會導(dǎo)致該位置位。UCOE 會在讀取了接受緩存自動復(fù)位,所以不要去軟件清零以免發(fā)生功能失常的現(xiàn)象。 0 沒有溢出錯誤 1 出現(xiàn)溢出錯誤。45UCPE Bit4 奇偶校驗錯誤。 0沒有奇偶校驗錯誤 1出現(xiàn)就校驗錯誤 UCBRK Bit3 打斷檢測標(biāo)志位 0 沒有出現(xiàn)打斷條件 1 發(fā)生了打斷條件 UCRXERR Bit2 接收錯誤標(biāo)志。該位表明接收該字符時出現(xiàn)錯誤。當(dāng)該位置位時。UCRXERR會在接受緩存被讀之后自動清零。 0沒有檢測到接收錯誤 1檢測到接收錯誤UCADDR Bit1 在地址

22、位多機(jī)模式中,接收到了地址。UCIDLE 應(yīng)用于在空閑多級模式中。UCBUSY Bit0 USCI忙狀態(tài)。該位表明當(dāng)前 USCI接收或者發(fā)送狀況。 0USCI空閑 1USCI忙碌狀態(tài)(正在接收或者發(fā)送)46UCAxRXBUF,USCI_Ax接收緩沖寄存器UCRXBUFx Bits7-0數(shù)據(jù)接收緩沖器是用戶可以訪問的,包含從接收移位寄存器收到的最后的字符。讀 UCAxRXBUF將復(fù)位接收錯誤標(biāo)志位,UCADDR 或者 UCIDLE 位,以及 UCRXIFG。在 7 位數(shù)據(jù)模式下,UCAxRXBUF 是低位優(yōu)先的,最高位通常是復(fù)位的47UCAxTXBUF,USCI_Ax發(fā)送緩沖寄存器UCTXBUF

23、x Bits7-0數(shù)據(jù)發(fā)送緩沖器是用戶可以訪問的,它保持?jǐn)?shù)據(jù)到被移入發(fā)送移位寄存器并發(fā)送數(shù)據(jù)到到UCAxTXD。寫數(shù)據(jù)發(fā)送緩沖器將清除UCTXIFG位。在7位模式在,最高位未使用,處于復(fù)位狀態(tài)。48UCAxIE,USCI_Ax中斷使能寄存器UCTXIEBit1發(fā)送中斷使能。 0 中斷關(guān)閉 1 中斷使能 UCRXIE Bit0 接收中斷使能。 0 中斷關(guān)閉 1 中斷使能49UCAxIFG,USCI_Ax中斷標(biāo)志寄存器UCTXIFGBit1發(fā)送中斷標(biāo)志位。當(dāng) UCAxTXBUF為空時 UCTXIFG 置位。 0 沒有中斷掛起 1 中斷掛起 UCRXIFG Bit0 接收中斷標(biāo)志位。當(dāng) UCAxRX

24、BUF 已經(jīng)收到一個完整的字符,UCRXIFG 置位。 0 沒有中斷掛起 1 中斷掛起50UCAxIV,USCI_Ax中斷向量寄存器UCIVxBits2-1UCAxIV值 中斷源 中斷標(biāo)志 中斷優(yōu)先級 000h 無中斷 0002h 數(shù)據(jù)接收 UCRXIFG 最高 0004h 發(fā)送緩存空 UCTXIFG 最低 9.5 異步通信舉例例1.MSP430F5529串口0實驗,實現(xiàn)在接收中斷中將收到的字符發(fā)送出去,UART模塊時鐘源為32768Hz的低頻時鐘ACLK,波特率為4800,8位數(shù)據(jù)位。51#include void main(void) unsigned char i; WDTCTL = W

25、DTPW + WDTHOLD; / Stop WDT P3SEL = BIT3+BIT4; / P3.3 USCI_A0 TXD/ P3.4 RXD UCA0CTL1 |= UCSWRST; / *Put state machine in reset* UCA0CTL1 |= UCSSEL_1; / CLK = ACLK UCA0BR0 = 0 x06; / 32kHz/4800=6.83 (see Users Guide) UCA0BR1 = 0 x00; / UCA0MCTL = UCBRS_7+UCBRF_0; /0.83*8=6.64,ROUND(6.64)=7 /Modulation

26、 UCBRSx=7, UCBRFx=0 UCA0CTL1 &= UCSWRST; / *Initialize USCI state machine* UCA0IE |= UCRXIE; / Enable USCI_A0 RX interrupt _bis_SR_register(LPM3_bits + GIE); / Enter LPM3, interrupts enabled _no_operation(); / For debugger52/ Echo back RXed character, confirm TX /buffer is ready first#pragma vector=

27、USCI_A0_VECTOR_interrupt void USCI_A0_ISR(void) switch(_even_in_range(UCA0IV,4) case 0:break; / Vector 0 - no interrupt case 2: / Vector 2 - RXIFG while (!(UCA0IFG&UCTXIFG); / USCI_A0 TX buffer ready? UCA0TXBUF = UCA0RXBUF; / TX - RXed character break; case 4:break; / Vector 4 - TXIFG default: break

28、; 53例2.MSP430F5529串口0實現(xiàn)雙向串口通信,在接收中斷接收一個長度為8的字符串,在整個字符串接收完成之后再將其通過串口發(fā)送出去。UCLK0為32768Hz的ACLK,波特率為9600,8位數(shù)據(jù)位。54#include static char string18; char i,j = 0; void main(void) WDTCTL = WDTPW + WDTHOLD; /停止看門狗P3SEL = BIT3+BIT4; / P3.3 USCI_A0 TXD/ P3.4 RXDUCA0CTL1 |= UCSWRST; / *Put state machine in reset*U

29、CA0CTL1 |= UCSSEL_1; / CLK = ACLK UCA0BR0 = 0 x03; / 32kHz/9600=3.41 (see Users Guide)UCA0BR1 = 0 x00; /UCA0MCTL = UCBRS_3+UCBRF_0; / Modulation UCBRSx=3, UCBRFx=0UCA0CTL1 &= UCSWRST; / *Initialize USCI state machine*UCA0IE |= UCRXIE+UCTXIE; / Enable USCI_A0 RX TX interruptUCA0IFG &= (UCTXIFG+UCRXIF

30、G); /清除POR造成的UTXIFG0置位 _bis_SR_register (LPM3_bits + GIE); / 進(jìn)入低功耗模式,開中斷 55/ UART0 TX ISR #pragma vector=USCI_A0_VECTOR_interrupt void USCI_A0_ISR(void)switch(_even_in_range(UCA0IV,4) case 0:break; / Vector 4 - TXIFG Vector 0 - no interrupt case 2:string1j+ = UCA0RXBUF; / Vector 2 - RXIFG if (j size

31、of( string1)-1) i = 0; j = 0; UCA0TXBUF = string1i+; break; case 4:if (i sizeof( string1) UCA0TXBUF = string1i+; break; / Vector 4 - TXIFGdefault: break; 56問題:怎樣接收和發(fā)送一個數(shù)據(jù)包?57串行通信標(biāo)準(zhǔn)UART實際上比基于半導(dǎo)體的計算機(jī)出現(xiàn)得還要早,在電子通信的早期,UART是一個由齒輪、繼電器和電動機(jī)械寄存器組成的機(jī)械設(shè)備,如果要對它進(jìn)行設(shè)置,首先就需要有一個扳手。58歷史悠久而可靠的RS-232CRS-232C是一種串行通信接口標(biāo)準(zhǔn),

32、自20世紀(jì)60年代開始,他就以各種不同的形式在使用。RS-232C連接的串行設(shè)備之間的距離可達(dá)25米,傳輸速度可達(dá)38.4Kbps,使用它可以連接其他計算機(jī)、調(diào)制解調(diào)器,甚至老式終端。過去,打印機(jī)、繪圖儀和其他設(shè)備的主機(jī)都是使用RS-232C接口;現(xiàn)在,由于要求高速傳輸大量數(shù)據(jù),RS-232C作為一種連接標(biāo)準(zhǔn)逐漸被高速網(wǎng)絡(luò),比如以太網(wǎng)取代,不過,它對于嵌入式系統(tǒng)來說仍然是一種非常有用而且簡單的連接工具。59在RS-232標(biāo)準(zhǔn)中定義了邏輯1和邏輯0電壓級數(shù),以及標(biāo)準(zhǔn)的傳輸速率和連接器類型。信號大小在正的和負(fù)的315v之間。RS-232規(guī)定接近零的電平是無效的,邏輯1規(guī)定為負(fù)電平,有效負(fù)電平的信號

33、狀態(tài)稱為傳號marking,它的功能意義為OFF,邏輯0規(guī)定為正電平,有效正電平的信號狀態(tài)稱為空號spacing,它的功能意義為ON。根據(jù)設(shè)備供電電源的不同,5、10、12和15這樣的電平都是可能的。60RS-232設(shè)計之初是用來連接調(diào)制解調(diào)器做傳輸之用,也因此它的腳位意義通常也和調(diào)制解調(diào)器傳輸有關(guān)。RS-232的設(shè)備可以分為數(shù)據(jù)終端設(shè)備(DTE,Data Terminal Equipment)和數(shù)據(jù)通信設(shè)備(DCE,Data Connection Equipment)兩類,這種分類定義了不同的線路用來發(fā)送和接受信號。一般來說,計算機(jī)和終端設(shè)備有DTE連接器,調(diào)制解調(diào)器和打印機(jī)有DCE連接器。

34、但是這么說并不是總是嚴(yán)格正確的,用配線分接器測試連接,或者用試誤法來判斷電纜是否工作,常常需要參考相關(guān)的文件說明。6162DB9 Male (Pin Side) DB9 Female (Pin Side) DB9 Female (Solder Side) DB9 Male (Solder Side) - - 1 2 3 4 5 / 5 4 3 2 1 / 6 7 8 9 / 9 8 7 6 / - - 63信號DB-25DB-9公共地75發(fā)送數(shù)據(jù)(TD)23接受數(shù)據(jù)(RD)32數(shù)據(jù)終端準(zhǔn)備(DTR)204數(shù)據(jù)準(zhǔn)備好(DSR)66請求發(fā)送(RTS)47清除發(fā)送(CTS)58數(shù)據(jù)載波檢測(DCD)

35、81振鈴指示(RI)2296465將串行端口用作電源如果一個嵌入式系統(tǒng)要通過RS-232C串行接口一直和計算機(jī)主機(jī)相連,那么這個嵌入式系統(tǒng)可以順帶通過串行接口來供電,許多RS232C信號端沒有使用,因此可以用來提供一定的電流,如果嵌入式系統(tǒng)要求的電流比這個值小,就可以用RS-232C控制信號來提供電源。RTS(請求發(fā)送)或者DTR(數(shù)據(jù)終端請求)信號在RS-232C應(yīng)用中都沒有使用,可以用這些信號端中的一個作為電壓調(diào)節(jié)器的電源輸入端來為系統(tǒng)提供電壓。6667串口通信的調(diào)試1.軟件2.調(diào)試的方法3.示波器的使用681.軟件69調(diào)試的方法70示波器的使用觸發(fā)什么是觸發(fā)?任何示波器的存儲器都是有限的

36、,因此所有示波器都必須使用觸發(fā)。觸發(fā)是示波器應(yīng)該發(fā)現(xiàn)的用戶感興趣的事件。換句話說,它是用戶想要在波形中尋找的東西。觸發(fā)可以是一個事件(即波形中的問題),但不是所有的觸發(fā)都是事件。觸發(fā)實例包括邊沿觸發(fā)、毛刺信號觸發(fā)和數(shù)字碼型觸發(fā)。71示波器必須使用觸發(fā)的原因在于其存儲器的容量有限。例如,Agilent 90000 系列示波器具有 20 億采樣的存儲器深度。但是,即便擁有如此大容量的存儲器,示波器仍需要一些事件來區(qū)分哪 20 億個采樣需要顯示給用戶。盡管 20 億的采樣聽起來似乎非常龐大,但這仍不足以確保示波器存儲器能夠捕獲到感興趣的事件。示波器的存儲器可視為一個傳送帶。無論什么時候進(jìn)行新的采樣,

37、采樣都會存儲到存儲器中。存儲器存滿時,最舊的采樣就會被刪除,以便保存最新采樣。當(dāng)觸發(fā)事件發(fā)生時,示波器就會捕獲足夠的采樣,以將觸發(fā)事件存儲在存儲器要求的位置(通常是在中間),然后將這些數(shù)據(jù)顯示給用戶。72示波器最常用最基本的觸發(fā)模式有三種:第一種是“自動模式” ,示波器面板上一般標(biāo)為“AUTO” 。在這種模式下,當(dāng)觸發(fā)沒有發(fā)生時,示波器的掃描系統(tǒng)會根據(jù)設(shè)定的掃描速率自動進(jìn)行掃描;而當(dāng)有觸發(fā)發(fā)生時,掃描系統(tǒng)會盡量按信號的頻率進(jìn)行掃描。所以在這種模式下不論觸發(fā)條件是否滿足,示波器都會產(chǎn)生掃描,都可以在屏幕上可以看到有變化的掃描線,這是這種模式的特點。73第二種是“正常模式” ,也稱為“常規(guī)模式”

38、,在面板上一般標(biāo)為“NORMAL” 或“NORM” 。這種模式與自動模式不同,在這種模式下示波器只有當(dāng)觸發(fā)條件滿足了才進(jìn)行掃描,如果沒有觸發(fā),就不進(jìn)行掃描。因此在這種模式下如果沒有觸發(fā)的話,對于模擬示波器而言您會看不到掃描線,屏幕上什么都沒有,對于數(shù)字示波器而言您會看不到波形更新,不了解這一點還常常會以為是信號沒連上或什么其他故障。74第三種是“單次模式” ,一般標(biāo)為“SINGLE” 或“SIGL” 。這種模式與“正常模式” 有一點類似,就是只有當(dāng)觸發(fā)條件滿足時才產(chǎn)生掃描,否則不掃描。而不同在于,這種掃描一但產(chǎn)生并完成后,示波器的掃描系統(tǒng)即進(jìn)入一種休止?fàn)顟B(tài),使得后面即使再有滿足觸發(fā)條件的信號出

39、現(xiàn)也不再進(jìn)行掃描,也就是觸發(fā)一次只掃描一次,即單次,必須通過手工的方法將掃描系統(tǒng)重啟,才能產(chǎn)生下一次觸發(fā)。 顯然,對于普通模擬示波器而言在這種模式下您經(jīng)常會發(fā)現(xiàn)什么也看不到,因為波形一閃而過,示波器不能將其保留,因此除了與照相機(jī)配合將一閃而過的波形拍下來,在多數(shù)場合這種模式?jīng)]有什么用75示波器觸發(fā)模式的使用在實際使用中,不同觸發(fā)模式的選擇常常是根據(jù)對被觀測信號特性和要觀測的內(nèi)容作出的,其間并沒有什么固定的規(guī)則,而往往是一個交互的過程,即通過選擇不同的觸發(fā)模式了解信號的特性,又根據(jù)信號的特性和想要觀測的內(nèi)容選擇有效的觸發(fā)模式。在這個過程中最重要的是要理解不同觸發(fā)模式的工作機(jī)制,了解被觀測信號的特

40、點以及明確所要觀測的內(nèi)容。76一般來說,在對信號的特點不是很了解的時候,應(yīng)該選擇自動模式,因為這時不管信號是什么樣示波器都會掃描,您至少能在屏幕上看到一些東西,那怕僅僅是掃描線也好,而不會什么都沒有。有掃描線后可以通過調(diào)節(jié)垂直增益、垂直位置、時基速率等參數(shù)“找到” 波形,然后通過選擇觸發(fā)源、觸發(fā)邊沿、觸發(fā)電平等穩(wěn)定波形。對于模擬示波器來說,只要信號是周期性的,其頻率在適合相應(yīng)示波器觀測的范圍內(nèi)并且不太復(fù)雜的話,通過這樣的步驟一般能達(dá)到對信號的大體了解,然后根據(jù)需要可作進(jìn)一步的觀測。77對于正常模式,許多朋友可能會覺得與自動模式在觀測效果上沒有什么區(qū)別,常常有這樣的情況,將觸發(fā)模式在自動與正常之

41、間切換,屏幕波形并沒有什么變化,不過這種情形往往只發(fā)生在被觀測信號是一些比較簡單的周期性信號的情況下。正常模式的作用在于觀測波形的細(xì)節(jié),特別是對于比較復(fù)雜的信號,例如視頻同步信號。為什么這樣說呢?這是因為為了觀測細(xì)節(jié),我們必須將時基掃描速率調(diào)高,以便將波形展開。而當(dāng)我們這樣做的時候,就會使得被觀測信號的頻率相對于示波器掃描速率而言變低,也就是說,在兩次觸發(fā)之間示波器可能會作很多次掃描。78在這種情形下,如果這時我們選擇的是自動模式,則示波器會實際進(jìn)行所有這些掃描,其結(jié)果是使這些掃描(它們不是由觸發(fā)產(chǎn)生)所對應(yīng)的波形與觸發(fā)掃描所對應(yīng)的波形一起顯示,造成顯示波形的混疊,因而不能清晰地顯示我們想看的

42、波形。而如果我們選擇的是正常模式,則這些在觸發(fā)之間的掃描示波器實際不會進(jìn)行,只進(jìn)行那些因觸發(fā)而產(chǎn)生的掃描,因而只顯示我們想看到的與觸發(fā)相聯(lián)系的波形,從而使波形會比較清晰,這就是正常觸發(fā)模式的功用。79對于單次模式,如上所述就普通模擬示波器而言我們基本上是難以利用的,但對于數(shù)字存儲示波器來說它是一種非常有用的觸發(fā)模式。在數(shù)字存儲示波器中,使用單次觸發(fā)模式可以捕捉單次出現(xiàn)或多次出現(xiàn)但不太具有周期性的信號。雖然使用正常模式也能夠捕捉單次的信號,但如果信號是多次而非單次時,在正常模式下后面出現(xiàn)的信號所觸發(fā)的掃描就會將前面捕獲的結(jié)果抹去,因此反而得不到穩(wěn)定的波形。在這種時候如果采用單次模式就沒有這個問題

43、,也就是說,單次模式的觸發(fā)具有從多次出現(xiàn)的信號中挑選一個的能力。80RS422RS-232C的電壓電平是相對于本地線而言的。而RS-422不同,它使用兩根線之間的點壓差來代表邏輯電平。這兩根線被稱作雙絞線或差分雙絞線。因此RS-422是一種平衡傳輸。或者換句話說它并不是相對于本地的地,任何噪聲或干擾都將會同時影響這兩根雙絞線中的每一根。但對于二者之間的差異的影響卻很小。這種現(xiàn)象稱為共模抑制。由于這個原因,RS-422可以在更遠(yuǎn)的距離上以更高的速率傳輸數(shù)據(jù)。而且抗干擾能力比RS-232C更強(qiáng)。RS-422傳輸數(shù)據(jù)的距離可達(dá)1200米。818283網(wǎng)絡(luò)RS-485以太網(wǎng)Ethernet84RS-4

44、85RS-485由RS-422演變而來,用來組建低成本網(wǎng)絡(luò),并且普遍地用在許多工業(yè)應(yīng)用中。RS-485是最簡單和最容易實現(xiàn)的網(wǎng)絡(luò)之一,并且還允許多個系統(tǒng)僅通過一根雙絞線來交換數(shù)據(jù)。85868788以太網(wǎng)Crystal Semiconductor公司,現(xiàn)在成為Cirrus Logic公司( )的一部分,生產(chǎn)了一種單芯片的以太網(wǎng)控制器 CS8900ACS8900A支持10BASE-2、10BASE-T以太網(wǎng)端口10/100BASE-T以太網(wǎng)傳輸采用平衡差分信號。使用四根信號線:兩根用來發(fā)送、兩根用來接收。一對信號線中的一根承載0+2.5V的信號電壓,而另一根負(fù)載的電壓是0-2.5V。一次就可以產(chǎn)生

45、一個5Vpp的信號差。8990919293941-wire總線Da l l a s 公 司的 1 - wi r e總線是一種最 簡單的總線形式 , 主機(jī)通過一條雙絞線與多個從機(jī)進(jìn)行數(shù) 字通 信 , 并 為從 機(jī) 提供 工 作 電源 。1 一wi r e器件家族包含 了多種功能的器件 , 如身份識別器 、 傳感器、 控制和存儲器等, 并且每個 1 _ wi r e器件都具有一個全球唯一的數(shù)字地址。在應(yīng)用中, 需要將這些 1 一 wi r e器件與系統(tǒng) 中的微控制器相連, 常用的連接方法包括簡單的軟件方案、 串行接 口芯片、 整 合 1 一 wi r e主控 器 的定 制 AS I C等。95961 - wi r e 總線 有 4種基 本操作 : r e s e t ( 復(fù)位 ) 、w r i t e 1 ( 寫 1位) 、 wr i t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論