版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
《基于MSP430單片機原理及應用》第三章MSP430單片機片內(nèi)及片外模塊3.1通用I/O端口3.2
中斷系統(tǒng)3.3定時器3.4通用串行通信模塊3.5串行外設接口協(xié)議SPI模式3.5串行外設接口協(xié)議SPI模式3.6內(nèi)部集成電路協(xié)議I2C模式3.7比較器A3.8MSP430模數(shù)轉(zhuǎn)換模塊3.9MSP430數(shù)模轉(zhuǎn)換模塊目錄3.1通用I/O端口3.1.1端口P1和P23.1.2端口P3、P4、P5和P63.1.3端口應用目錄3.1.1端口P1和P2端口P1和P2具有輸入/輸出、中斷和外部模塊功能,這些功能可以通過各自7個控制寄存器的設置來實現(xiàn)。(1)輸入/輸出方向寄存器PxDIRPxDIR寄存器中的每一位選擇相應管腳的輸入輸出方向。當管腳被設置為其它功能時,方向寄存器中對應的值應被設置為該管腳所實現(xiàn)功能要求的方向值。Bit=0:管腳為輸入方向Bit=1:管腳為輸出方向通用I/O端口(2)輸入寄存器PxINPxIN寄存器中的每一位反映當前IO口的信號的輸入值,當I/O管腳被配置為普通IO口時功能時,對應的這些寄存器只能被讀。Bit=0:輸入為低Bit=1:輸入為高(3)輸出寄存器PxOUT當I/O管腳配置為普通IO口并且為輸出方向時,PxOUT寄存器中的每一位就對應著相應管腳的電平輸出狀態(tài)。Bit=0:輸出為低Bit=1:輸出為高通用I/O端口(4)中斷使能寄存器PxIEPxIE寄存器的每一位使能與對應的引腳相聯(lián)系。Bit=0:Px口中斷關閉Bit=1:Px口中斷使能(5)中斷觸發(fā)沿選擇寄存器PxIES如果允許Px口的某個引腳中斷,還需定義該引腳的中斷觸發(fā)沿。Bit=0:上升沿使相應標志位置位Bit=1:下升沿使相應標志位置位通用I/O端口(6)中斷標志寄存器PxIFG該寄存器有8個標志位,它們含有相應引腳是否有待處理的中斷信息,即相應引腳是否有中斷請求。Bit=0:沒有中斷請求Bit=1:有中斷請求(7)功能選擇寄存器PxSELPxSEL寄存器中的每一位選擇對應管腳的功能——普通I/O功能或者外圍模塊功能。Bit=0:普通I/O口功能Bit=1:外圍模塊功能通用I/O端口3.1.2端口P3、P4、P5和P6這些端口無中斷能力,其余功能與P1和P2口一樣,能實現(xiàn)輸入/輸出功能和外圍模塊功能。每個端口有4個寄存器供用戶使用。用戶可通過這4個寄存器對它們進行訪問和控制。每個端口的4個寄存器分別為:功能選擇寄存器PxSEL、輸入/輸出方向寄存器PxDIR、輸入寄存器PxIN、輸出寄存器PxOUT。具體用法同P1、P2端口。通用I/O端口3.1.3端口應用端口是單片機中最常用的外設資源。一般在程序的初始化階段對端口進行配置,配置時,先配置功能選擇寄存器PxSEL;若為I/O端口功能,則繼續(xù)配置方向寄存器PxDIR;若為輸入,則繼續(xù)配置中斷使能寄存器PxIE;若允許中斷,則繼續(xù)配置中斷觸發(fā)沿選擇寄存器PxIES。通用I/O端口3.2
中斷系統(tǒng)3.2.1中斷分類3.2.2中斷向量表3.2.3中斷相關寄存器的設置3.2.4中斷的優(yōu)先級別3.2.5中斷的處理過程3.2.6可屏蔽中斷程序設計目錄中斷是MSP430微處理器的一大特色,有效地利用中斷可以簡化程序和提高執(zhí)行效率。MSP430的幾乎每個外圍模塊都能夠產(chǎn)生中斷,為MSP430針對事件(即外圍模塊產(chǎn)生的中斷)進行的編程打下基礎。MSP430在沒有事件發(fā)生時進入低功耗模式,事件發(fā)生時,通過中斷喚醒CPU,事件處理完畢后,CPU再次進入低功耗狀態(tài)。由于CPU的運算速度和退出低功耗的速度很快,所以在應用中,CPU大部分時間都處于低功耗狀態(tài)。這是MSP430能夠如此節(jié)省電能的重要原因之一。3.2.1中斷分類MSP430的中斷分為3種:系統(tǒng)復位、不可屏蔽中斷、可屏蔽中斷。系統(tǒng)復位指向中斷向量表(表3-1)的最高地址0xFFFE。非屏蔽中斷和可屏蔽中斷根據(jù)能否被SR寄存器中的全局中斷使能位GIE禁用來區(qū)分,非屏蔽中斷不受GIE的控制,具備獨立的中斷使能;可屏蔽中斷除了受本身的中斷使能控制,還接受GIE控制。中斷系統(tǒng)(1)系統(tǒng)復位也稱不可屏蔽中斷(Nonmaskableinterrupts)--不能被總控位GIE和其分控位IE位屏蔽的中斷,其中斷向量為0xFFFEH。(2)不可屏蔽中斷NMI--不能被總控位GIE屏蔽,但能被自己的分控位IE位屏蔽的中斷。不可屏蔽的中斷源有以下三種:當配置為NMI模式時,RST/NMI引腳的一個邊沿。上電時,RST/NMI引腳配置為復位模式。在看門狗控制寄存器WDTCTL中選擇RST/NMI引腳的功能。如果RST/NMI引腳被設置為復位功能,RST/NMI引腳處于低電平時CPU將一直保持復位狀態(tài)。當轉(zhuǎn)為高電平時,CPU從存儲在復位向量OFFFEH中的地址開始運行,RSTIFG將被置位。如果RST/NMI引腳被用戶軟件配置為不可屏蔽中斷,且NMIIE位被置位時,由WDTNMIES選擇的信號邊沿到來產(chǎn)生NMI中斷。RST/NMI的標志位NMIIFG將會被置1。中斷系統(tǒng)振蕩器失效。振蕩器錯誤信號對晶振失效的情形發(fā)出警告。置位OFIE將能夠使振蕩器發(fā)生錯誤時產(chǎn)生一個NMI中斷。NMI中斷服務程序可以檢查OFIF位來判斷NMI中斷是否由振蕩器引起。FLASH存儲器的非法訪問中斷允許時,對FLASH存儲器進行了非法訪問。在FLASH存取沖突發(fā)生時,ACCVIFG位將會被置1。如果ACCVIE位為1時,就產(chǎn)生一個NMI中斷。NMI中斷服務程序可以檢查ACCVIFG位來判斷NMI中斷是否由FLASH存取沖突引起。(3)可屏蔽中斷--能被總控位GIE和自己的分控位IE位屏蔽的中斷。中斷系統(tǒng)MSP430具備大量的可屏蔽中斷,由具有中斷能力的外設所產(chǎn)生,比如,定時器、ADC、DMA、UART、WDT、I/O、比較器等都具備中斷功能,每一個可屏蔽中斷源可以通過中斷使能位單獨禁止,也可以通過狀態(tài)寄存器(SR)中的總中斷使能位(GIE)禁止。不同的可屏蔽中斷優(yōu)先級可根據(jù)中斷向量表決定,G2系列的MSP430中斷向量表如表3-1所示??善帘沃袛嗟闹袛嘞蛄勘韽?xFFFA地址開始向低地址擴展,地址越高的中斷向量表所對應的中斷優(yōu)先級越高。多個中斷請求發(fā)生時,MSP430選擇擁有最高優(yōu)先級的中斷響應。響應中斷時,MSP430會將不可屏蔽中斷控制位SR.GIE復位,因此,一旦響應了中斷,即使有優(yōu)先級更高的可屏蔽中斷出現(xiàn),MSP430也不會中斷當前響應的中斷,去響應另外的中斷。SR.GIE復位不影響不可屏蔽中斷,所以仍可以接受不可屏蔽中斷的中斷請求。中斷系統(tǒng)GIE在狀態(tài)寄存器SR(StatusRegister)中的位置及設置規(guī)則如下:GIE:可屏蔽中斷屏蔽位(GeneralInterruptEnableBit)置位1:允許所有可屏蔽中斷復位0:禁止所有可屏蔽中斷15~9876543210保留VSCG1SCG0OSCOFFCPUOFFGIENZC中斷系統(tǒng)3.2.2中斷向量表每個中斷向量在中斷向量表里面占據(jù)一個2Byte空間的表項,這個2Byte的空間用來存儲對應中斷服務函數(shù)的首地址,CPU根據(jù)中斷向量表里的地址跳轉(zhuǎn)到中斷服務函數(shù)。仔細觀察中斷向量表可以看到,一些中斷向量對應于多個中斷源。例如,地址為0xFFEAh的Timer_A3中斷,當TACCR1中斷標志位CCIFGs置位或者TAIFG置位都會跳轉(zhuǎn)到該向量。又如具備中斷功能的P1和P2端口,端口中的任意一個管腳發(fā)生中斷都會跳轉(zhuǎn)到對應的中斷向量。這種中斷就叫做多源中斷。對于多源中斷,中斷源中任意一個中斷發(fā)生都會跳轉(zhuǎn)到公用的中斷向量表,這時需要通過中斷標志位區(qū)別具體的中斷源。表3-1為MSP430F15x,MSP430F16x,MSP430F161x系列中斷向量表。中斷系統(tǒng)表3-1MSP430F15x、MSP430F16x、MSP430F161x系列中斷向量表中斷源中斷標志系統(tǒng)中斷中斷向量優(yōu)先級上電WDTIFG復位0FFFEh15外部復位KEYV最高看門狗
FLASH口令
NMINMIIFG不可屏蔽中斷0FFFCh14晶體振蕩器故障OFIFGFLASH存儲器非法訪問ACCVIFGTimer_B7TBCCR0CCIFG可屏蔽中斷0FFFAh13Timer_B7TBCCR1toTBCCR6CCIFGs,TBIFG可屏蔽中斷0FFF8h12比較器ACAIFG可屏蔽中斷0FFF6h11看門狗定時器WDTIFG可屏蔽中斷0FFF4h10USART0接收URXIFG0可屏蔽中斷0FFF2h9USART0發(fā)送UTXIFG0可屏蔽中斷0FFF0h8I2C發(fā)送/接收I2CIFG中斷系統(tǒng)ADC12ADC12IFG可屏蔽中斷0FFEEh7Timer_A3TACCR0CCIFG可屏蔽中斷0FFECh6Timer_A3TACCR1and可屏蔽中斷0FFEAh5TACCR2CCIFGs,TAIFGI/O端口P1P1IFG.0toP1IFG.7可屏蔽中斷0FFE8h4USART1接收URXIFG1可屏蔽中斷0FFE6h3USART1發(fā)送UTXIFG1可屏蔽中斷0FFE4h2I/O端口P2P2IFG.0-P2IFG.7可屏蔽中斷0FFE2h1DAC12DAC12_0IFGDAC12_1IFG可屏蔽中斷0FFE0h0DMADMA01FGDMA1IFG最低
DMA2IFG
中斷系統(tǒng)3.2.3中斷相關寄存器的設置如3.1.1節(jié)所述,MSP430F169端口P1和P2的全部8位都可實現(xiàn)外部事件的中斷處理。每一個I/O位都可獨立編程。P1與P2完全相同,對P1和P2模塊分配一個單獨向量。引腳P1.0至P1.7和P2.0至P2.7可用作中斷源,向量包含因中斷事件引發(fā)裝入PC的存儲器地址。P1和P2口分別有7個寄存器用于控制I/O引腳:
輸入寄存器
輸出寄存器
方向寄存器(PxDIR)
中斷標志寄存器(PxIFG)中斷觸發(fā)沿選擇寄存器(PxIES)中斷使能寄存器(PxIE)功能選擇寄存器(PxSEL)中斷系統(tǒng)在進行中斷操作時,不僅需要設置功能選擇寄存器PxSEL和方向選擇寄存器PxDIR,還需要設置其中3個與中斷相關的寄存器:(1)中斷標志寄存器PxIFG中斷標志寄存器有8個標志位,它們含有相應引腳是否有待處理的中斷信息,即相應相應引腳是否有中斷請求。位76543210R/WPxIFG.7PxIFG.6PxIFG.5PxIFG.4PxIFG.3PxIFG.2PxIFG.1PxIFG.0初始值00000000PxIFG.y=0:y引腳無中斷申請PxIFG.y=1:y引腳有中斷申請中斷系統(tǒng)(2)中斷觸發(fā)沿選擇寄存器PxIES有些中斷不設置中斷標志,這類中斷只要中斷條件滿足(邊沿到達),就會一直向MCU發(fā)出中斷申請。這種中斷有其特殊性,不產(chǎn)生中斷標志,因此不能被“掛起”。如果由于等待的時間過長而得不到響應,則可能會因為中斷條件結(jié)束(邊沿取消)而失去一次服務機會。如果允許Px口的某個引腳中斷,還需定義該引腳的中斷觸發(fā)沿。位76543210R/WPxIES.7PxIES.6PxIES.5PxIES.4PxIES.3PxIES.2PxIES.1PxIES.0初始值00000000PxIES.y=0:y引腳上升沿作為中斷申請PxIES.y=1:y引腳下降沿作為中斷申請中斷系統(tǒng)(3)中斷使能寄存器PxIEPxIE寄存器的每一位使能與對應的引腳相聯(lián)系。中斷允許使能寄存器清“0”是為了防止未開通使用的中斷源由于意外情況向CPU申請中斷。位76543210R/WPxIE.7PxIE.6PxIE.5PxIE.4PxIE.3PxIE.2PxIE.1PxIE.0初始值00000000PxIE.y=0:禁止響應y引腳上的中斷PxIE.y=1:允許響應y引腳上的中斷中斷系統(tǒng)綜上所述,作為外部中斷申請的端口P1和P2引腳,應設置下列相應寄存器:設置功能選擇寄存器PxSEL.y對應位為0(基本I/O功能);設置方向選擇寄存器PxDIR.y對應位為0(輸入);設置PxIES.y選擇中斷源有效信號類型是上升還是下降沿;設置PxIE.y打開分中斷允許位;設置GIE=1打開總中斷允許位。注意:在中斷程序中,由于端口的8個引腳共用一個中斷向量,當有多個引腳做中斷源時,需利用PxIFG判斷產(chǎn)生中斷的中斷源引腳;在中斷子程序中應清除PxIFG相應的中斷標志位。中斷系統(tǒng)還有一些特殊功能的寄存器用來設置內(nèi)部中斷:中斷使能寄存器1和2、中斷標志寄存器1和2,寄存器各位的含義如下:(1)中斷使能寄存器1和2Address765432100hUTXIE0URXIE0ACCVIENMIIE
OFIEWDTIE
rw-0rw-0rw-0rw-0rw-0rw-0rw-0rw-0WDTIE:看門狗定時器中斷使能OFIE:振蕩器默認中斷使能NMIIE:不可屏蔽中斷使能ACCVIE:Flash存儲器訪問違規(guī)中斷使能URXIE0:USART0:UART和SPI接收中斷使能UTXIE0:USART0:UART和SPI發(fā)送中斷使能中斷系統(tǒng)Address7654321001h
UTXIE1URXIE1
rw-0rw-0
URXIE1:USART1:UART和SPI接收中斷使能UTXIE1:USART1:UART和SPI發(fā)送中斷使能(2)中斷標志寄存器1和2Address7654321002hUTXFG0URXIFG0
NMIIFG
OFIFGWDTIFG
rw-0rw-0rw-0rw-0rw-0rw-0rw-0rw-0WDTIFG:設置看門狗定時器屬性或(設置看門狗定時器溢出(看門狗模式)或者違反安全密鑰重置電源,或RST/
NMI引腳復位模式復位條件)。中斷系統(tǒng)OFIFG:振蕩器故障標志設置
NMIIFG:設置RST/NMI引腳URXIFG0:USART0:UART和SPI接收標志UTXIFG0:USART0:UART和SPI發(fā)送標志Address7654321003h
UTXIFG1URXIFG1
rw-0rw-0
URXIFG1:USART1:UART和SPI接收標志UTXIFG1:USART1:UART和SPI發(fā)送標志中斷系統(tǒng)3.2.4中斷的優(yōu)先級別在MSP430中,不同的中斷有各自固定的中斷優(yōu)先級。當有多個中斷同時請求時,MSP430CPU將響應優(yōu)先級最高的中斷請求。在MSP430中,中斷優(yōu)先級僅用于裁決同時產(chǎn)生的中斷請求。如果在某一中斷服務子程中置位GIE(即允許嵌套),則任何中斷請求均將中斷正在執(zhí)行的中斷服務子程(中斷嵌套),而不管中斷的優(yōu)先級如何。即在允許嵌套的情況下,低優(yōu)先級的中斷請求可以中斷高優(yōu)先級的中斷服務子程的運行,同級的中斷也可以相互嵌套。如圖3-4所示,越靠近CPU/NMIRS,中斷優(yōu)先級越高。中斷系統(tǒng)圖3-4中斷優(yōu)先級排列順序圖中斷系統(tǒng)3.2.5中斷的處理過程微控制器使用過程中一些突發(fā)的程序跑飛問題,很多時候都是由于沒有正確地處理中斷造成的。中斷發(fā)生的先決條件是對中斷使能位使能,非屏蔽中斷要求其獨立的中斷使能開啟;可屏蔽中斷要求全局中斷使能和自身中斷使能同時啟用。當中斷請求到達,CPU從接受中斷請求到開始執(zhí)行中斷服務函數(shù)的第一條指令需要5~6個CPU周期。前面介紹過MSP430有兩種CPU,分別是CPU和CPUX。其中CPU處理過程耗費6個CPU周期,而CPUX處理過程耗費5個CPU周期。中斷請求接收后,會按照以下順序處理:CPU執(zhí)行完當前指令。中斷和CPU一般不是同步的或者CPU正在執(zhí)行的指令不是單周期指令,所以CPU先處理完當前指令;指向下一條CPU指令的PC被壓棧;中斷系統(tǒng)狀態(tài)寄存器SR壓棧。步驟2和步驟3的目的是保護現(xiàn)場,為中斷服務函數(shù)執(zhí)行完之后恢復之前運行狀態(tài)做準備。選擇最高優(yōu)先級的中斷進行服務。中斷優(yōu)先級在這個時候就會發(fā)揮作用;單源中斷標志位會被自動清零,多源中斷標志位需要軟件清零。因為具備I/O中斷功能的P1、P2端口中斷標志位屬于多源中斷標志位,其中斷標志位不會自動清零,需要在代碼中手動清零;狀態(tài)寄存器SR被清零,將會終止任何低功耗狀態(tài),并且全局中斷使能(GIE)被關閉。MSP430在接收了中斷后由于SR的清零操作自動關閉全局中斷使能,就是說默認狀態(tài)下是不允許中斷嵌套的,若用到中斷嵌套的話需要在中斷服務函數(shù),打開全局中斷;中斷向量中存儲的中斷服務函數(shù)地址被裝載到PC中開始執(zhí)行中斷服務函數(shù)。中斷系統(tǒng)中斷服務函數(shù)的最后一條匯編指令是RETI,表示從中斷服務函數(shù)中返回。中斷返回過程如圖3-5所示。MSP430的返回過程比進入過程要快一些,主要是因為返回過程的時候CPU指令已經(jīng)執(zhí)行完。返回過程對于CPU需要5個CPU周期,對于CPUX需要3個CPU周期。按照下面的順序執(zhí)行返回操作:狀態(tài)寄存器SR出棧,SR的設置會立即生效。如果響應中斷前CPU處于低功耗模式,則仍然恢復低功耗模式。PC指針出棧,接著執(zhí)行中斷前的代碼。響應中斷時,單中斷源標志中斷請求的中斷請求標志位自動復位。多中斷源標志位則需要軟件進行復位。在使用中斷時,如果某個中斷開啟,則一定要寫中斷服務函數(shù),即便中斷服務函數(shù)為空操作。這個過程是對中斷向量賦值,避免中斷發(fā)生后,程序跑飛。中斷處理過程如圖3-5所示。中斷系統(tǒng)(a)進入中斷服務程序執(zhí)行示意圖(b)從中斷返回執(zhí)行順序示意圖圖3-5中斷處理過程中斷系統(tǒng)注意:若有多個中斷同時請求,CPU先響應優(yōu)先級最高的中斷請求;當中斷發(fā)生時,MSP430內(nèi)部對應有一個標志被置位,中斷程序之后,應確保該標志
的值已清零,否則被當成又一次的中斷申請;對于單一中斷標志的中斷請求,CPU會自動清零該中斷標志;對于有多個中斷標志的中斷源請求,用戶在中斷子程中用這些標志判斷產(chǎn)生的具體子中斷源,中斷標志的清零由用戶在使用完后編程清零。中斷系統(tǒng)3.2.6可屏蔽中斷程序設計(1)編程步驟編程前應了解可屏蔽硬中斷的響應過程,了解相關的寄存器和引腳與中斷響應過程的關系。主程序--做好相關設置:中斷源發(fā)出中斷申請時CPU能夠響應的準備工作。主程序流程如圖3-6所示。中斷程序--處理與中斷源有關的關鍵任務。中斷服務子程序流程如圖3-7所示。中斷系統(tǒng)圖3-6主程序流程圖3-7中斷程序流程中斷系統(tǒng)C語言中斷程序結(jié)構(gòu):_interruptvoidintName(void){............}定義了一個函數(shù)名為intName的中斷程序結(jié)構(gòu)上與普通函數(shù)的區(qū)別是:使用了關鍵字__interrupt;反匯編中斷程序返回的語句是RETI,而不是RET。設置中斷向量--根據(jù)中斷源在中斷向量表的相應位置,設置中斷向量。根據(jù)中斷源確定中斷類型號N,將中斷程序的入口地址放在中斷向量表0FFE0H+N*2處。參考表3-1MSP430F15x,MSP430F16x,MSP430F161x系列中斷向量表。中斷系統(tǒng)C語言程序設置中斷向量方法:在中斷程序前使用#pramavetor=偏址語句,將中斷程序的入口地址放到0xFFE0H+偏址的中斷向量表中。#pragmavector=N*2//使用中斷類型號計算偏址__interruptvoidintName(void){ ......}#pragmavector=PORT1_VECTOR//使用符號表示的中斷偏址__interruptvoidintName(void){ ......}中斷系統(tǒng)(2)中斷程序舉例中斷編程舉例(以P1.0上的中斷為例),用C語言編寫程序。
//P1.3接入外部信號,觸發(fā)中斷后驅(qū)動P1.0#include<msp430.h>intmain(void){
WDTCTL=WDTPW+WDTHOLD;
P1DIR|=BIT0;
//設置P1.0口為輸出口
P1IE|=
BIT3;
//P1.3中斷使能
P1IES|=BIT3;
//P1.3高低電平觸發(fā)
P1REN|=BIT3; //使能P1.3內(nèi)部上拉電阻
P1IFG&=~BIT3;
//清除P1.3口的中斷標志寄存器__bis_SR_register(LPM4_bits+GIE);
//進入低功耗模式}中斷系統(tǒng)//端口P1的中斷服務程序#pragmavector=PORT1_VECTOR__interruptvoidPort_1(void){P1OUT^=BIT0;
//驅(qū)動P1.0
P1IFG&=~BIT3;
//
清除P1.3口的中斷標志寄存器}中斷系統(tǒng)3.3定時器3.3.1看門狗定時器3.3.216位定時器A目錄3.3.1看門狗定時器WDT的主要功能是當程序發(fā)生異常時使系統(tǒng)重啟。如果所選擇的定時時間到了,則產(chǎn)生系統(tǒng)復位。在應用中如不需要此功能,可配置成通用定時器并且當?shù)竭_到預定時間時可產(chǎn)生中斷。WDT特性包括:8種軟件可選的定時時間看門狗工作模式定時器工作模式帶密碼保護的WDT控制寄存器可選擇時鐘源允許關閉以降低功耗時鐘故障保護定時器看門狗定時器原理圖如圖3-8所示。圖3-8看門狗定時器原理圖定時器3.3.216位定時器ATimer_A是一個
16位的定時計數(shù)器,同時多達7個捕獲/比較寄存器。Timer_A支持多路捕獲/比較功能,PWM輸出以及定時功能。Timer_A也有擴展向量功能。中斷可以來自定時器溢出或者任意的捕獲/比較寄存器。Timer_A特征包括:4種模式的異步16位定時/計數(shù)器;可選擇配置的時鐘源;多達7個可配置的捕獲/比較寄存器;可配置的PWM輸出功能;異步輸入和同步鎖存;對所有Timer_A中斷快速響應的中斷向量寄存器。定時器Timer_A的框圖如圖3-9所示。圖3-9Timer_A框圖定時器如圖3-9,定時器A主要包含的模塊如下:(1)16位定時計數(shù)器16位定時/計數(shù)寄存器,TAR,隨著每個時鐘信號的上升沿增或者減(取決與操作模式)。TAR可以被軟件讀或者寫。此外,當定時器在溢出時,將產(chǎn)生中斷。TAR可以被TACLR位清除。當計數(shù)器工作在增/減計數(shù)模式時,置位TACLR也可以清除時鐘分頻器和計數(shù)方向。(2)時鐘源的選擇和分頻定時器的時鐘TACLK可以選擇ACLK,SMCLK或者來自外部的TACLK。時鐘源由TASSELx位來選擇。選擇的時鐘源可以直接得到,或者通過IDx位經(jīng)過2、4、8分頻得到。當TACLR置位時,分頻器復位。定時器(3)定時器模式控制MCx模式
說明00停止模式
定時器停止01增計數(shù)模式
定時器重復地從0計數(shù)到TACCR010連續(xù)計數(shù)模式
定時器器重復地從0計數(shù)到0x0FFFFH11增減計數(shù)模式
定時器重復地從0增計數(shù)到TACCR0減計數(shù)到0增計數(shù)模式增計數(shù)模式用于計數(shù)周期不是0x0FFFFH的情況。定時器重復的計數(shù)到寄存器TACCR0的值,而TACCR0取決與計數(shù)周期,正如圖3-10所示。定時器的計數(shù)周期為TACCR0+1。當定時器的值與TACCR0相等時,定時器重新從零開始計數(shù)。當定時器TAR的值大于TACCR0時,再選擇增計數(shù)模式,定時器TAR立即重新從0開始計數(shù)。定時器圖3-10增計模式下計數(shù)過程當定時器計數(shù)到
TACCR0
時,中斷標志
TACCR0CCIFG置位。當計數(shù)器由
TACCR0計數(shù)到0時,中斷標志
TAIFG
置位。圖3-11表示了標志位的置位情況。圖3-11增計模式下中斷標志位定時器當定時器正在運行時改變TACCR0,如果新的計數(shù)周期大于或者等于舊的計數(shù)周期,定時器將一直計數(shù)到新的計數(shù)周期。如果新的計數(shù)周期小于舊的計數(shù)周期,那么定時器TAR即復位回歸到0。但是,在定時器回到0之前會多計數(shù)一步。連續(xù)計數(shù)模式在連續(xù)計數(shù)模式中,定時器重復地計數(shù)到0x0FFFFH,然后從0開始重新計數(shù),如圖3-12所示。其它捕獲/比較寄存器和捕獲/比較寄存器TACCR0工作方式一樣。圖3-12連續(xù)計數(shù)模式計數(shù)器定時器當定時器從0FFFFh計數(shù)到0時,中斷標志TAIFG置位,圖3-13表示了標志位的置位情況。圖3-13連續(xù)計數(shù)模式標志位的置位情況定時器連續(xù)計數(shù)模式可用來產(chǎn)生獨立的時間間隔和輸出頻率。每個時間間隔完成時,產(chǎn)生一個中斷。在中斷服務子程序里,將下一個時間間隔的值寫入TACCRx寄存器。圖3-14顯示了兩個獨立的時間間隔t0和t1寫入各自的捕獲/比較寄存器的情況。在此應用中,時間間隔由硬件控制,而不是軟件,同時也不受中斷延時的影響。使用捕獲/比較寄存器,最多可以產(chǎn)生
7
個獨立的時間間隔或者輸出頻率。圖3-14連續(xù)計數(shù)模式的時間間隔定時器定時器時間間隔也可以由其它模式產(chǎn)生,那時TACCR0作為計數(shù)周期寄存器。由于舊的TACCRx與新的定時周期之和比TACCR0的值大,因此它們的處理會復雜得多。當以前的TACCRx值加上tx比TACCR0值大時,那么必須減去TACCR0的值以獲取正確的時間間隔。增減計數(shù)模式增減計數(shù)模式在定時周期不是0x0FFFFH且需要產(chǎn)生對稱脈沖的情況下使用。在該模式下,定時器重復地增計數(shù)到寄存器TACCR0的值,然后反向減計數(shù)到0,如圖3-15所示。計數(shù)周期是TACCR0值的2倍。圖3-15增減計數(shù)模式定時器計數(shù)方向是固定的。這就使定時器停止后重新啟動,定時器將按照停止時計數(shù)器的計數(shù)方向重新計數(shù)。如果不需要這樣,TACLR位必須置位,以清除計數(shù)方向。同時TACLR位也將清除TAR的值和TACLK分頻器。在增減計數(shù)模式下,中斷標志TACCR0CCIFG和TAIFG在一個周期內(nèi)僅置位一次,且相隔1/2個計數(shù)周期。當定時器TAR的值從TACCR0-1增計數(shù)到TACCR0時,中斷標志TACCR0CCIFG置位,當定時器從0x0001H減計數(shù)到0x0000H時,中斷標志TAIFG置位。圖3-16表示標志位的置位情況。圖3-16增減計數(shù)模式標志位的置位定時器當計數(shù)器正在運行時,改變TACCR0的值,如果定時器正在減計數(shù),則定時器將會繼續(xù)減到0,定時器減到0后,新的周期才有效。當定時器正在增計數(shù),新的計數(shù)周期大于或者等于原來的計數(shù)周期,或者比當前的計數(shù)值大,定時器會增計數(shù)到新的計數(shù)周期,再反向計數(shù)。當計數(shù)器正在增計數(shù),新的計數(shù)周期小于當前的計數(shù)值,定時器立即開始減計數(shù)。但是,在定時器減計數(shù)之前有一個額外的計數(shù)。增減計數(shù)模式的使用增減計數(shù)模式支持在輸出信號之間有死區(qū)時間的應用(見Timer_A輸出章節(jié))。例如,為了避免過載情況,驅(qū)動一個H—橋的兩路輸出不能同時為高。圖3-17展示本例的tdead為:tdead=ttimer×(TACCR1–TACCR2)其中:Tdead——兩路同時輸出時沒有反映的時間Ttimer——定時器的時鐘周期定時器TACCRx——捕獲/比較寄存器x的值TACCRx寄存器沒有緩沖,寫入時立即更新。因此,任何需要的死區(qū)時間都不會自動保持。圖3-17自動模式的輸出單元定時器(4)捕獲/比較模塊在目前的Timer_A中,有三個或者五個相同的捕獲/比較模塊。每個模塊都可用于捕獲定時器的數(shù)據(jù)或者產(chǎn)生定時間隔。捕獲模式:當CAP=1時,捕獲模式被選擇。捕獲模式用來記錄事件發(fā)生的時間。它可用于速度的計算或者時間的測量。捕獲輸入CCIxA和CCIxB由CCISx位選擇是與外部的引腳相連還是來自內(nèi)部的信號。CMx位選擇捕獲輸出信號的觸發(fā)沿,上升沿、下降沿或者兩者都捕獲。在所選擇的輸入信號的觸發(fā)沿,一次捕獲發(fā)生。如果一次捕獲發(fā)生:定時器的值被復制到TACCRx寄存器中斷標志CCIFG置位輸入信號的電平可以通過CCI位在任意時刻讀取。MSP430x1xx系列設備可能由不同的信號連接CCIxA和CCIxB??梢酝ㄟ^設置器件的datasheet連接這些信號。定時器捕獲信號和定時器時鐘可能是異步的,這將會引起時間競爭。置位SCS位將會在一下定時器時鐘內(nèi)使捕獲與定時器時鐘同步。建議置位SCS位使捕獲信號和定時器時鐘同步。圖3-18中說明了這一點。圖3-18捕獲信號(SCS=1)定時器定時器在任一捕獲/比較寄存器中,當在第一次捕獲的值讀出之前,第二次捕獲發(fā)生,將會產(chǎn)生一個溢出邏輯。當這種情況發(fā)生時,COV位被置位,如圖3-19所示。COV位必須通過軟件清除。圖3-19捕獲循環(huán)定時器(5)輸出單元每個捕獲/比較模塊都包含一個輸出單元。輸出單元產(chǎn)生的輸出信號為PWM信號。每個輸出單元有8個工作模式,可以產(chǎn)生基于EQU0和EQUx的各種信號。輸出模式取決于OUTMODx位,如表3-2所述。除模式0外,其它的輸出都在定時器時鐘上升沿時發(fā)生變化。輸出模式2、3、6和7不適合輸出單元0,因為EQUx=EQU0。表3-2輸出模式OUTMODxModeDescription0輸出輸出信號取決與寄存器CCTLx中的OUTx位。當OUTx更新時輸出信號立即更新。1置位輸出信號在定時器計數(shù)到TACCRx時置位,并保持置位直到定時器復位或者另外的輸出模式被選擇并影響輸出為止。定時器10翻轉(zhuǎn)/復位輸出在定時器計數(shù)到TACCRx時翻轉(zhuǎn),在定時器計數(shù)到TACCR0時復位。11置位/復位輸出在定時器計數(shù)到TACCRx時置位,在定時器計數(shù)到TACCR0時復位。100翻轉(zhuǎn)輸出在定時器計數(shù)到TACCRx時翻轉(zhuǎn),輸出周期是定時器周期的兩倍。101復位輸出在定時器計數(shù)到TACCRx時復位,并保持復位直到另外的輸出模式被選擇并影響輸出為止。110翻轉(zhuǎn)/置位輸出在定時器計數(shù)到TACCRx時翻轉(zhuǎn),在定時器計數(shù)到TACCR0時置位111復位/置位輸出在定時器計數(shù)到TACCRx時復位,在定時器計數(shù)到TACCR0時置位。定時器輸出舉例1:定時器處于增計數(shù)模式當定時器計數(shù)到TACCRx或者從TACCR0計數(shù)到0時,OUTx按選定的輸出模式發(fā)生變化。如圖3-20所示例子,該例使用了TACCR0和TACCR1。圖3-20輸出舉例--定時器處于增計數(shù)模式定時器輸出舉例2:定時器處于連續(xù)計數(shù)模式當定時器計數(shù)到TACCRx和TACCR0時,OUTx按選定的輸出模式發(fā)生變化。如圖3-21所示例子,該例使用了TACCR0和TACCR1。圖3-21輸出舉例--定時器處于連續(xù)計數(shù)模式定時器輸出舉例3:定時器處于增減計數(shù)模式當定時器在任意計數(shù)方向上等于TACCRx和TACCR0時,OUTx按選定的輸出模式發(fā)生變化。如圖3-22所示例子,該例使用了TACCR0和TACCR1。圖3-22輸出舉例——定時器處于增減計數(shù)模式定時器TACCR0CCIFG擁有Timer_A中斷最高的優(yōu)先級,并且有一個專用的中斷向量,如圖3-23所示。當進入TACCR0中斷服務程序時,TACCR0CCIFG標志自動復位。圖3-23捕獲/比較TACCR0中斷標志定時器3.4通用串行通信模塊3.4.1通信系統(tǒng)簡介3.4.2MSP430單片機的串行通信功能3.4.3USART模塊3.4.4USCI模塊目錄3.4.1通信系統(tǒng)簡介現(xiàn)代基于單片機的系統(tǒng)的重要指標就是其通信能力,即和周圍環(huán)境中其他系統(tǒng)交換信息的能力。通信接口可以更新固件或加載本地參數(shù),還可以在分布處理中交換應用程序的信息。數(shù)字設備之間的通信分為并行通信和串行通信。在并行通信系統(tǒng)中,發(fā)送的數(shù)值的每位都具有獨立的信號線,多條線上的邏輯電平共同形成了要發(fā)送的信息的值。如圖3-24所示。圖3-24ASCII字符W并行傳輸通用串行通信模塊在串行通信系統(tǒng)中,物理發(fā)送介質(zhì)只需要一條信號線。發(fā)送器根據(jù)發(fā)送器和接收器之間指定的速率發(fā)送比特序列。要使通信雙方同步,還需要一些額外的信息。起始位:加到要發(fā)送信息的開頭,以識別一個新數(shù)據(jù)的開始。停止位:加到要發(fā)送信息的尾部,表示傳輸結(jié)束。圖3-25給出了一個ASCII字符W串行傳輸?shù)睦?。圖3-25ASCII字符W串行傳輸通用串行通信模塊兩種傳輸模式的一般特征如表3-3所示。串行通信比并行通信應用廣泛,尤其是目前串行通信的傳輸速率已大幅提升,更適合大多數(shù)應用,因此本章重點介紹串行通信模塊。表3-3串行傳輸和并行傳輸?shù)膬?yōu)缺點特征并行串行總線每位一條線一條線序列一個字的所有位同步傳輸序列位序列傳輸率高低總線長度短距離長、短距離皆可花費高低重要特征要求不同位同步傳輸同步傳輸需要起始位和停止位,異步通信需要其他位用來同步通用串行通信模塊兩種典型的串行傳輸模式如下:異步:發(fā)送器確定傳輸速率(波特率),接收器必須知道該速率,并在檢測到起始位后立即和發(fā)送器同步。異步通信只需要一個發(fā)送器、一個接收器和一根線,是實現(xiàn)串行通信最簡單、廉價的方式。異步通信中通信設備之間的時鐘是相互獨立的,因此,即使兩個時鐘在某一時刻同步了,也不能保證過一些周期之后,它們還是同步的。同步:接收器和發(fā)送器之間有一個同步時鐘信號。在同步通信中,有一個設備為主設備,其他設備作為從設備。主設備產(chǎn)生時鐘信號,其他設備根據(jù)這個時鐘加載/卸載發(fā)送和接收寄存器。在這種通信模式下,能夠?qū)崿F(xiàn)同時發(fā)送和接收。在同步通信中,發(fā)送者和接受者通過時鐘信號或數(shù)據(jù)流中的編碼信號進行同步。通用串行通信模塊3.4.2MSP430單片機的串行通信功能串口是系統(tǒng)與外界聯(lián)系的重要手段,在嵌入式系統(tǒng)開發(fā)和應用中,經(jīng)常需要使用上位機實現(xiàn)系統(tǒng)調(diào)試及現(xiàn)場數(shù)據(jù)的采集與控制。一般使用上位機本身配置的串行口,通過串行通信技術(shù)和嵌入式系統(tǒng)進行通信連接。MSP430系列單片機的每一種型號都能實現(xiàn)串行通信功能,可通過以下兩種方式:通過串行通信硬件直接實現(xiàn)。即由串行同步/異步通信模塊(USART)直接實現(xiàn),通過配置相應的寄存器,由硬件自動實現(xiàn)數(shù)據(jù)的移入和移出,完成串行通信的功能。采用這種方式完成串口通信具有系統(tǒng)穩(wěn)定可靠,不需要占用CPU時間的優(yōu)點。通過定時器軟件實現(xiàn)。通過定時器模塊的支持實現(xiàn)串口通信功能,采用這種方式的優(yōu)勢是成本低,實時性好,但是需要占用一定的CPU時間。通用串行通信模塊3.4.3USART模塊異步通信在不發(fā)送數(shù)據(jù)時,數(shù)據(jù)信號線上總是呈現(xiàn)高電平狀態(tài),稱為空閑狀態(tài)(又稱MARK狀態(tài))。當有數(shù)據(jù)發(fā)送時,信號線變成低電平,并持續(xù)一位的時間,用于表示發(fā)送字符的開始,該位稱為起始位,也稱SPACE狀態(tài)。起始位之后,在信號線上依次出現(xiàn)待發(fā)送的每一位字符數(shù)據(jù),并且按照先低位后高位的順序逐位發(fā)送。采用不同的字符編碼方案,待發(fā)送的每個字符的位數(shù)不同,在5、6、7或8位之間選擇。數(shù)據(jù)位的后面可以加上一位奇偶校驗位,也可以不加,由編程指定。最后傳送的是停止位,一般選擇1位、1.5位或2位。MSP430串行異步通信模式通過兩個引腳,即接收引腳URXD和發(fā)送引腳UTXD與外界相連。通用串行通信模塊模塊主要包含四個部分(如圖3-26):(1)用來控制串行通信數(shù)據(jù)接收和發(fā)送速率的波特率部分;(2)用來接收串行輸入的接收部分,在接收時,當移位寄存器將接收來的數(shù)據(jù)流組合滿一個字節(jié)后,就保存到接收緩存URXBUF中;(3)用來發(fā)送串行輸出數(shù)據(jù)的發(fā)送部分,在發(fā)送時,將發(fā)送緩存UTXBUF內(nèi)的數(shù)據(jù)逐位送到發(fā)送端口。發(fā)送和接收兩個移位寄存器的移位時鐘都是波特率發(fā)生器產(chǎn)生的時鐘信號BITCLK;(4)用來完成并/串轉(zhuǎn)換和串/并轉(zhuǎn)換的接口部分。通用串行通信模塊3-26MSP430USART模塊配置為異步模式時的結(jié)構(gòu)通用串行通信模塊3.4.3.1寄存器陣列(1)UxCLT控制寄存器PENA校驗允許位。允許校驗,接收端接收校驗,發(fā)送端發(fā)送校驗。在地址位多機模式中,地址位包含校驗操作。0:禁止校驗,發(fā)送時不產(chǎn)生校驗位;1:允許校驗,發(fā)送時產(chǎn)生校驗位。PEV奇偶校驗選擇,該位在校驗允許時有效。0:奇校驗;1:偶校驗。SPB停止位位數(shù)選擇,決定發(fā)送的停止位位數(shù)。0:1位停止位;1:2位停止位。通用串行通信模塊CHAR字符長度選擇位,選擇字符以7位或8位發(fā)送。0:7位,發(fā)送或接收緩存的最高位補0;1:8位;LISTEN反饋選擇位,選擇是否將發(fā)送數(shù)據(jù)由內(nèi)部反饋給接收器。0:無反饋;1:有反饋,發(fā)送信號由內(nèi)部反饋給接收器,自己發(fā)送的數(shù)據(jù)同時被自己接收,也稱為自環(huán)模式。SYNCUSART模塊的模式選擇位。0:UART模式(異步);1:SPI模式(同步)。MM多機模式選擇位。0:線路空閑多機協(xié)議;1:地址位多機協(xié)議。通用串行通信模塊SWRST軟件復位控制位。該位的狀態(tài)影響其它一些控制位和狀態(tài)位的狀態(tài),一次正確的USART模塊初始化的順序是:在SWRST=1的情況下設置串口;然后設置SWRST=0;最后如果需要中斷,則設置相應的中斷使能。0:USART模塊被允許;1:USART邏輯保持在復位狀態(tài)。(2)UxTCTL發(fā)送控制寄存器CKPL時鐘極性控制位,該位控制UCLKI信號的極性。0:UCLKI信號與UCLK信號極性相同;1:UCLKI信號與UCLK信號極性相反。SSEL1,SSEL0時鐘源選擇位,該兩位確定波特率發(fā)生器的時鐘源。0:選擇外部時鐘UCLKI;1:選擇輔助時鐘ACLK;2:選擇子系統(tǒng)時鐘SMCLK;3:選擇系統(tǒng)主時鐘SMCLK。通用串行通信模塊URXSEUART接收啟動觸發(fā)沿控制位。0:UART沒有接收啟動觸發(fā)沿檢測;1:UART接收啟動觸發(fā)沿檢測,請求接收中斷服務。TXWAKE傳輸喚醒控制。裝入UTXBUF后開始一次發(fā)送操作,使用該位的狀態(tài)來初始化地址鑒別特性。硬件能自動清除,SWRST也能清除它。0:下一個要傳輸?shù)膸瑸閿?shù)據(jù);1:下一個要傳輸?shù)膸瑸榈刂贰XEPT發(fā)送器空標志位,異步模式與同步模式時不一樣。0:表示正在傳輸數(shù)據(jù)或發(fā)送緩沖器UTxBUF有數(shù)據(jù);1:表示發(fā)送移位寄存器和UTxBUF空,或者SWRST=1。通用串行通信模塊(3)UxRCTL接收控制寄存器該寄存器保存了由最新寫入接收緩存URXBUF的字符引起的出錯狀況和喚醒條件。一旦有PE、FE、OE、BRK、RXERR和RXWAKE等位的任何一位被置位,都不能通過接收到下一個字符來復位。他們的復位要通過訪問接收緩存、串行口的軟件復位、系統(tǒng)復位或直接用指令修改。FE幀錯誤標志位。0:沒有幀錯誤;1:幀錯誤,接收到不是停止位的字符。PE奇偶校驗錯誤標志位。0:校驗正確;1:校驗錯誤。通用串行通信模塊OE溢出標志位。0:無溢出;1:有溢出,當一個字符寫入接收緩存URXBUF時,前一個字符還沒有被讀出,這時前一個字符因被覆蓋而丟失,OE置位。BRK打斷檢測位。0:檢測位沒有被打斷;1:檢測位被打斷。URXEIE接收出錯中斷允許位。0:不允許中斷,不接收出錯字符并且不改變URXIFG標志位;1:允許中斷,接收出錯字符并且不改變URXIFG標志位。URXWIE接收喚醒中斷允許位。0:接收到的每個字符都能夠置位標志位URXIFG;1:只有接收到有效的地址字符才能置位標志位URXIFG。通用串行通信模塊RXWAKE接收喚醒標志位。0:接收到的字符是數(shù)據(jù);1:接收到的字符是地址。地址為多機模式,接收字符地址位置位時,該位被喚醒,RXWAKE=1;在線路空閑多機模式,在接受到字符前檢測到URXD線路空閑時,該機被喚醒,RXWAKE=1。RXERR接收錯誤標志位。0:沒有接收錯誤;1:有接收錯誤。表明有一個或多個出錯標志(FE,PE,OE和BRK等)被置位。當UxRxBUF被讀時,RxERR自動清零。(4)UxBR0、UxBR1波特率選擇寄存器0和1寄存器UxBR0和UxBR1用于存放波特率發(fā)生器的分頻器分頻因子的整數(shù)部分,其中UxBR0為低字節(jié),UxBR1為高字節(jié)。兩字節(jié)合起來為一個16位字,稱為UBR。在異步通信時,UBR的允許值不小于3,如果UBR小于3,則發(fā)送和接收有可能產(chǎn)生不可預料的結(jié)果。通用串行通信模塊(5)UxMCTL波特率調(diào)整控制寄存器波特率控制寄存器UxMCTL中的8位分別對應8次分頻。如果波特率發(fā)生器的輸入頻率BRCLK為所需頻率的整數(shù)倍,則這個倍率就是分頻因子,將它寫入UBR寄存器即可。但如果波特率發(fā)生器的輸入頻率BRCLK不是所需波特率的整數(shù)倍,而是帶有小數(shù),則整數(shù)部分寫入UBR寄存器,小數(shù)部分由調(diào)整控制寄存器UxMCTL的內(nèi)容反映。波特率由以下公式計算:波特率=BRCLK/(UBR+(M7+M6+M5+M4+M3+M2+M1+M0)/8),其中M0、M1……M7為UxMCTL中的各位。(6)UxRXBUF接收數(shù)據(jù)緩存接收緩存存放從接收移位寄存器最后接收的字符,可由用戶訪問。讀接收緩存可以復位接收時產(chǎn)生的各種錯誤標志、RXWAKE位和URXIFGx位。如果傳輸7位數(shù)據(jù),接收緩存內(nèi)容右對齊,最高位為0。通用串行通信模塊(7)UxTXBUF發(fā)送數(shù)據(jù)緩存當前要發(fā)送的數(shù)據(jù)保存在發(fā)送數(shù)據(jù)緩存(UxTXBUF)中,UxTXBUF中內(nèi)容可以發(fā)送至發(fā)送移位寄存器,然后由UTXDx傳輸,對發(fā)送緩存進行寫操作可以復位UTXIFG。如果傳輸7位數(shù)據(jù),發(fā)送緩沖內(nèi)容最高位為03.4.3.2異步操作(1)異步通信格式異步通信的特點是:一個字符一個字符地傳輸,每個字符一位一位地傳輸,并且傳輸一個字符時,總是從“起始位”開始,以“停止位”結(jié)束,字符之間沒有固定的時間間隔要求。每一個字符的前面都有一位起始位(低電平,邏輯值),字符本身由5-7位數(shù)據(jù)位組成,接著字符后面是一位校驗位(也可以沒有校驗位),最后是一位或一位半或二位停止位,停止位后面是不定長的空閑位。停止位和空閑位都規(guī)定為高電平(邏輯值1),這樣就保證起始位開始處一定有一個下跳沿。通用串行通信模塊如圖3-27所示,這種格式是靠起始位和停止位來實現(xiàn)字符的界定或同步的,故稱為起止式協(xié)議。通信中每一位的周期由選定的時鐘周期和波特率寄存器決定。圖3-27異步通信格式通用串行通信模塊(2)波特率產(chǎn)生所謂波特率,是指單位時間內(nèi)傳送的二進制數(shù)據(jù)位數(shù),以位/秒為單位,是衡量串行數(shù)據(jù)傳送速度快慢的重要指標和參數(shù)。在異步串行通信時,波特率的產(chǎn)生是必須的。MSP430單片機的波特率產(chǎn)生部分如圖3-28所示,由時鐘源輸入選擇與分頻、波特率發(fā)生器、調(diào)整器和波特率寄存器等構(gòu)成。其中,整個模塊的時鐘源輸入通過控制寄存器UxTCTL中的SSEL1和SSEL0懸在來自內(nèi)部的3個時鐘或外部輸入時鐘,以決定最終進入模塊的時鐘信號BRCLK的頻率。時鐘信號BRCLK進入一個15位分頻器,通過一系列的硬件控制,當計數(shù)器的計數(shù)值減到0時,輸出觸發(fā)器翻轉(zhuǎn),最終輸出兩個移位寄存器使用的移位時鐘BITCLK信號,所以BITCLK信號周期的一半就是定時器,即分頻計數(shù)器的定時時間。通用串行通信模塊圖3-28波特率發(fā)生器結(jié)構(gòu)圖通用串行通信模塊(3)USART初始化和復位PUC或者SWRST置位都可以使USART復位。在一個有效的PUC之后,SWRST位自動置位,USART保持在復位狀態(tài)。此時,URXIEx、UTXIEx、URIFGx、RXWAKE、TXWAKE、RXERR、BRK、PE、OE和FE位都被復位。UTXIFGx和TXEPT位被置位。接收和發(fā)送使能標志(URXEx,UTXEx)不會被SWRST改變。清除SWRST位可以使能USART操作。初始化或者重新配置USART模塊必須按照以下順序,否則可能會產(chǎn)生不可預料的結(jié)果。SWRST置位(BIS.B#SWRST,&UxCTL);在SWRST=1的條件下初始化所有USART寄存器,包括UxCTL;通過置位特殊功能寄存器中MEx的URXEx和UTXEx位使能USART接收和發(fā)送模塊;通用串行通信模塊通過軟件復位SWRST位(BIC.B#SWRST,&UxCTL);通過置位特殊功能寄存器中IEx的URXIEx和
UTXIEx位來使能USART接收和發(fā)送中斷。USART發(fā)送中斷操作當UxTXBUF準備好接收新的數(shù)據(jù)時,UTXIFGx中斷標志被置位,如果總中斷允許GIE和USART發(fā)送中斷均被允許則會產(chǎn)生中斷請求。當中斷請求被響應或者有新的數(shù)據(jù)寫入UxTXBUF時,UTXIFGx被自動復位。當發(fā)生PUC或SWRST=1時,UTXIFGx被置位,UTXIEx被復位。USART接收中斷當有數(shù)據(jù)被收到并且裝入到UxRXBUF中,USART接收中斷標志位被置位。如果總中斷允許GIE和USART發(fā)送中斷均被允許則會產(chǎn)生中斷請求。URXIFGx和URXIEx在發(fā)生PUC和SWRST=1后均被復位。如果中斷服務程序被啟動或UxRXBUF被讀出,URXIFGx自動復位。通用串行通信模塊3.4.4USCI模塊USCI模塊具有以下特性:低功耗運行模式;兩個獨立模塊。USCI_A:支持Lin/IrDA的UART。SPI(主/從、3線和4線模式)。USCI_B:SPI(主/從、3線和4線模式)。I2C(主/從、高達400KHZ)。雙緩沖發(fā)送和接收。波特率/位時鐘發(fā)生器。自動波特率檢測。靈活的時鐘源。接收干擾抑制。使能DMA。錯誤檢測。通用串行通信模塊圖3-29所示為USCI模塊框圖:圖3-29USCI模塊框圖通用串行通信模塊3.4.4.1初始化序列在使用USCI模塊之前,采用以下步驟初始化或重新配置USCI模塊。置位UCAxCTL1的UCSWRST。初始化USCI寄存器。配置相應引腳端口。軟件清零UCSWRST。使能UCxRXIE和/或UCxTXIE中斷。3.4.4.2波特率生成如圖3-30所示為USCI模塊中波特率生成器的框圖。對于特定的時鐘源頻率,分頻值由下列公式給出: N=f(BRCLK)/波特率通常情況下N不是整數(shù),所以波特率由分頻器和調(diào)制器生成。通用串行通信模塊USCI波特率生成器可以由非標準時鐘源產(chǎn)生標準波特率,由位UCOS16選擇兩種操作模式:低頻波特率產(chǎn)生器和過采樣波特率產(chǎn)生器。外部時鐘源UCAxCLK或內(nèi)部時鐘ACLK或SMCLK產(chǎn)生BRCLK,波特率由BRCLK產(chǎn)生。(1)低頻波特率生成當UCOS16=0時,即選擇為低頻波特率生成模式,該模式使用低頻時鐘信號(32768KHZ晶振),適合低功耗使用。波特率是由分頻器和調(diào)制器中獲得的。分頻因子的整數(shù)部分通過預分頻器實現(xiàn):UCBRx=INT(N)小數(shù)部分由帶有下面公式的調(diào)制器實現(xiàn):UCBRSx=round((N-INT(N))×8)(2)過采樣波特率生成當UCOS16=1時,即選擇為過采樣波特率生成模式,該模式具有精確的位時序,它需要時鐘源比所需要的波特率高16倍。通用串行通信模塊通過以下兩步可以產(chǎn)生波特率:將時鐘源16分頻,再供給第一個調(diào)制器,產(chǎn)生BITCLK16。將BITCLK16通過16分頻后作為第二個調(diào)制器的輸入來產(chǎn)生BITCLK。
寄存器將通過下面公式得出的值來進行配置:UCBRx=INT(N/16)UCBRFx=round(((N/16)-int(N/16))×16)圖3-30波特率生成器框圖通用串行通信模塊3.5串行外設接口協(xié)議SPI模式3.5.1SPI概述3.5.2SPI模式操作3.5.3SPI模塊寄存器目錄3.5.1SPI概述串行外圍設備接口(SerialPeripheralInterface,SPI)總線技術(shù)是一種同步串行接口,其硬件功能很強,與SPI有關的軟件相當簡單,CPU有更多的時間處理其他事務。SPI總線上可以連接多個可作為主機的MCU(微控制器)、裝有SPI接口的輸出設備、輸入設備,如液晶驅(qū)動、A/D轉(zhuǎn)換等外設,也可以簡單連接到單個TTL移位寄存器的芯片??偩€上允許連接多個設備,但在任一瞬間只允許一個設備作為主機。典型的結(jié)構(gòu)如圖3-31所示(3線模式)。其中SPI總線的時鐘線有主機控制,另外還有數(shù)據(jù)線:主機輸入/從機輸出線和主機輸出/從機輸入線。主機和哪臺從機通信,通過各從機的選通線進行選擇。串行外設接口協(xié)議SPI模式應用SPI的系統(tǒng)可以簡單,也可以復雜,主要有以下3種形式:一臺主機MCU和若干臺從機MCU;多臺MCU互相連接成一個多主機系統(tǒng);一臺主機MCU和若干臺從機外圍設備。圖3-31SPI典型結(jié)構(gòu)串行外設接口協(xié)議SPI模式3.5.2SPI模式操作當MSP430USCI模塊控制寄存器UCTL的UCSYNC置位且UCMODEx為0001或10時,串行模塊工作在SPI模式,通過4線(SOMI、SIMO、SCLK及STE)或者3線(SOMI、SIMO及SCLK)與外界通信。MSP430的SPI模塊有如下特點:支持3線或4線SPI操作;支持7位或8位數(shù)據(jù)格式;接收和發(fā)送有單獨的移位寄存器;接收和發(fā)送有獨立的緩存器;接收和發(fā)送有獨立的中斷能力;時鐘的極性和相位可編程;主模式的時鐘頻率可編程;傳輸速率可編程;支持連續(xù)收發(fā)操作;支持主從方式。串行外設接口協(xié)議SPI模式3.5.2.1SPI模式的引腳信息引腳SOMI、SIMO、SCLK和STE用于SPI模式,其中SOMI、SIMO、SCLK在主機模式和從機模式下存在差異,如表3-5所示。表3-5SOMI、SIMO、SCLK的含義引腳含義主機模式從機模式SIMO從入主出數(shù)據(jù)輸出引腳數(shù)據(jù)輸入引腳SOMI從出主入數(shù)據(jù)輸入引腳數(shù)據(jù)輸出引腳SCLKUSCI時鐘輸出時鐘輸入時鐘串行外設接口協(xié)議SPI模式STE是從機模式發(fā)送、接收允許控制引腳,控制多主從系統(tǒng)中的多個從機。該引腳不用于3線SPI操作,可以在4線SPI操作中使多主機共享總線,避免發(fā)生沖突。4線SPI操作主模式中,STE的含義如下:0:SIMO和SCLK被強制進入輸入狀態(tài);1:SIMO和SCLK正常操作。4線SPI操作從模式中,STE的含義如下:0:允許從機發(fā)送、接收數(shù)據(jù),SIMO正常工作;1:從機發(fā)送、接收數(shù)據(jù),SIMO被強制進入輸入狀態(tài)。串行外設接口協(xié)議SPI模式3.5.2.2SPI的操作方式SPI是雙全工的,即主機在發(fā)送的同時也在接受數(shù)據(jù),傳送的速率由主機編程決定;主機提供時鐘與數(shù)據(jù),從機利用這一時鐘接收數(shù)據(jù),或在這一時鐘下送出數(shù)據(jù)。時鐘的極性和相位也是可以選擇的,具體的約定由設計人員根據(jù)總線上個設備接口的功能決定。(1)SPI的主機模式如圖3-32所示是3線制或4線制主機--從機連接方式應用示意圖,MSP430單片機作為主機,與另一SPI從機設備連接。串行外設接口協(xié)議SPI模式圖3-32USCI模塊為主機在同步模塊下與其他設備相連串行外設接口協(xié)議SPI模式如果是4線制連接方式,激活的主機STE信號防止與別的主機發(fā)生總線沖突。表3-6說明了主從機模式選擇。表3-6主從機選擇模式UCMODExUCxSTE活動狀態(tài)UCxSTE從機主機01高0不活躍活躍1活躍不活躍10
低0活躍不活躍1不活躍活躍UCxSTE與從機的片選端SS相連,主機的UCxSTE用作選中從機,在發(fā)起傳送過程之前,首先是UCxSTE有效(由UCMODE決定)來激活從機,然后進行數(shù)據(jù)傳送。串行外設接口協(xié)議SPI模式(2)SPI的從機模式如圖3-33所示是3線制或4線制主機和從機應用連接示意圖,USCI模塊為從機,與另一主機設備相連。圖3-33USCI模塊為從機在同步模式下與其他設備相連串行外設接口協(xié)議SPI模式(3)同步操作原理上電或者UCSWRST=1都能使SPI同步串行通信模塊進入復位狀態(tài)。上電后,UCSWRST被自動置位,并一直保持這種狀態(tài),直到對其操作為止。當UCSWRST=1時,將會導致UCRXIE、UCTXIE、UCRXIFG、UCOE、UCFE復位,導致UCTXIFG置位。所有對SPI的配置都必須在UCSWRST=1期間進行,只有當UCSWRST=0時,SPI才能按照配置從事正常數(shù)據(jù)傳輸工作。SPI同步串行通信可以由UC7BIT控制選7位或8位,當UC7BIT=0時,數(shù)據(jù)位數(shù)是8位;當UC7BIT=1時,數(shù)據(jù)位是7位,數(shù)據(jù)的最高位總是0。UCMSB決定發(fā)送數(shù)據(jù)的次序,當UCMSB=0時,從最低位開始發(fā)送;當UCMSB=1時,從最高位開始發(fā)送。串行外設接口協(xié)議SPI模式在數(shù)據(jù)傳輸過程中,無論是發(fā)送還是接收,BUSY一直為1,表示處于忙碌狀態(tài)。在主模式下,向發(fā)送緩沖寄存器寫入發(fā)送的數(shù)據(jù),將激活時鐘發(fā)生器,并開始傳送數(shù)據(jù)。無論何種連接方式,SPI同步串行通信時,接收與發(fā)送總是同時進行的。在通信過程中,如果出現(xiàn)錯誤,將會導致UCFE或UCOE置位,并引起中斷請求。如果接收一個數(shù)據(jù)或者一次發(fā)送完成,就會相應的置位UCRXIFG或UCTXIFG。管理中斷的有UCTXIE和UCRXIE,它們分別決定是否允許發(fā)送中斷和接收中斷。向數(shù)據(jù)緩沖器TXBUF寫入數(shù)據(jù),會自動清除UCTXIFG和UCTXIE,讀取數(shù)據(jù)緩沖期RXBUF,會自動清除UCRXIFG和UCRXIE。(4)串行時鐘控制UCxCLK相位和極性是獨立的,由UCCKPL和UCCKPH配置,同步串行通信時序如圖3-34所示。串行外設接口協(xié)議SPI模式圖3-34同步串行通信時序(UCMSB=1)串行外設接口協(xié)議SPI模式3.5.3SPI模塊寄存器同步通信和異步通信寄存器資源一致,但具體寄存器的不同位之間存在差異,使用時不要混淆。(1)USCI_Ax/USCI_Bx控制寄存器0(UCAxCTL0/UCBxCTL0)各位的定義如下:76543210UCCKPHUCCKPLUCMSBUC7BITUCMSTUCMODExUCSYNC=1UCCKPH:Bit7,時鐘相位選擇位。0數(shù)據(jù)在第一個UCLK沿改變,數(shù)據(jù)在上升沿捕獲;1數(shù)據(jù)在第一個UCLK沿捕獲,數(shù)據(jù)在上升沿改變。串行外設接口協(xié)議SPI模式UCCKPL:Bit6,時鐘相位選擇位。0非活動狀態(tài)為低;1活動狀態(tài)位為高。UCMSB:Bit5最高有效位選擇位。控制接收和發(fā)送方向移位的方向。0LSB優(yōu)先;1MSB優(yōu)先。UC7BIT:Bit4,字符長度。選擇7位或8位字符長度。08位數(shù)據(jù);17位數(shù)據(jù)。UCMST:Bit3,主機模式選擇。0從機模式;1主機模式。UCMODEx:Bit2~1,USCI模式。當UCSYNC=1時,UCMODEx位選擇同步模式。串行外設接口協(xié)議SPI模式003線SPI;014線SPI,UCxSTE為高,當UCxSTE=1時從機使能;104線SPI,UCxSTE為低,當UCxSTE=0時從機使能。UCSYNC:Bit0,同步模式使能。0異步模式;1同步模式。(2)USCI_Ax/USCI_Bx控制寄存器1(UCAxCTL1/UCBxCTL1)各位的定義如下:7~65~10UCSSELxUnusedUCSWRST串行外設接口協(xié)議SPI模式UCSSELx:Bits7~6,USCI時鐘源選擇。這兩位選擇主機模式下BRCLK的時鐘源、UCxCLK通常在從機模式下使用。00NA;01ACLK;10SMCLK;11MCLK。UCSWRST:Bit0,軟件復位使能。0禁止,USCI復位釋放;1使能,USCI保持在復位狀態(tài)下。(3)USCI_Ax/USCI_Bx波特率控制寄存器0(UCAxCTL0/UCBxCTL0)各位的定義如下:串行外設接口協(xié)議SPI模式7~0UCBRx-低位(4)USCI_Ax/USCI_Bx波特率控制寄存器1(UCAxCTL1/UCBxCTL1)7~0UCBRx-高位UCBRx:位時鐘預分頻值為UCxxBR0+UCxxBR1(5)UCAxSTAT/UCBxSTAT狀態(tài)寄存器(UCAxSTAT)各位的定義如下:7654~10UCLISTENUCFEUCOEUn
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 隨州2025年湖北隨州市隨縣烈山湖學校選調(diào)教師12人筆試歷年參考題庫附帶答案詳解
- 銅陵2025年安徽銅陵學院招聘科研助理22人筆試歷年參考題庫附帶答案詳解
- 衢州2025年浙江衢州開化縣城區(qū)小學選調(diào)教師17人筆試歷年參考題庫附帶答案詳解
- 杭州浙江杭州電子科技大學理學院招聘工作人員(勞務派遣)筆試歷年參考題庫附帶答案詳解
- 撫州2025年江西撫州市南豐縣暑期縣城學校教師選調(diào)123人筆試歷年參考題庫附帶答案詳解
- 廣西2025年廣西科技大學第一附屬醫(yī)院老年醫(yī)學科人才招聘筆試歷年參考題庫附帶答案詳解
- 山東2025年山東省血液中心招聘博士研究生2人筆試歷年參考題庫附帶答案詳解
- 寧夏2025年寧夏地質(zhì)局高層次人才招聘引進筆試歷年參考題庫附帶答案詳解
- 佛山2025年廣東佛山南海區(qū)大瀝鎮(zhèn)公辦幼兒園園長招聘3人筆試歷年參考題庫附帶答案詳解
- 企業(yè)管理員工制度
- 2026海南安保控股有限責任公司招聘11人筆試模擬試題及答案解析
- 裝飾裝修工程施工組織設計方案(二)
- 2026上海碧海金沙投資發(fā)展有限公司社會招聘參考題庫必考題
- 保險業(yè)客戶服務手冊(標準版)
- 2026年張家界航空工業(yè)職業(yè)技術(shù)學院單招職業(yè)傾向性考試模擬測試卷新版
- 2026遼寧機場管理集團校招面筆試題及答案
- 2025徽銀金融租賃有限公司社會招聘筆試歷年典型考題及考點剖析附帶答案詳解
- 2026年遼寧軌道交通職業(yè)學院單招綜合素質(zhì)筆試備考題庫帶答案解析
- 檢驗科內(nèi)控制度
- DB44-T 2771-2025 全域土地綜合整治技術(shù)導則
- 碳排放核算及企業(yè)減排策略
評論
0/150
提交評論