


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 10章 串行輸入 /輸出端口的使用微控制器芯片之間通信的實(shí)現(xiàn)目標(biāo)通過本章的學(xué)習(xí),應(yīng)掌握以下知識(shí) MSP430 系列微控制器部的串行數(shù)據(jù)傳輸模塊 通用串行接口( Universal Serial Interface , USI )的使用 串行外圍接口( Serial Peripheral Interface , SPI )工作模式 I2C 接口( Inter Integrated Circuit , I2C)工作模式 I2C總線的組成結(jié)構(gòu)和技術(shù)術(shù)語 I2C總線上數(shù)據(jù)傳送的時(shí)序引言在第 5 章,利用軟件的方法實(shí)現(xiàn)了同步串行方式的數(shù)據(jù)傳輸,驅(qū)動(dòng)同步移位寄存器 74164芯片, 最后實(shí)現(xiàn)數(shù)碼管的數(shù)
2、據(jù)顯示。 MSP430 系列微控制器部具有多種串行數(shù)據(jù)傳輸 模塊,使用這些模塊可以降低軟件開發(fā)的要求,同時(shí)還可以提高數(shù)據(jù)傳輸?shù)乃俾?。MSP430x2xx 芯片部串行數(shù)據(jù)傳輸模塊的基本組成單元是一個(gè)移位寄存器。第5 章中介紹的 74164 芯片也是一種移位寄存器,該芯片用來將串行格式的數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)格 式。當(dāng)時(shí)鐘上跳邊沿到來時(shí), 74164 芯片串行輸入數(shù)據(jù)將被送到并行輸出管腳Q0 對(duì)應(yīng)的觸發(fā)器、同時(shí)并行輸出管腳Qo對(duì)應(yīng)觸發(fā)器原有的數(shù)據(jù)移到并行輸出管腳Qi對(duì)應(yīng)的觸發(fā)器、并行輸出管腳 Qi對(duì)應(yīng)觸發(fā)器原有的數(shù)據(jù)移到并行輸出管腳Q2對(duì)應(yīng)的觸發(fā)器、并行輸出管腳 Q6 對(duì)應(yīng)觸發(fā)器原有的數(shù)據(jù)移到并行輸出
3、管腳Q7 對(duì)應(yīng)的觸發(fā)器。并行輸出管腳Q7對(duì)應(yīng)觸發(fā)器的數(shù)據(jù)將被移出,或者丟棄。在數(shù)據(jù)接收時(shí), MSP430x2xx 芯片部串行數(shù)據(jù)傳輸模塊的移位寄存器工作與 74i64 芯 片類似,當(dāng)數(shù)據(jù)全部移入移位寄存器就能夠讀這個(gè)數(shù)據(jù);在數(shù)據(jù)發(fā)送時(shí),先以并行輸入的 方式向移位寄存器寫數(shù)據(jù),然后將它逐位移出。盡管基于微控制器進(jìn)行電路功能的實(shí)現(xiàn)是通過編寫程序完成的,但是硬件功能是編寫 程序的基礎(chǔ)。充分地了解芯片的硬件組成和工作原理將對(duì)它的完美使用提供扎實(shí)的支持。 描述數(shù)字系統(tǒng)和數(shù)字電路的方法和用來實(shí)現(xiàn)這些方法的技術(shù)不斷變化,但是作為理論基礎(chǔ) 的基本原理并沒有改變,理解 74i64 移位寄存器芯片的工作將對(duì)本章涉
4、及的 MSP430x2xx 微控制器部串行數(shù)據(jù)傳輸模塊的工作帶來方便。10.1 MSP430x2xx 微控制器的串行接口數(shù)字技術(shù)已經(jīng)滲透到人類生活的眾多領(lǐng)域, 其中數(shù)字計(jì)算機(jī)是最著名和應(yīng)用最廣泛的。 盡管數(shù)字計(jì)算機(jī)影響,并改變了我們生活的許多方面,不過許多人并不能準(zhǔn)確地說出它的 主要特點(diǎn)。簡(jiǎn)單地說,計(jì)算機(jī)就是一個(gè)能夠完成數(shù)字信號(hào)的算術(shù)運(yùn)算、邏輯運(yùn)算、比較判 斷等處理功能的數(shù)字系統(tǒng)。計(jì)算機(jī)要處理數(shù)字信號(hào),這就需要設(shè)法將數(shù)字信號(hào)輸入計(jì)算機(jī),完成處理的信號(hào)還需 要從計(jì)算機(jī)中輸出。常用的數(shù)字信號(hào)的傳送方式分并行方式和串行方式。數(shù)字信號(hào)的并行 傳送方式的優(yōu)點(diǎn)為數(shù)據(jù)傳送速率快,但是這種方式需要占用較多的器
5、件管腳,同時(shí)也不適 用進(jìn)行遠(yuǎn)距離的數(shù)據(jù)傳送。數(shù)字信號(hào)的串行傳送方式雖然數(shù)據(jù)傳送速率慢,不過這種方式占用器件的管腳數(shù)量較 少,同時(shí)也適用進(jìn)行遠(yuǎn)距離的數(shù)據(jù)傳送。本書就是采用同步串行傳送方式從 MSP430 微控 制器芯片向數(shù)碼管顯示電路傳送信息。串行傳送方式使用較少數(shù)量傳輸線的特點(diǎn)也使得對(duì) 放大器、調(diào)制器等硬件電路的需求小,因此適用進(jìn)行遠(yuǎn)距離的數(shù)據(jù)傳送。MSP430x2xx 微控制器提供串行接口支持芯片之間的數(shù)據(jù)傳送。為滿足不同的應(yīng)用需 要, 這里的串行接口具有多種類型:通用串行接口( Universal Serial Interface , USI )、通 用串行通信接口( Universal
6、Serial Communication Interface ,USCI )以及通用的同步 /異步、 接收/發(fā)送串 行接口 ( Universal Synchronous/Asynchronous Receive/Transmit Peripheral Interface ,USART )。并不是每種芯片部存在所有這些接口,通常是一種芯片只具有一種類型的串行接口。 了解這些接口的工作原理和使用特點(diǎn)將支持選擇合適的芯片類型,更方便地完成應(yīng)用系統(tǒng) 的開發(fā)。 TI 公司提供的 MSP430 微控制器芯片選型手冊(cè)給出了所有型號(hào)芯片包含的接口類 型和接口數(shù)量。通用串行接口 ( USI)模塊存在于部分 M
7、SP430G2xx1和全部 MSP430G2xx2芯片之中, MSP430G2231 芯片之中具有 USI 接口模塊。這是一種同步串行通信接口模塊,它具有 2 種工作模式,串行外圍接口(Serial Peripheral In terface , SPI )和 I2C 接口( Inter In tegratedCircuit , l2C)。鑒于篇幅關(guān)系,本章只以USI接口模塊的串行外圍接口( SPI)工作模式和 I2C 接口工作模式為例,分別介紹這兩種接口模式下的電路組成、工作過程、相關(guān)寄存 器,并給出演示程序等容。串行外圍接口( SPI)適合在2個(gè)芯片之間進(jìn)行數(shù)據(jù)通信;I2C接口適合在多個(gè)芯
8、片之 間進(jìn)行數(shù)據(jù)通信,當(dāng)然它也能夠在 2個(gè)芯片之間進(jìn)行數(shù)據(jù)通信。包括MSP430F2619芯片在的其它大部分 MSP430x2xx微控制器芯片部具有通用串行通 信接口( USCI)模塊。這種模塊也支持串行外圍接口(SPI)和I2C接口這兩種工作模式,因此本章所介紹的容也會(huì)對(duì)這部分電路的工作提供支持。不過需要注意,不同型號(hào)芯片的 具體使用存在一些差別。對(duì)通用串行通信接口( USCI )模塊中所包含的其它工作模式相關(guān)容有興趣的讀者可以 參考 TI 公司的數(shù)據(jù)手冊(cè), MSP430x2xx Family User 's Guide。10.2 通用串行接口( Uni versal Serial
9、In terface, USI)MSP430微控制器的通用串行接口(USI)模塊能夠支持?jǐn)?shù)字電路芯片之間的同步串行通信。通用串行接口模塊具有2種工作模式,串行外圍接口( Serial Peripheral In terface , SPI)模式和I2C接口( Inter Integrated Circuit , I2C)模式。兩種工作模式由寄存器位"USII2C ”選擇。無論工作在哪種模式,移位寄存器,USISR( USI Shift Register),都是該外圍模塊的最基本組成單元。移位寄存器可以利用軟件寫入數(shù)據(jù),再進(jìn)行數(shù)據(jù)的串行發(fā)送;接收的 串行傳輸數(shù)據(jù)也將進(jìn)入這個(gè)寄存器,然后
10、由軟件進(jìn)行讀取。串行外圍接口( SPI)通用串行接口 (USI)模塊工作在串行外圍接口( SPI)模式下的方框圖如圖10.1所示。串行外圍接口( SPI)是一種3線同步串行通信接口。圖10.1中的管腳“ SDO”為串行數(shù)據(jù)輸出管腳、管腳“ SDI ”為串行數(shù)據(jù)輸入管腳、管腳“SCLK ”為串行時(shí)鐘管腳。串行時(shí)鐘管腳“ SCLK ”是一個(gè)雙向管腳。當(dāng)工作在主模式狀態(tài),管腳“ SCLK ”為輸出管腳, 它輸出串行外圍模塊產(chǎn)生的時(shí)鐘信號(hào);當(dāng)工作在從模式狀態(tài),管腳“SCLK ”為輸入管腳,它接收外部電路提供的時(shí)鐘信號(hào)。圖10.1中的“ USISR”方框就是通用串行接口的移位寄存器。在完成相關(guān)配置,向移
11、 位寄存器寫入數(shù)據(jù)就可以完成數(shù)據(jù)的串行同步發(fā)送,接收過程結(jié)束以后從該移位寄存器可 以讀取數(shù)據(jù)。利用控制信號(hào)“ USI16B ”,移位寄存器可以配置為8位,或者16位;利用控制信號(hào)“ USILSB ”,移位寄存器中的容可以配置為數(shù)據(jù)的高位在前,或者低位在前。移位寄存器的數(shù)據(jù)移位工作由移位時(shí)鐘信號(hào)“Shift Clock ”和“ Bit Counter ”位計(jì)數(shù)器方框的輸出信號(hào)“ USICNTx ”聯(lián)合進(jìn)行控制。位計(jì)數(shù)器是一個(gè)減法計(jì)數(shù)器,它對(duì)移位寄存器移入,或者移出,的數(shù)據(jù)位進(jìn)行計(jì)數(shù)。每完成一次移位,計(jì)數(shù)器容減1。當(dāng)計(jì)數(shù)器的容減到0的時(shí)候,它將停止計(jì)數(shù),并置位計(jì)數(shù)器中斷標(biāo)志“USIIFG ”。置位
12、的計(jì)數(shù)器中斷標(biāo)志“ USIIFG ”將停止串行時(shí)鐘信號(hào),進(jìn)而停止移位寄存器的移位工作。當(dāng)清零控制信號(hào)“ USIIFGCC ”,向計(jì)數(shù)器“ Bit Counter ”寫入大于0的“ USICNTx ”數(shù)值能自動(dòng)清除計(jì)數(shù) 器中斷標(biāo)志“ USIIFG ”。移位時(shí)鐘信號(hào)“Shift Clock ”同時(shí)控制移位寄存器和計(jì)數(shù)器的工作。在該信號(hào)上升邊沿的驅(qū)動(dòng)下,計(jì)數(shù)器容減1,移位寄存器中的數(shù)據(jù)移動(dòng)1位。當(dāng)工作在主模式下,信號(hào)“ USIMST ”使得串行時(shí)鐘信號(hào)“ USICLK ”能夠輸出。該信號(hào)可以用來產(chǎn)生移位時(shí)鐘信號(hào)“Shift Clock ”,同時(shí)通過管腳“ SCLK ”輸出。當(dāng)工作在從模式下,管腳“S
13、CLK ”作為輸入管腳使用,接收外部的時(shí)鐘信號(hào)來產(chǎn)生移位時(shí)鐘信號(hào)“Shift Clock "o串行時(shí)鐘信號(hào)“ USICLK ”的驅(qū)動(dòng)源可以在多個(gè)信號(hào)源之中選擇。在信號(hào)“USISSELx ”的控制下,在管腳“ SCLK ”輸入信號(hào);MSP430的系統(tǒng)時(shí)鐘信號(hào) ACLK或者SMCLK ;定 時(shí)器Timer_A捕捉/比較模塊的輸出信號(hào) TA0、TA1或者TA2 ;由軟件置位和清零寄存器 位“ USISWCLK ”產(chǎn)生的信號(hào)之中選擇一個(gè)。選擇的信號(hào)能夠通過“Clock Divider ”方框在信號(hào)“ USIDIVx ”的控制下實(shí)現(xiàn)分頻。計(jì)數(shù)器中斷標(biāo)志“USIIFG ”能夠停止串行時(shí)鐘信號(hào)“
14、USICLK ”的輸出。串行外圍接口( SPI)的數(shù)據(jù)與時(shí)鐘之間能夠選擇多種時(shí)間關(guān)系,選擇由信號(hào)“ USICKPH ”和“ USICKPL ”進(jìn)行控制。數(shù)據(jù)與時(shí)鐘之間的所有時(shí)間關(guān)系如圖10.2所示。這里移位寄存器的寬度選擇8位,數(shù)據(jù)的MSB位在先。圖10.2 SPI模式數(shù)據(jù)與時(shí)鐘之間的時(shí)間關(guān)系圖MSP430微控制器的串行外圍接口( SPI)提供多種數(shù)據(jù)與時(shí)鐘的時(shí)間關(guān)系使得它能與 許多種類的數(shù)字芯片進(jìn)行數(shù)據(jù)交換。例如選擇USICKPH=1和USICKPL=0,這時(shí)串行時(shí)鐘波形如圖10.2所示的第3行波形;串行數(shù)據(jù)波形如第6行波形。這樣的時(shí)鐘與數(shù)據(jù)之間的時(shí)間關(guān)系將滿足 8位移位寄存器(串行輸入,并
15、行輸出)74164所需要的時(shí)間關(guān)系。程序示例10.1將利用這種工作狀態(tài)完成對(duì)1位數(shù)碼管的顯示驅(qū)動(dòng)。圖10.2也給出串行外圍接口在主模式下的工作過程。數(shù)據(jù)發(fā)送時(shí),首先由軟件向移位 寄存器寫入待傳送的數(shù)據(jù);接著向移位計(jì)數(shù)器裝入移位個(gè)數(shù)數(shù)據(jù)來啟動(dòng)串行數(shù)據(jù)輸出的工 作過程;移位計(jì)數(shù)器容減到0將置位中斷標(biāo)志“ USIIFG ”,該標(biāo)志停止時(shí)鐘“ USICLK ”輸出,停止串行傳輸過程。數(shù)據(jù)接收時(shí),首先向移位計(jì)數(shù)器裝入移位個(gè)數(shù)數(shù)據(jù)來啟動(dòng)串行 數(shù)據(jù)輸入的工作過程;移位計(jì)數(shù)器容減到0將置位中斷標(biāo)志“ USIIFG ”,停止串行傳輸過程;當(dāng)中斷標(biāo)志“ USIIFG ”置位,這時(shí)就能夠從移位計(jì)數(shù)器中讀取數(shù)據(jù)。使用
16、MSP430芯片管腳傳輸串行信號(hào)還需要用信號(hào)“USIPEx ”使能相關(guān)管腳。這些相關(guān)管腳可以配置為并行數(shù)據(jù)輸入 /輸出管腳,這并不影響串行外圍接口信號(hào)的傳輸,同時(shí)還 可以將并行數(shù)據(jù)輸入/輸出管腳的中斷功能用在串行數(shù)據(jù)的接收時(shí)應(yīng)用。信號(hào)“USIGE ”和“ USIOE”用于使能串行數(shù)據(jù)的輸出。串行外圍接口( SPI)的軟件復(fù)位控制位“ USISWRST ”置位能夠清零計(jì)數(shù)器中斷標(biāo)志 “ USIIFG ”,但同時(shí)阻止時(shí)鐘信號(hào)進(jìn)入移位寄存器和計(jì)數(shù)器,不過這時(shí)不影響移位寄存器 和計(jì)數(shù)器中的容。10.2.2 I2C 接口( Inter Integrated Circuit, l2C)i2c接口,也稱為i
17、2c總線,是一種專門設(shè)計(jì)來支持?jǐn)?shù)字集成電路芯片之間通信的接口 協(xié)議。這是一種 2線同步串行通信接口,包括串行數(shù)據(jù)線,SDA,和串行時(shí)鐘線,SCL。這種接口能夠支持多個(gè)芯片之間的通信,即可以由所連接的多個(gè)器件控制總線。表10.1給出了一些相關(guān)的技術(shù)術(shù)語。表10.1 I2C總線技術(shù)術(shù)語的定義技術(shù)術(shù)語說明發(fā)送器件把數(shù)據(jù)發(fā)送到總線的器件接收器件從總線上接收數(shù)據(jù)的器件主器件啟動(dòng)數(shù)據(jù)傳送、產(chǎn)生時(shí)鐘信號(hào)以及終止數(shù)據(jù)傳送的器件,即控制總線工作的器件從器件被主器件尋址的器件多主器件多個(gè)主器件可以同時(shí)企圖控制總線而不破壞總線信息仲裁多個(gè)主器件可以同時(shí)企圖控制總線時(shí)只允許一個(gè)主器件控制總線并不破壞總線信息同步2個(gè)以
18、上器件時(shí)鐘信號(hào)同步過程圖10.3給出連接到I2C總線上多個(gè)器件的連接示意圖。連接到I2C總線上的這些器件能夠顯示表10.1列出技術(shù)術(shù)語的特征,例如主器件和從器件、發(fā)送和接收關(guān)系的特征。需 要注意,這些關(guān)系不是永久的,器件所扮演的角色取決總線當(dāng)時(shí)數(shù)據(jù)的傳送狀態(tài)。以微控制器A與微控制器B之間的通信為例,這里設(shè)定微控制器 A為主器件。當(dāng)微控 制器A要把信息傳送到微控制器 B時(shí),微控制器A (主器件)尋址微控制器 B (從器件); 微控制器A (主發(fā)送)發(fā)送數(shù)據(jù)到微控制器B (從接收);微控制器 A (主器件)終止傳送過程。當(dāng)微控制器A要從微控制器B接收時(shí),微控制器A (主器件)尋址微控制器B (從
19、器件);微控制器 A (主接收)接收微控制器 B (從發(fā)送)發(fā)送的數(shù)據(jù);微控制器A (主器件)終止傳送過程。I2C總線屬于多主機(jī)總線,也就是說可能同時(shí)有多個(gè)主器件企圖控制總線的數(shù)據(jù)傳送過 程。為了避免出現(xiàn)這種情況而引起的混亂,需要進(jìn)行總線仲裁,也就是將總線的控制權(quán)賦 予某1個(gè)主器件。只能存在 1個(gè)主器件控制總線的數(shù)據(jù)傳送過程。串行時(shí)鐘線,SCL,上的時(shí)鐘信號(hào)由主器件產(chǎn)生,主器件每傳送1位數(shù)據(jù)產(chǎn)生1個(gè)時(shí)鐘。時(shí)鐘同步是由連接在串行時(shí)鐘線上的所有器件的“線與”完成的。一旦1個(gè)器件的時(shí)鐘變?yōu)榈碗娖?,將使串行時(shí)鐘線的狀態(tài)保持為低電平,只有全部器件的時(shí)鐘都達(dá)到高電平,串行時(shí)鐘線的狀態(tài)才能成為高電平。只要有
20、1個(gè)器件的時(shí)鐘狀態(tài)處于低電平,其它器件時(shí)鐘從低到高的變化將不會(huì)影響串行時(shí)鐘線的狀態(tài)。只有全部器件時(shí)鐘處于高電平狀態(tài),串 行時(shí)鐘線的狀態(tài)才能為高電平。這樣就實(shí)現(xiàn)了時(shí)鐘同步。同步時(shí)鐘控制所有器件,無論速 度快慢,之間的協(xié)調(diào)工作。串行數(shù)據(jù)線,SDA,上的數(shù)據(jù)僅在串行時(shí)鐘線處于高電平期間有效,并且在時(shí)鐘的高 電平期間數(shù)據(jù)還必須保持穩(wěn)定。只有串行時(shí)鐘線的狀態(tài)為低電平時(shí),串行數(shù)據(jù)線上的數(shù)據(jù) 才允許發(fā)生改變。串行數(shù)據(jù)線上的所有器件的連接關(guān)系也為“線與”方式。I2C總線進(jìn)行數(shù)據(jù)傳送的過程具有專門的開始信號(hào)和結(jié)束信號(hào)。這個(gè)開始信號(hào)和結(jié)束 信號(hào)由主器件產(chǎn)生。當(dāng)串行時(shí)鐘線處于高電平狀態(tài),串行數(shù)據(jù)線發(fā)生從高電平到低電
21、平的 跳變,即為數(shù)據(jù)傳輸過程的開始信號(hào);當(dāng)串行時(shí)鐘線處于高電平狀態(tài),串行數(shù)據(jù)線發(fā)生從 低電平到高電平的跳變,即為數(shù)據(jù)傳輸過程的結(jié)束信號(hào)。I2C總線上數(shù)據(jù)傳送的時(shí)序圖如圖10.4所示。12'3. J 56:. 78. G/ D7 % D6 D5SCLD4D3 : D2 男 D1:D0主發(fā)送數(shù)據(jù)輸出從接收數(shù)據(jù)輸出D1 ,: D0D6 -D4D3D2SDA數(shù)據(jù)傳送開始信號(hào)數(shù)據(jù)傳送結(jié)束信號(hào)圖10.4 I2C總線上數(shù)據(jù)傳送的時(shí)序圖圖10.4所示的時(shí)序圖為I2C總線處于主發(fā)送/從接收狀態(tài)。圖中第1行波形為主發(fā)送器 件輸出的時(shí)鐘波形,也為 I2C總線的時(shí)鐘線SCL上的信號(hào)波形;第 2行波形為主發(fā)送器
22、件 輸出的數(shù)據(jù)波形;第 3行波形為從接收器件輸出的數(shù)據(jù)波形;第 4行波形為I2C總線的數(shù) 據(jù)線SDA上的信號(hào)波形。按照時(shí)間關(guān)系,首先主發(fā)送器件的數(shù)據(jù)管腳輸出一個(gè)下降邊沿。由于I2C總線的所有器件的數(shù)據(jù)管腳采用“線與”方式連接,這時(shí)從接收器件的數(shù)據(jù)管腳應(yīng)處于高電平狀態(tài), I2C總線的數(shù)據(jù)線 SDA上信號(hào)波形將與主發(fā)送器件的數(shù)據(jù)管腳輸出信號(hào)一致。在l2C總線的時(shí)鐘線SCL處于高電平狀態(tài),數(shù)據(jù)線SDA上的下降邊沿為數(shù)據(jù)傳輸過程的開始信號(hào)。數(shù)據(jù)傳送以字節(jié)為單位,每個(gè)字節(jié)具有8位,數(shù)據(jù)傳送時(shí)首先傳送數(shù)據(jù)的最高位。每次傳輸過程傳輸?shù)淖止?jié)數(shù)量是不受限制的。在主發(fā)送數(shù)據(jù)過程中,從接收器件的數(shù)據(jù)管腳 仍應(yīng)處于高
23、電平狀態(tài), 這樣I2C總線的數(shù)據(jù)線SDA上信號(hào)波形將與主發(fā)送器件的數(shù)據(jù)管腳輸出信號(hào)一致。發(fā)送數(shù)據(jù)的器件每完成 1個(gè)字節(jié)8位數(shù)據(jù)的發(fā)送以后,它將釋放數(shù)據(jù)線,即它的數(shù)據(jù) 輸出管腳維持高電平狀態(tài)。接收器件將使它的數(shù)據(jù)管腳處于低電平。主器件這時(shí)還將產(chǎn)生1個(gè)時(shí)鐘,即第9個(gè)時(shí)鐘,接收器件在這個(gè)時(shí)鐘的高電平期間將維持低電平狀態(tài)。接收器 件輸出的這個(gè)低電平為它接收1個(gè)字節(jié)以后產(chǎn)生的認(rèn)可信號(hào)(響應(yīng))。每個(gè)字節(jié)后面必須跟這樣1個(gè)響應(yīng)位。完成所有數(shù)據(jù)字節(jié)的傳送以后,主器件停止輸出時(shí)鐘信號(hào), 并使時(shí)鐘線SCL維持在高電平狀態(tài)。主器件的數(shù)據(jù)輸出管腳產(chǎn)生一個(gè)上升邊沿。數(shù)據(jù)線SDA上的上升邊沿為數(shù)據(jù)傳輸過程的結(jié)束信號(hào)。通用
24、串行接口通用串行接口( USI)工作在I2C模式不僅要置位“ USII2C ”,還必須完成一些別的設(shè) 置,如圖10.5左上角的配置要求所示。位“USICKPL ”置位和位“ USICKPH ”清零是由于這時(shí)數(shù)據(jù)位與時(shí)鐘只能保持這種時(shí)間關(guān)系;位“USILSB ”清零是由于這時(shí)數(shù)據(jù)傳送只能是高位在前;位“ USI16B”清零是由于這時(shí)數(shù)據(jù)只能包含8位。I2C接口是一種2線同步串行通信接口。圖 10.5中的管腳“ SDA”為串行數(shù)據(jù)輸入/輸 出管腳,管腳“ SCL ”為串行時(shí)鐘管腳。串行時(shí)鐘管腳“SCL ”是一個(gè)雙向管腳。當(dāng)工作在主模式狀態(tài),管腳“ SCL ”為輸出管腳,它輸出串行時(shí)鐘信號(hào);當(dāng)工作在
25、從模式狀態(tài), 管腳“ SCL”為輸入管腳,它接收外部電路提供的時(shí)鐘信號(hào)。I2C接口可以工作在主模式,或者從模式。當(dāng)位“USIMST ”置位,I2C接口將工作在主模式,這時(shí)的串行時(shí)鐘信號(hào)“USICLK ”能夠通過管腳“ SCL”輸出,它同時(shí)也被用作移位寄存器的移位時(shí)鐘信號(hào)“ Shift Clock”。當(dāng)位“ USIMST ”清零,l2c接口將工作在從模 式,這時(shí)的串行時(shí)鐘信號(hào)“ USICLK ”由管腳“ SCL”輸入,被用作移位寄存器的移位時(shí)鐘 信號(hào)“ Shift Clock ”。在進(jìn)行數(shù)據(jù)發(fā)送時(shí),首先需要向通用串行接口低字節(jié)移位寄存器(USISRL )寫入待傳送的數(shù)據(jù),然后置位“USIOE ”
26、并向通用串行接口數(shù)位計(jì)數(shù)寄存器(USICNT )的位“ USICNTx ”寫入數(shù)據(jù)“ 8”來啟動(dòng)數(shù)據(jù)發(fā)送過程。位“ USICNTx ”中數(shù)據(jù)不等于 0將清 除中斷標(biāo)志“ USIIFG ”。在完成8位數(shù)據(jù)的發(fā)送以后,中斷標(biāo)志“USIIFG ”將置位。在主模式情況下,中斷標(biāo)志“ USIIFG ”的置位將停止產(chǎn)生串行時(shí)鐘信號(hào)“USICLK ”;在從模式情況下,中斷標(biāo)志“ USIIFG ”的置位將使管腳“ SCL”處于低電平狀態(tài),阻止其它器件 產(chǎn)生串行時(shí)鐘信號(hào)“ USICLK ”。在接收數(shù)據(jù)接收器件的認(rèn)可信號(hào)(響應(yīng))時(shí),需要清零“USIOE ”,并向通用串行接口數(shù)位計(jì)數(shù)寄存器(USICNT )的位“
27、USICNTx ”寫入數(shù)據(jù)“ 1”來啟動(dòng)接收過程。完成1位數(shù)據(jù)的接收以后,中斷標(biāo)志“USIIFG ”將再次置位。這時(shí)通用串行接口低字節(jié)移位寄存器(USISRL )最低位(LSB)的數(shù)據(jù)就是接收器件的認(rèn)可信號(hào)(響應(yīng))。在數(shù)據(jù)接收時(shí),需要清零“ USIOE ”并向通用串行接口數(shù)位計(jì)數(shù)寄存器(USICNT )的位“ USICNTx ”寫入數(shù)據(jù)“ 8”來啟動(dòng)數(shù)據(jù)接收過程。在主模式情況下,產(chǎn)生串行時(shí)鐘信號(hào)“USICLK ”;在從模式情況下,將使管腳“SCL”處于高電平狀態(tài),接收其它器件產(chǎn)生串行時(shí)鐘信號(hào)“ USICLK ”。完成8位數(shù)據(jù)的接收以后,中斷標(biāo)志“USIIFG ”將再次置位。產(chǎn)生認(rèn)可信號(hào)(響應(yīng))
28、,需要置位“ USIOE ”,并置位通用串行接口低字節(jié)移位寄存器(USISRL )最高位(MSB),然后通用串行接口數(shù)位計(jì)數(shù)寄存器(USICNT )的位“ USICNTx ”寫入數(shù)據(jù)“ 1”來啟動(dòng)這個(gè)過程。在I2C總線的時(shí)鐘線 SCL處于高電平狀態(tài),數(shù)據(jù)線 SDA上的下降邊沿為數(shù)據(jù)傳輸過 程的開始信號(hào)。開始信號(hào)能夠以下過程實(shí)現(xiàn),向通用串行接口低字節(jié)移位寄存器(USISRL )寫入數(shù)據(jù)0x00 ;置位“ USIGE ”和“ USIOE ”使得時(shí)鐘線 SCL處于高電平狀態(tài),數(shù)據(jù)線 SDA從高變低;清零“ USIGE ”準(zhǔn)備輸出時(shí)鐘信號(hào)。數(shù)據(jù)傳送的結(jié)束信號(hào)能夠以類似過程實(shí)現(xiàn),即在I2C總線的時(shí)鐘線S
29、CL處于高電平狀態(tài),數(shù)據(jù)線SDA上產(chǎn)生上升邊沿。通用串行接口( USI )的寄存器通用串行接口( USI )的相關(guān)寄存器包括以下 6個(gè)。通用串行接口控制寄存器0和1,USICTL0和USICTL1 ;通用串行接口時(shí)鐘控制寄存器,USICKCTL ;通用串行接口數(shù)位計(jì)數(shù)寄存器,USICNT ;通用串行接口低字節(jié)移位寄存器,USISRL ;通用串行接口高字節(jié)移位寄存器,USISRH。 通用串行接口控制寄存器0 (USICTL0 )位76543210位名稱USIPE7USIPE6USIPE5USILSBUSIMSTUSIGEUSIOEUSISWRST操作方式rwrwrwrwrwrwrwrw復(fù)位值00
30、000001USIPE7 : USI SDI/SDA管腳功能使能控制位0USI SDI/SDA管腳功能不使能1USI SDI/SDA管腳功能使能USI模塊工作在SPI模式下,使能管腳 SDI為數(shù)據(jù)輸入管腳;工作在I2C模式下,使能管腳SDA為數(shù)據(jù)輸入/輸出管腳。USIPE6 : USI SDO/SCL管腳功能使能控制位0USI SDO/SCL管腳功能不使能1USI SDO/SCL管腳功能使能USI模塊工作在SPI模式下,使能管腳 SDO為數(shù)據(jù)輸出管腳;工作在 I2C模式下,使 能管腳SCL為時(shí)鐘信號(hào)輸入/輸出管腳。USIPE5 : USI SCLK管腳功能使能控制位0USI SCLK管腳功能不
31、使能1USI SCLK管腳功能使能USI模塊工作在SPI的從模式,管腳 SCLK為時(shí)鐘輸入管腳。工作在 SPI的主模式, 管腳SCLK為時(shí)鐘輸出管腳,工作在 SPI的從模式,管腳 SCLK為時(shí)鐘輸入管腳。USILSB :移位寄存器部數(shù)據(jù)排列順序選擇控制位0MSB為最高位1LSB為最高位USIMST :主/從模式選擇控制位0從模式1主模式USIGE :輸出鎖存使能控制位0移位時(shí)鐘使能輸出鎖存1輸出鎖存一直使能USIOE :數(shù)據(jù)輸出使能控制位0輸出不使能1輸出使能USISWRST :軟件復(fù)位控制位0USI模塊處于工作狀態(tài)1USI模塊處于復(fù)位狀態(tài)位76543210位名稱USICKPHUSII2CUS
32、ISTTIEUSIIEUSIALUSISTPUSISTTIFGUSIIFG操作方式rwrwrwrwrwrwrwrw復(fù)位值00000001USICKPH :時(shí)鐘相位選擇控制位0數(shù)據(jù)改變發(fā)生在第1個(gè)SCLK時(shí)鐘邊沿,捕捉發(fā)生在跟著的時(shí)鐘邊沿1數(shù)據(jù)捕捉發(fā)生在第1個(gè)SCLK時(shí)鐘邊沿,改變發(fā)生在跟著的時(shí)鐘邊沿USII2C : I2C模式使能控制位0I2C模式不使能,工作在 SPI模式1I2C模式使能USISTTIE : START條件中斷使能控制位0START條件中斷不使能1START條件中斷使能USIIE : USI計(jì)數(shù)中斷使能控制位0USI計(jì)數(shù)中斷不使能1USI計(jì)數(shù)中斷使能USIAL :仲裁丟失標(biāo)志
33、位0無仲裁丟失1仲裁丟失USISTP : STOP條件接收標(biāo)志位0無STOP條件接收1STOP條件接收在通用串行接口數(shù)位計(jì)數(shù)寄存器,USICNT,的數(shù)位USICNTx的容大于0,且中斷標(biāo)志USIIFGCC為0的情況下,標(biāo)志 USISTP能夠自動(dòng)清零。USISTTIFG : START條件中斷標(biāo)志0無START條件1出現(xiàn)START條件USIIFG : USI計(jì)數(shù)中斷標(biāo)志0無中斷申請(qǐng)1中斷申請(qǐng)通用串行接口數(shù)位計(jì)數(shù)寄存器,USICNT,數(shù)位USICNTx容為0時(shí),該標(biāo)志將置位;數(shù)位USICNTx容不為0,且中斷標(biāo)志 USIIFGCC為0的情況下,該標(biāo)志能夠自動(dòng)清零。 通用串行接口時(shí)鐘控制寄存器(US
34、ICKCTL)位754210位名稱USIDIVxUSISSELxUSICKPLUSISWCLK操作方式rwrwrwrw復(fù)位值000000USIDIVx :時(shí)鐘分頻系數(shù)選擇控制位Bit7Bit6Bit5USIDIV2USIDIV1USIDIV00000010100111 0 01 0 11 1 01 1 11248163264128USISSELx :時(shí)鐘信號(hào)源選擇控制位Bit4Bit3USISSEL2 USISSEL10000111100110011Bit2USISSEL001010101SCLK和工作在從模式ACLKSMCLKSMCLKUSISWCLK位控制TACCR0TACCR1TACCR
35、2USICKPL :時(shí)鐘極性選擇控制位0低電平為不激活狀態(tài)1高電平為不激活狀態(tài)USISWCLK :軟件時(shí)鐘狀態(tài)控制位0時(shí)鐘低電平1時(shí)鐘高電平 通用串行接口數(shù)位計(jì)數(shù)寄存器(USICNT)位7654 0位名稱USISCLRELUSL16BUSIIFGCCUSICNTx操作方式rwrwrwrw復(fù)位值00000000USISCLREL : SCL釋放控制位0在標(biāo)志USIIFG置位時(shí)SCL線保持低1SCL線釋放USI16B : 16位移位寄存器使能控制位08位移位寄存器模式,僅低字節(jié)移位寄存器USISRL被使用116位移位寄存器模式USIIFGCC : USIIFG標(biāo)志自動(dòng)清除控制位0USIIFG標(biāo)志當(dāng)
36、位USICNTx的容不為0將自動(dòng)清除1USIIFG標(biāo)志不會(huì)自動(dòng)清除USICNT40: Bit40,通用串行接口數(shù)位計(jì)數(shù)器 通用串行接口低字節(jié)移位寄存器( USISRL )位70位名稱USISRLx操作方式rwUSISRLx : Bit70,移位寄存器低字節(jié)。 通用串行接口高字節(jié)移位寄存器( USISRH )位70位名稱USISRHx操作方式rwUSISRHx : Bit70,移位寄存器高字節(jié)。前面介紹的通用串行接口( USI)相關(guān)的6個(gè)寄存器都具有8位,可以采取字節(jié)訪問。 MSP430微控制器是一種16位器件,支持8位的字節(jié)形式訪問,也支持16位的字形式訪問。采用字形式的訪問方式能夠一次傳輸更
37、多的信息。上述的6個(gè)8位寄存器可以組成 3個(gè)16位寄存器,支持16位的字形式訪問以加快訪 問速度。表10.1給出它們之間的組成關(guān)系。表10.116位寄存器與8位寄存器的關(guān)系表字寄存器名稱字寄存器符號(hào)高字節(jié)寄存器低字節(jié)寄存器USI控制寄存器USICTLUSICTL1USICTL0USI時(shí)鐘和計(jì)數(shù)控制寄存器USICCTLUSICNTUSICKCTLUSI移位寄存器USISRUSISRHUSISRL10.3基于串行外圍接口( SPI)的1位數(shù)碼管顯示如圖10.2所示的工作在 SPI模式下,串行數(shù)據(jù)與時(shí)鐘之間的時(shí)間關(guān)系圖,選擇USICKPH=1和USICKPL=0,這時(shí)串行時(shí)鐘波形為第3行波形;串行數(shù)
38、據(jù)波形為第6行波形。這樣的串行時(shí)鐘與數(shù)據(jù)之間的時(shí)間關(guān)系能夠滿足驅(qū)動(dòng) 8 位移位寄存器(串行輸入,并 行輸出)74164所需要的時(shí)間關(guān)系。 程序示例 10.1為采用 MSP430 芯片部串行外圍接口 (SPI) 驅(qū)動(dòng) 1 個(gè)數(shù)碼管進(jìn)行數(shù)據(jù)顯示的演示程序。程序示例 10.1/ 程序名稱: seg1_1spi/ 程序功能:通過 USI 的 SPI 模式控制 1 個(gè) 7 段共陰極數(shù)碼管/ 目標(biāo)芯片: MSP430G2231 / SDO (P1.6 )串行數(shù)據(jù)輸出管腳, SCLK (P1.5 )串行時(shí)鐘輸出管腳/ 注意:使用片時(shí)鐘,時(shí)鐘頻率為默認(rèn)值#include<msp430.h>void
39、 delay_1s(void);const unsigned char decoder_seg710 / 包含名稱定義和對(duì)應(yīng)地址或數(shù)據(jù)的頭函數(shù) / 聲明 1s 延遲函數(shù)聲明顯示代碼=0xee,0x82,0xdc,0xd6,0xb2,0x76,0x7e,0xc2,0xfe,0xf6;void usi_spi_begin(void);int main(void)unsigned char data_seg7; / WDTCTL=WDTPW+WDTHOLD;/ 共陰極數(shù)碼管顯示代碼/ 聲明 USI 模塊的 SPI 模式配置函數(shù)/ 主函數(shù)聲明顯示數(shù)據(jù)變量/ 關(guān)閉看門狗usi_spi_begin( );
40、while(1)for(data_seg7=0x00; data_seg7<0x9; data_seg7+) USISRL=decoder_seg7data_seg7; /USICNT|=0x08;delay_1s( );void usi_spi_begin(void) / USI/ 使用芯片管腳的配置P1SEL|=BIT7;P1DIR&=BIT7;P1SEL|=BIT6;P1DIR|=BIT6;P1SEL|=BIT5;/ USI 模塊的 SPI 模式配置/ 重復(fù)執(zhí)行/ 利用循環(huán)語句產(chǎn)生顯示數(shù)據(jù)顯示數(shù)據(jù)譯碼,串行同步輸出/ 啟動(dòng)串行數(shù)據(jù)傳送/ 調(diào)用 1s 延遲函數(shù)模塊的SPI 模
41、式配置函數(shù)/設(shè)置設(shè)置P1.7P1.7端口為外圍模塊輸入 端口為輸入口輸出口設(shè)置設(shè)置設(shè)置P1.6P1.6P1.5端口為外圍模塊輸入 端口為輸出口端口為外圍模塊輸入輸出口輸出口USICTL0&=USISWRST;/清除軟件 PCI 復(fù)位功能USICTL0|=USIPE7;/ / 使能 SDI/SDA 管腳功能USICTL0|=USIPE6;/ / 使能 SDO/SCL 管腳功能USICTL0|=USIPE5;/ / 使能 SCLK 管腳功能USICTL0&=USILSB;/ 串行輸出數(shù)據(jù) MSB 位在先USICTL0|=USIMST;/ / USI 工作在主模式USICTL0|=U
42、SIGE;/ 輸出鎖存使能USICTL0|=USIOE;/ 串行輸出使能USICTL1|=USICKPH;/時(shí)鐘出現(xiàn)在數(shù)據(jù)之后USICTL1&=USII2C;/使能 SPI 模式USICTL1&=USIIE;/不使能移位計(jì)數(shù)中斷USICKCTL|=USIDIV_0;/時(shí)鐘分頻系數(shù)選擇: 1USICKCTL|=USISSEL_2;/時(shí)鐘信號(hào)源選擇: SMCLKUSICKCTL&=USICKPL;/時(shí)鐘首先出現(xiàn)上升邊沿USICNT&=USI16B;/ / 選擇 8 位數(shù)據(jù)寬度USICNT&=USIIFGCC;/ USIIFG 標(biāo)志當(dāng) USICNTx 不為 0
43、 將自動(dòng)清除/ 設(shè)置 P1.5 端口為輸出口P1DIR|=BIT5;/ USI模塊相關(guān)寄存器配置程序示例 10.1 可以直接用于前面圖5.2 所示的 74164 芯片驅(qū)動(dòng) 1 位數(shù)碼管的應(yīng)用電路。USISRL=decoder_seg7data_seg7;/ 顯示數(shù)據(jù)譯碼,串行同步輸出對(duì)比語句USICNT|=0x08; / 啟動(dòng)串行數(shù)據(jù)傳送 和 1 位 7 段數(shù)碼管的同步串行數(shù)據(jù)接口驅(qū)動(dòng)函數(shù),現(xiàn)在的程序結(jié)構(gòu)變得非常簡(jiǎn)單,同時(shí)對(duì) 程序存儲(chǔ)器的占用也小得多。由串行外圍接口模式配置函數(shù)可以看出,現(xiàn)在的串行同步時(shí) 鐘頻率與 MSP430 微控制器的系統(tǒng)時(shí)鐘頻率 SMCLK 一樣,因此數(shù)據(jù)傳輸也比使用軟件
44、的 方法實(shí)現(xiàn)同步串行數(shù)據(jù)傳輸快得多。這再次證明了經(jīng)常所說的一句話,利用硬件處理信號(hào) 的速度比使用軟件快得多。使用串行外圍接口驅(qū)動(dòng)多個(gè)數(shù)碼管時(shí)需要注意, 2 次輸出顯示代碼之間的時(shí)間間隔必 須大于利用串行方式完成 1 個(gè)顯示代碼傳輸所需要的時(shí)間。向移位寄存器寫入顯示代碼采 用的是并行傳輸方式,一次可以完成 1 個(gè)字節(jié)共計(jì) 8 位的數(shù)據(jù)傳輸,但是串行方式一次只 能輸出 1 位,需要分 8 次才能完成。在程序示例10.1中,串行外圍接口( SPI)的配置采用函數(shù)的形式。這樣既簡(jiǎn)化了主 函數(shù)的結(jié)構(gòu),也方便其它應(yīng)用程序?qū)@部分容的引用。10.4基于串行外圍接口( SPI)的芯片間通信本節(jié)使用 1 個(gè) M
45、SP430 微控制器芯片, 使用程序示例 10.1 實(shí)現(xiàn)數(shù)碼管顯示代碼的同步 串行發(fā)送;再使用另外 1 個(gè) MSP430 微控制器芯片接收這個(gè)顯示代碼,然后使用數(shù)碼管顯MSP430數(shù)據(jù)發(fā)送芯片P1.6P1.7P15"MSP430數(shù)據(jù)接收芯片P1.0P1.1圖10.6芯片間數(shù)據(jù)通信的電路連線示意圖MSP430微控制器的串行外圍接口(SPI)具有獨(dú)立的串行數(shù)據(jù)發(fā)送管腳“ SDO” ( P1.6)和串行數(shù)據(jù)接收管腳“SDI”( P1.7),“ MSP430數(shù)據(jù)發(fā)送芯片”使用前者發(fā)送數(shù)據(jù);“ MSP430數(shù)據(jù)接收芯片”使用后者接收數(shù)據(jù)?!?MSP430數(shù)據(jù)發(fā)送芯片”選擇運(yùn)行程序示例10.1。
46、在程序示例10.1中,串行外圍接口( SPI)配置為主模式,這樣“ MSP430數(shù)據(jù)接收芯片”應(yīng)該配置為從模式,它所需要的 串行時(shí)鐘信號(hào)“ USICLK ”由“ MSP430數(shù)據(jù)發(fā)送芯片”產(chǎn)生。時(shí)鐘信號(hào)“USICLK ”通過兩個(gè)芯片的管腳“ SCLK ”( P1.5)實(shí)現(xiàn)連接。由于兩個(gè)芯片間的數(shù)據(jù)通信占用了它們的串行外圍接口(SPI)以及相關(guān)管腳,數(shù)碼管的顯示驅(qū)動(dòng)只能采用軟件形式實(shí)現(xiàn)模擬同步串行接口,同時(shí)使用1位7段數(shù)碼管的同步串行數(shù)據(jù)接口驅(qū)動(dòng)函數(shù)時(shí)涉及的管腳也需要更換為沒有被占用的管腳?!癕SP430數(shù)據(jù)接收芯片”判斷是否完成1個(gè)完整數(shù)據(jù)字節(jié)的接收可以采用查詢的方法,或者中斷的方法。下面分別
47、給出這兩種方法的驗(yàn)證程序?;诓樵兎椒▽?shí)現(xiàn)串行數(shù)據(jù)的接收通過查詢USI計(jì)數(shù)中斷標(biāo)志,USIIFG,能夠判斷1個(gè)完整的數(shù)據(jù)是否已經(jīng)被接收。程 序示例10.2為采用這種方法的“ MSP430數(shù)據(jù)接收芯片”控制程序。程序示例10.2/程序名稱:_spi/程序功能:通過USI的SPI模式實(shí)現(xiàn)2個(gè)MSP430芯片之間通信的接收功能/ 目標(biāo)芯片:MSP430G2231/數(shù)據(jù)發(fā)送采用程序示例10.1傳輸數(shù)碼管的顯示代碼/ SDO ( P1.6 )串行數(shù)據(jù)輸出管腳,SCLK( P1.5 )串行時(shí)鐘輸出管腳/本程序接收數(shù)碼管的顯示代碼/ SDI ( P1.7 )串行數(shù)據(jù)輸入管腳,SCLK( P1.5 )串行時(shí)鐘
48、輸入管腳/接收的顯示代碼使用數(shù)碼管顯示/顯示代碼采用模擬同步串行接口送到74164 芯片/ P1.0為模擬串行數(shù)據(jù)管腳;P1.1為模擬串行時(shí)鐘管腳/注意:使用片時(shí)鐘,時(shí)鐘頻率為默認(rèn)值#include<msp430.h>void seg7_begin(void);/包含名稱定義和對(duì)應(yīng)地址或數(shù)據(jù)的頭函數(shù)/聲明數(shù)碼管顯示電路配置函數(shù)/ 聲明驅(qū)動(dòng) 1 位數(shù)碼管的同步串行接口驅(qū)動(dòng)函數(shù)/ 聲明 USI 模塊的 SPI 模式配置函數(shù)/ 主函數(shù)/ 關(guān)閉看門狗/ 數(shù)碼管顯示電路配置/ USI 模塊的 SPI 模式配置/ 重復(fù)執(zhí)行/ 啟動(dòng)串行數(shù)據(jù)接收等待 1 個(gè)字節(jié)數(shù)據(jù)接收完畢顯示接收的數(shù)據(jù)工作在主模
49、式工作在從模式void seg7_1ms(unsigned char seg7_data);void usi_spi_begin(void);int main(void)WDTCTL=WDTPW+WDTHOLD;seg7_begin( );usi_spi_begin( );while(1)USICNT|=0x08;while(USICTL1&USIIFG)=0) / ; seg7_1ms(USISRL); /程序示例 10.2 同樣為了節(jié)約篇幅也沒有給出所使用的函數(shù)原型。需要注意,這些函數(shù) 原型不能直接使用前面出現(xiàn)的類似函數(shù),但是可以由它們改寫而成。數(shù)碼管顯示電路配置函數(shù)中需要將管腳P
50、1.0和P1.1配置為并行數(shù)字輸入 /輸出管腳、輸出方向。1位數(shù)碼管的同步串行接口驅(qū)動(dòng)函數(shù)中現(xiàn)在需要使用管腳P1.0作為串行數(shù)據(jù)管腳,管腳P1.1作為串行時(shí)鐘管腳。由于“MSP430數(shù)據(jù)發(fā)送芯片”運(yùn)行程序示例10.1,發(fā)送的為數(shù)碼管的顯示代碼,因此這里不需要再進(jìn)行顯示數(shù)據(jù)到顯示代碼的譯碼。USI 模塊的配置函數(shù)只需要對(duì)程序示例 10.1 的對(duì)應(yīng)函數(shù)中語句USICTL0|=USIMST;/ USI進(jìn)行修改為USICTL0&=USIMST;/ USI從選擇工作在主模式修改為從模式。在主函數(shù)的重復(fù)執(zhí)行語句塊中,首先向通用串行接口數(shù)位計(jì)數(shù)器,USICNT,寫入需要接收的數(shù)據(jù)位數(shù),同時(shí)啟動(dòng)接收過
51、程。由于“ MSP430 數(shù)據(jù)接收芯片”工作在從模式,移 位時(shí)鐘來自于“ MSP430 數(shù)據(jù)發(fā)送芯片”,因此只能在發(fā)送芯片的發(fā)送過程中,接收芯片 才能工作。當(dāng)接收芯片移入所需要的數(shù)據(jù)位數(shù),通用串行接口數(shù)位計(jì)數(shù)器的容減到0,置位 USI計(jì)數(shù)中斷標(biāo)志,USIIFG。計(jì)數(shù)中斷標(biāo)志的置位使得程序退出循環(huán)語句,將通用串行接口低 字節(jié)移位寄存器, USISRL ,的容送到數(shù)碼管顯示電路。一個(gè)循環(huán)完成,再次向通用串行接口數(shù)位計(jì)數(shù)器的賦值,清零USI 計(jì)數(shù)中斷標(biāo)志,USIIFG。準(zhǔn)備接收下一個(gè)字節(jié)的信息。10.4.2 基于中斷方法實(shí)現(xiàn)串行數(shù)據(jù)的接收類似于按鍵動(dòng)作的識(shí)別,使用查詢的方法判斷數(shù)據(jù)是否已經(jīng)被接收需要
52、進(jìn)行查詢,這 對(duì)程序的工作效率將產(chǎn)生很大的影響。使用中斷的方法也可以來判斷 1 個(gè)完整的數(shù)據(jù)是否 已經(jīng)被接收,程序示例 10.3 為采用中斷方法的“ MSP430 數(shù)據(jù)接收芯片”控制程序。 程序示例 10.3/ 程序名稱: _spi_rupt/ 程序功能:通過 USI 的 SPI 模式實(shí)現(xiàn) 2 個(gè) MSP430 芯片之間通信的接收功能 / 目標(biāo)芯片: MSP430G2231 / 數(shù)據(jù)發(fā)送采用程序示例 10.1 傳輸數(shù)碼管的顯示代碼SCLK (P1.5 )串行時(shí)鐘輸出管腳SCLK (P1.5 )串行時(shí)鐘輸入管腳/ SDO ( P1.6 )串行數(shù)據(jù)輸出管腳,/ 本程序接收數(shù)碼管的顯示代碼/ SDI
53、 ( P1.7 )串行數(shù)據(jù)輸入管腳,/ 接收的顯示代碼使用數(shù)碼管顯示/ 顯示代碼采用模擬同步串行接口送到 74164 芯片/ P1.0 為模擬串行數(shù)據(jù)管腳; P1.1/ 注意:使用片時(shí)鐘,時(shí)鐘頻率為默認(rèn)值 #include<msp430.h>void seg7_begin(void);void seg7_1ms(unsigned char seg7_data); void usi_spi_begin(void); /為模擬串行時(shí)鐘管腳/ 包含名稱定義和對(duì)應(yīng)地址或數(shù)據(jù)的頭函數(shù)/ 聲明數(shù)碼管顯示電路配置函數(shù)/ 聲明驅(qū)動(dòng) 1 位數(shù)碼管的驅(qū)動(dòng)函數(shù)聲明 USI 模塊的 SPI 模式配置函數(shù)#
54、pragma vector=USI_VECTOR_interrupt void usi_spi(void) seg7_1ms(USISRL); USICNT|=0x08;int main(void)WDTCTL=WDTPW+WDTHOLD; seg7_begin( );usi_spi_begin( );/ USI_EINT();USICNT|=0x08; while(1) ; / SPI 中斷服務(wù)程序/ 顯示接收的數(shù)據(jù)/ 清除中斷標(biāo)志,啟動(dòng)串行數(shù)據(jù)接收/ 主函數(shù)/ 關(guān)閉看門狗/ 數(shù)碼管顯示電路配置 模塊的 SPI 模式配置/ MSP430 系統(tǒng)開中斷/ 啟動(dòng)串行數(shù)據(jù)接收/ 重復(fù)執(zhí)行程序示例10.3可以使用程序示例10.2的硬件電路。這里同樣沒有給出所使用的函數(shù)原 型,它使用了與程序示例10.2同樣的函數(shù)。注意,這里以程序示例10.2中的USI模塊配置函數(shù)為基礎(chǔ)進(jìn)行調(diào)整,調(diào)整的容
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)軟件在項(xiàng)目財(cái)務(wù)管理中的應(yīng)用
- 運(yùn)動(dòng)醫(yī)療保障體系在大型體育賽事中的作用研究
- 鎮(zhèn)巴縣2025屆小升初數(shù)學(xué)檢測(cè)卷含解析
- 郴州市宜章縣2024-2025學(xué)年三年級(jí)數(shù)學(xué)第二學(xué)期期末聯(lián)考試題含解析
- 購(gòu)物中心節(jié)日營(yíng)銷活動(dòng)策劃與執(zhí)行
- 廣西演藝職業(yè)學(xué)院《機(jī)械制造基礎(chǔ)綜合實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西省運(yùn)城市永濟(jì)市2024-2025學(xué)年五年級(jí)數(shù)學(xué)第二學(xué)期期末監(jiān)測(cè)試題含答案
- 信陽航空職業(yè)學(xué)院《傳感器原理及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年稻城縣四年級(jí)數(shù)學(xué)第二學(xué)期期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 2025年西部區(qū)域平臺(tái)(甘肅久聯(lián))校園招聘筆試參考題庫附帶答案詳解
- 九年級(jí)中考物理-安培定則(右手螺旋定則)復(fù)習(xí)題匯總及解析
- 錨固溝施工方案
- 廣西太陽能資源分析
- Internet網(wǎng)絡(luò)技術(shù)與應(yīng)用課件
- 華東師大版九年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)課時(shí)練習(xí)(一課一練)
- “課程思政”融入專業(yè)課教學(xué)的探索課程思政與專業(yè)課結(jié)合
- 工程結(jié)算審核服務(wù)方案技術(shù)標(biāo)
- 動(dòng)物水、電解質(zhì)代謝及酸堿平衡紊亂-脫水(動(dòng)物病理學(xué)課件)
- 太喜歡體態(tài)訓(xùn)練了
- 裝修客戶需求表
- 小學(xué)二年級(jí)英語開學(xué)第一課課件
評(píng)論
0/150
提交評(píng)論