


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
AD〃C812串行外設(shè)接口(SPI)工作原理及應(yīng)用實例分析本文主要從全集成的12位數(shù)據(jù)采集系統(tǒng)ADpC812入手,通過首先分析其串行外設(shè)接口SPI的工作原理與系統(tǒng)組成,并用一個主機與從機的電路連接實例來說明其串行外設(shè)接口的具體應(yīng)用特征,提供給嵌入式學(xué)習(xí)研究者一個完整的SPI串行接口方案。ADpC812在單個芯片內(nèi)包含了高性能的自校準(zhǔn)多通道ADC、2個12位DAC以及可編程的8位MCU(與8051兼容)。為便于MCU與各種外圍設(shè)備進(jìn)行通信,ADpC812提供了3種串行I/O端口:UART接口、I2C兼容的串行接口和串行外設(shè)接口(SPI)。其中,SPI接口是工業(yè)標(biāo)準(zhǔn)的同步串行接口,是一種全雙工、三線通信的系統(tǒng)。它允許MCU與各種外圍設(shè)備以串行方式(8位數(shù)據(jù)同時、同步地被發(fā)送和接收)進(jìn)行通信。在SPI接口中,數(shù)據(jù)的傳輸需要1個時鐘信號和兩條數(shù)據(jù)線。SPI可工作在主模式或從模式下。在主模式,每一位數(shù)據(jù)的發(fā)送/接收需要1次時鐘作用;而在從模式下,每一位數(shù)據(jù)都是在接收到時鐘信號之后才發(fā)送/接收。1個典型的SPI系統(tǒng)包括1個主MCU和1個或幾個從外圍器件。SPI接口可設(shè)置成在發(fā)送/接收1個字節(jié)的結(jié)束時產(chǎn)生1次中斷。主時鐘可以通過編程而成為不同的狀態(tài),既可編程為4種不同主波特率的任一種,又可對時鐘的極性和相位進(jìn)行編程。SPI也可用于那些需要比微控制器上的并行I/O端口更多輸入或輸出端的場合中。SPI提供了一種擴展I/O功能的最簡單的辦法,只需使用最少的微控制器引腳。SPI串行接口可以在短距離內(nèi)進(jìn)行主機與從機的數(shù)據(jù)傳送,并且具有多種可調(diào)的傳輸方式、連接電路簡單、使用方便等優(yōu)點。為實現(xiàn)主機和從機及從外圍設(shè)備的通信提供了一種簡單、易行的方案。一、工作原理1、SPI的信號說明SPI系統(tǒng)使用4條線可與多種標(biāo)準(zhǔn)外圍器件直接接口:ADpC812的串行外設(shè)接口(SPI)及其應(yīng)用2串行時鐘線(SCLOCK)、主機輸入/從機輸出數(shù)據(jù)線MISO、主機輸出/從機輸入數(shù)據(jù)線MOSI和低電平有效的從機選擇線SS。SCLOCK是主機的時鐘線,為MISO數(shù)據(jù)的發(fā)送和接收提供同步時鐘信號。每一位數(shù)據(jù)的傳輸都需要1次時鐘作用,因而發(fā)送或接收1個字節(jié)的數(shù)據(jù)需要8個時鐘的作用。主機的時鐘是通過主機的硬件設(shè)置的,并和各個從機的SCLOCK相連。時鐘的波特率、極性、相位是由SPICON(SPI控制寄存器)來設(shè)置的。MISO是主機的輸入/從機的輸出數(shù)據(jù)線。主機的MISO應(yīng)與從機的MISO相連進(jìn)行高位在前的數(shù)據(jù)交換。MOSI是SPI接口的SPI主機輸出/從機輸入數(shù)據(jù)引腳。這一引腳應(yīng)當(dāng)連接主微控制器的數(shù)據(jù)輸出和從微控制器的數(shù)據(jù)輸入端MOSI,進(jìn)行高位在前數(shù)據(jù)的交換。SS只在從方式中用于低電平選中從。SS對應(yīng)的是P1.5,在初始化時P1口被設(shè)置為模擬輸入,因而通過清除P1.5可將其設(shè)置為數(shù)據(jù)輸入,才可完成主、從機的通信。2、SPI的寄存器SPI有2個相關(guān)寄存器:SPICON和SPIDAT,其中SPICON包含各種標(biāo)志位、使能位、方式位及時鐘位。當(dāng)發(fā)送和接收1字節(jié)數(shù)據(jù)完畢時自動置全。該位也可以通過軟件控制。當(dāng)于中斷時,應(yīng)當(dāng)打開中斷EA,將IE2.0置位。當(dāng)執(zhí)行中斷服務(wù)程序時,硬件自動清除該位WCOL寫沖突錯誤標(biāo)志位。當(dāng)SPI正進(jìn)行數(shù)據(jù)交換時,若向SPIDAT中寫數(shù)據(jù)將產(chǎn)生寫沖突錯誤,寫入的數(shù)據(jù)將無效,原有交換繼續(xù)執(zhí)行。必須由軟件清除SPESPI使能位。SPE=0,I2C串口使能,SPI串口禁止;SPE=1,I2C串口禁止,SPI串口使能SPIM主模式選擇位。SPIM=0,SPI工作于從模式;SPIM=1,SPI工作于主模式CPOL時鐘極性選擇位。CPOL=0,主機時鐘有高到低的跳變讀取數(shù)據(jù),數(shù)據(jù)字節(jié)之間傳輸時,時鐘處于高電平空閑狀態(tài);CPOL=1,主機時鐘有低到高的跳變讀取數(shù)據(jù),各數(shù)據(jù)字節(jié)之間傳輸時時鐘處于低電平空閑狀態(tài)(見圖1)CPHA時鐘相位選擇位。CPHA=0,傳輸數(shù)據(jù)的高位MSB在SS的降沿出現(xiàn),在時鐘第1個前沿讀入;之后下一數(shù)據(jù)位在時鐘后沿出現(xiàn),在下一個前沿讀入;直到8位數(shù)據(jù)讀完。CPHA=1,數(shù)據(jù)在時鐘前沿出現(xiàn),在同一時鐘周期的后沿讀入(見圖1)。讀位還可控制從機的同步方式SPR1SPR0SPI波行選擇位。SPR1SPR0波特率00fosc/401fosc/810fosc/3211fosc/64注:從方式下這兩位都清零另一個SPI寄存器是SPIDAT。對這一寄存器的寫操作會產(chǎn)生從高位開始的一位位的數(shù)據(jù)發(fā)送。如果寫操作發(fā)生在其他數(shù)據(jù)正在傳遞的過程中,那么WCOL將置位。如果寫操作進(jìn)行時沒有其他數(shù)據(jù)在傳遞,SPIDAT中的數(shù)據(jù)將自動鎖存到移位寄存器中,移位寄存器從高位開始發(fā)送數(shù)據(jù),發(fā)送結(jié)束后輸入的字節(jié)將鎖存到SPIDAT中,可進(jìn)行軟件讀出。3、主模式發(fā)送和接收可以同時工作在主模式下。主模式的顯著特征是不論是發(fā)送還是接收始終有SCLOCK信號,SS信號不是必需的。因為SPI串口只能有一片主機,因而不存在主機的選擇問題。發(fā)送操作是由向SPIDAT中寫數(shù)據(jù)而觸發(fā)的。在主模式下,時鐘信號的1次作用對應(yīng)一位數(shù)據(jù)的發(fā)送(MISO)和另一位數(shù)據(jù)的接收(MOSI)。如圖2所示,在主機中數(shù)據(jù)從移位寄存器中自左向右發(fā)出送到從機(MOSI),同時從機中的數(shù)據(jù)自右向左發(fā)到主機(MISO),經(jīng)過8位時鐘周期完成1個字節(jié)的發(fā)送。輸入字節(jié)保留在移位寄存器中,此時ISPI自動置位(如果有中斷設(shè)置,則產(chǎn)生中斷),移位寄存器的數(shù)據(jù)將被鎖存到SPIDAT中,此后對SPIDAT的讀操作將把數(shù)據(jù)讀出。將主機的SS和從機SS的相連的方式?jīng)]有意義,因為P1.5只可作輸入,所以主機的SS不能為從機的SS提供選通信號。為了解決這一問題,可利用主機其他輸入/輸出口線與從機的SS相連,實現(xiàn)選通控制,可以有多根口線控制多個從機。如果要讀取主機SS的狀態(tài),需要將主機的SS與主機上另一根輸入/輸出口線相連,通過對該口線讀操作獲取主機SS的狀態(tài)。4、從模式發(fā)送和接收可以同時工作在從模式下。ADMC812的串行外設(shè)接口(SPI)及其應(yīng)用3從模式的顯著特征是:不論是發(fā)送還是接收始終必須在SCLOCK信號作用下進(jìn)行,并且SS信號必須有效。SS在初始化之后,要設(shè)置為數(shù)字輸入(CLRP1.5),當(dāng)SS信號無效時,數(shù)據(jù)的發(fā)送無法進(jìn)行并且輸入的數(shù)據(jù)視為無效。這是因為輸入的時鐘信號是與SCLOCK的邏輯與操作,而SCLOCK信號是SS的反轉(zhuǎn)。這樣當(dāng)SS為高時,就沒有時鐘信號輸入。當(dāng)CPHA=1時,SS始終置地;當(dāng)CPHA=0時,在從機接收到第1個時鐘之前SS必然置低,在接收完畢之后必然置高。數(shù)據(jù)的發(fā)送和接收的過程見圖2,與主模式下基本相似,只是移位寄存器的數(shù)據(jù)移出和輸入方向與之相反。從模式下的SS信號也須通過連接其他口線來讀取狀態(tài)。5.從模式下的時鐘同步通過設(shè)置CPHA位可以獲得從模式下的兩種同步方式。由于SCLOCK信號線可能存在干擾脈沖,如果這些干擾脈沖大到一定程序,從機時就會誤認(rèn)為收到了時鐘信號,將導(dǎo)致接收數(shù)據(jù)錯誤。這樣依靠同步結(jié)構(gòu)的SPI將失去同步的意義。CPAH=1時,如果有其他脈沖的干擾,A卯C812將無法與主機獲得同步。選擇這種方式,當(dāng)SS為低時,時鐘計數(shù)器才開始工作。每經(jīng)過8個時鐘同周期,ISPI將置位(如果中斷設(shè)置正確將產(chǎn)生中斷),并且移位寄存器的數(shù)據(jù)鎖存到SPIDAT中。SS保持低電平不會使時鐘計數(shù)器復(fù)位。CPHA=0時,如果有其他脈沖的干擾,ADpC812也可與主機獲得同步。在這種方式下,從機通過SS信號獲得的,而不是通過時鐘信號獲得的。當(dāng)SS信號變低時,時鐘計數(shù)器復(fù)位,數(shù)據(jù)位在此后的每一個時鐘發(fā)送和接收;當(dāng)SS變高時,ISPI位置位(如果中斷設(shè)置正確,將產(chǎn)生中斷),并且移位寄存器的數(shù)據(jù)鎖存到SPIDAT中。ISPI置位與數(shù)據(jù)的鎖存始終與時鐘計數(shù)值無關(guān),因此當(dāng)SS的觸發(fā)在多于或少于8個時鐘時,在SS返回高電平瞬間,ADpC812將產(chǎn)生中斷,并且收到或發(fā)送的數(shù)據(jù)將不可靠。在這種方式下,SS不可始終置低,如果始終置低,那么從機將始終發(fā)送00。當(dāng)了與主機獲得同步,從機SS的下降沿必然由主機控制。當(dāng)SS變低時,從機產(chǎn)生外部中斷,中斷服務(wù)中SPE位由軟件清除,然后重新置位。SPE位的置位將使時鐘計數(shù)器復(fù)位到零。須注意的一點是這一中斷必須有比其他中斷更高的優(yōu)先級,才可使從機在主機第1個時鐘到來之間獲得同步。主機程序必須為從機中斷執(zhí)行中斷服務(wù)提供足夠的時間,以對SPE進(jìn)行操作。典型的操作是在清除SS和向SPIDAT中寫數(shù)據(jù)之間用12?15個NOP指令。ADpC812的串行外設(shè)接口(SPI)及其應(yīng)用4二、實際應(yīng)用圖3所示為1個主機和1個從機典型的電路連接圖。注意主、從機要有公共的地。根據(jù)圖3的連接情況及前面分析的主、從機工作工程,繪制流程圖如圖4所示。主機程序:SETEA;打開中斷允許SETIE2.0;打開SPI中斷MOVSPICON,#30H;送SPI控制字MASTER:CLRP3.5;置SS為低NOP;等待從機中斷執(zhí)行完畢NOPNOPNOPMOVSPIDAT,#DATA;向SPIDAT中寫數(shù)據(jù)LCALLDELAY;根據(jù)選擇的分頻比算出數(shù)據(jù)傳輸?shù)臅r間,確定DELAY子程序的延時時間(也可用中斷方式)SETBP3.5;將SS置高LJMPMASTER;送下一個數(shù)從機程序:ORG0013H;外部中斷INT0入口CLRSPE;SPE位清除SETBSPE;與主機時鐘獲得同步SETBP3.2;撤銷中斷RETI……SETBEA;打開中斷允許SETBIE2.0;打開SPI中斷SETBEX0;打開外部中斷MOVSPICON,#20H;送SPI控制字CLRP1.5;設(shè)置為數(shù)字輸入JBP3.1$;判斷P3.1是否為低CLRP3.2;產(chǎn)生INT0中斷CLALLDELAY;等待數(shù)據(jù)傳送完畢MOVA,SPIDAT;讀取數(shù)據(jù)ADpC812的串行外設(shè)接口(SPI)及其應(yīng)用5通過以上程序可以實現(xiàn)從主機向從機中發(fā)送數(shù)據(jù)的操作。在某些情況下,從微控制器所完成的功能較少,如果采用ADpC812會產(chǎn)生資源和經(jīng)濟(jì)的浪費,為此可以采用MCS-51系列的微控制器作為從機。這樣不僅實現(xiàn)了必要的功能又節(jié)約了資源。由于MCS-51沒有SPI串口,所以采用MCS-51作為從機需要模擬SPI的工作模式來完成數(shù)據(jù)的傳送。下面給出模擬SPI接收數(shù)據(jù)的電路連接圖(見圖5)和相關(guān)程序。ADpC812作為主機的程序與前面相同。8051模擬SPI串口接收數(shù)據(jù)程序如下:ORG0013HINT0:MOVR0,#8;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南省安陽市文峰區(qū)2024-2025學(xué)年九年級上學(xué)期1月期末化學(xué)試題(含答案)
- 2019-2025年軍隊文職人員招聘之軍隊文職政治學(xué)能力檢測試卷B卷附答案
- 臨床急救知識培訓(xùn)課件
- 酒吧員工禁止戀愛合同(2篇)
- 2025年反電信網(wǎng)絡(luò)詐騙法測試題庫及參考答案
- 自體輸血知識培訓(xùn)課件
- 農(nóng)資產(chǎn)品經(jīng)銷代理合作協(xié)議
- 共享單車租賃服務(wù)協(xié)議
- 睡前故事故事解讀
- 遼寧省大連市2024-2025學(xué)年高一上學(xué)期1月期末考試生物學(xué)試題(含答案)
- 人教版(2025新版)七年級下冊數(shù)學(xué)第七章 相交線與平行線 單元測試卷(含答案)
- 汽輪機輔機培訓(xùn)
- 國之重器:如何突破關(guān)鍵技術(shù)-筆記
- 早產(chǎn)兒和低出生體重兒袋鼠式護(hù)理臨床實踐指南(2024)解讀1
- 三廢環(huán)保管理培訓(xùn)
- 全套IECQ QC080000-2017 有害物質(zhì)過程管理體系程序文件
- 《三角形的分類》-完整版課件
- 鐵路工程預(yù)算定額標(biāo)準(zhǔn)
- 叉車使用申請表
- 《中外歷史綱要上》第4課 西漢與東漢-統(tǒng)一多民族封建國家的鞏固(課件)(共23張PPT)
- [轉(zhuǎn)載]鄭桂華《安塞腰鼓》教學(xué)實錄
評論
0/150
提交評論