基于單片機I/O口模擬的SPI串行通信實現_第1頁
基于單片機I/O口模擬的SPI串行通信實現_第2頁
基于單片機I/O口模擬的SPI串行通信實現_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上基于單片機IO口模擬的SPI串行通信實現【摘要】基于單片機或ARM芯片的普通I/O口,模擬實現SPI串行通信。模擬SPI通信需嚴格時鐘時序,只有當主器件模擬的SPI時序與從器件的SPI時序完全一致時,才能實現SPI通信的正常數據交換。【關鍵詞】I/O口;SPI時序;主器件;從器件1.引言SPI(SeIial Peripheral Interfa即串行外圍設備接口)總線技術是一種高效率的串行接口技術,主要用于擴展外設和進行數據交換。在許多單片機中,已經作為一種標準配置。但某些應用非常廣泛的單片機并不帶標準SPI接口,這樣就限制了在這些系統中使用帶SPI接口的器件。解決該

2、問題的方法是使用單片機的普通I/O口通過軟件模擬的方式實現SPI串口通信,以滿足應用需求。此外,采用標準的SPI接口有很多局限性,在設備外圍開發和擴展增加負擔,而通過I/O口模擬實現SPI通信將不受這些限制,可輕松實現其外圍開發和擴展,靈活性更大;通過I/O口模擬SPI通信,其通用性和可移植性強,實現簡單、方便。2.SPI總線概述SPI通信的總線形式一般采用4線制,即為使能控制線SN、始終控制線SCLK、主出從入線MOSI和主入從出線MISO。可實現一個主控制器掛接多個從控制器,如圖1所示,為SPI總線框圖。使能控制線SN完成對從控制器的片選,當需要與某個控制通信時,將SN置于打開(高或者低,

3、根據不同芯片分別對待)狀態,使從控制器處于可通信狀態,同時時鐘控制線SCLK用于控制SPI通信的時序,該時序需與從控制器的SPI時序保持完全一致,這樣才能保證SPI通信的實現。主出從入線MOSI為SPI串口通信數據輸出線,主入從出線MISO為SPI串口通信數據輸入線。當主控制器MCU只與一個從控制器通信或所選從控制器無使能控制端時,使能控制線SN可不用,即3線制SPI通信,也可實現模擬SPI通信。3.SPI通信時序控制相對于標準的SPI通信接口,通過I/O口模擬的SPI通信,其模擬時序要求很嚴格,即主控制器模擬的SPI時序必須與從控制器的SPI通信時序保持一致,否則會導致在通信時出現接收不到數

4、據或是接收數據錯誤的情況。SPI通信的時序控制是通過時鐘控制線SCLK來模擬完成的。所以說,嚴格、標準的SPI時序是完成SPI通信的關鍵。時鐘控制線SCLK可以是高電平觸發也可以是低電平觸發,該模式由從控制器的觸發時鐘決定,不可隨意改變。SCLK觸發1次,在對應的MOSI或是MISO輸出或是輸入1次,即1位(bit),其以移位寄存器的方式進行操作,完成1個字節(byte)的讀或寫需循環進行8次。數據傳輸時是高位在前,低位在后。假如某芯片即從控制器的工作時序如圖2所示。由圖可知,將其使能置低時有效,即片選成功可進行SPI通信。該芯片在SLCK上升沿是完成讀操作,即主控制器完成輸出操作,在SCLK

5、下降沿時完成寫操作,即主控制器完成輸入操作。當SCLK制造第1個上升沿時,主控制器輸出數據的最高位即Bit7;當SCLK制造第2個上升沿時,主控制器輸出數據的Bit6,依此類推,8次上升沿觸發后就完成了1個字節的輸出。同樣的原理,當SCLK制造第1個下降沿時,主控制器讀取數據的最高位即Bit7;當SCLK制造第2個下降沿時,主控制器讀取數據的Bit6,依此類推,8次下降沿觸發后就完成了1個字節的讀取。4.SPI通信實現通過第二節對SPI通信時序控制的描述,可以非常簡單的實現模擬SPI串口通信。筆者將以兩種較有代表性的單片機與某磁傳感芯片的軟件實現為例,給出通過I/O口模擬實現SPI通信的例子。

6、需說明的是,例程中在MSP430例程中的讀操作按1次讀1個字節完成;而在JN5148例程中的讀操作按1次讀2個字節完成。以下2個例程全部已用于實際產品研制中,通信可靠,完全滿足實際應用要求。4.1 基于MSP430單片機首先,我們先定義模擬SPI接口所需的I/O口,定義P4.4為輸出MOSI,P5.0為輸入MISO,P4.5為SCLK信號,軟件實現如下。數據輸出的代碼為:代碼說明:循環8次,即輸出1個字節;P4.5輸出0,SCLK下降沿;data為輸出的字節,若其高位為1,則輸出1,否則輸出0;P4.4輸出1;否則P4.4輸出0;P4.5輸出1,SCLK上升沿;數據data按位右移;循環8次,

7、即輸入1個字節;數據data按位右移;P4.5輸出0,SCLK下降沿;讀P5.0端口,若其高位為1,則輸入為1,否則輸入為0;讀取數為1;讀取數為0;P4.5輸出1,SCLK上升沿。4.2 基于JN5148模塊與上節類似,我們先對I/O進行初始化。定義DIO_9為輸出MOSI,DIO_10為輸入MISO,DIO_11為SCLK信號。軟件實現如下。數據輸出的代碼為:此處與3.1節中類似的代碼將不再詳細解釋,只擇重點說明。DIO_11輸出0,SCLK下降沿,函數DIO_ONorOFF(DIO_11,1)的意思為將DIO_11輸出1,即置高;DIO_9輸出1;讀所有DIO數據;取DIO數據的第10位

8、的數,即輸入。5.模擬SPI通信時需注意的問題模擬SPI作為一種串行外圍設備接口用于數據交換,在實際應用中,需注意以下幾點。(1)模擬SPI通信必須嚴格時序,否則會出現無法讀取或是寫入數據,不能完成數據交換;或是出現讀取數據不完全,即數據錯誤等情況;(2)SPI接口芯片數據的讀寫發生在時鐘信號的上升沿或是下降沿。在進行編程時應保證數據足夠的處理時間,即數據處理穩定后再進行數據的讀寫操作,以免出現數據讀寫不完全而出錯;(3)在進行數據交換時,應注意通信字節位發出的順序,即是高位在前,低位在后還是高位在后,低位在前。6.總結基于單片機的普通I/O口,通過軟件模擬的方式實現的SPI串行通信,其實現簡單方便。在廣泛的實際應用中,也驗證了其功能的可靠性、穩定性。而且,模擬SPI通信在不同的單片機或是微芯片具有很強的通用性和移植性,可完全取代標準SPI接口。參考文

溫馨提示

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

評論

0/150

提交評論