歡迎您光臨本站 登入註冊首頁

SPI介面單線應用

admin @ 2014-03-26 , reply:0

概述

摘要:為解決I/O口數據傳輸的速率問題,提出SPI介面的單線應用方案,分析該方法的可行性,並在單片機ADuC812與射頻無線通信模塊nRF2401間的介面設計中得到了應用,驗證該方案的有效性。該方案具……

摘要:為解決I/O口數據傳輸的速率問題,提出SPI介面的單線應用方案,分析該方法的可行性,並在單片機ADuC812與射頻無線通信模塊nRF2401間的介面設計中得到了應用,驗證該方案的有效性。該方案具有電路設計簡單、數據傳輸速率高等優點。

1 SPI通信
SPI信號線:一般的SPI介面使用4條信號線與外圍設備介面,其具體功能如下:

  • SCLOCK: 主機的時鐘線,為數據的發送和接收提供同步時鐘信號。每一位數據的傳輸都需要1次時鐘作用, 因而發送或接收1個位元組的數據都需要8個時鐘作用。主機的時鐘可以通過固件進行設置,並和從機的時鐘線相連。
  • MISO:主機輸入/從機輸出數據線。主機的MOSO應與從機的發送數據端相連,進行高位在前的數據交換。
  • SS:低電平有效的從機選擇線。當該線置低時,才能跟從機進行通信。

SPI工作模式:SPI的工作模式分為:主模式和從模式。

  • 主模式的特點是不論發送還是接收始終有SCLOCK信號,SS信號不是必需的, 由於SPI只能有一個主機, 因而不存在主機的選擇問題。
  • 從模式的特點是無論發送還是接收必須在時鐘信號SCLOCK的作用下才能進行,並且SS信號必須有效。

    不論是在主模式下還是在從模式下,都要在時鐘極性和時鐘相位的配合下才能有效的完成一次數據傳輸。

2 SPI介面的單線應用
    在標準的SPI介面間進行通信時,SPI匯流排的四條信號線中: 主機SCLOCK與從機SCLOCK相連; 主機MISO與從機MOSI相連;主機MOSI
與從機MISO 相連; 主機控制信號線與從機的SS相連。在SPI介面與非標準介面進行通信時,例如與有的串列RAM 介面,由於雙向I/O數據線只有一條,時鐘和片選信號線都有,那麼如何利用SPI的高速特性進行數據的讀出和寫入呢?
    在這裡提出SPI的單線應用方案,其如圖1所示。主機的時鐘信號SCLOCK 和片選信號SS與從機的對應信號線相連, 不同的是主機的MOSI和MISO信號線分別經過合適的電阻與從機的I/O信號線相連。當主機給從機發送數據時,在時鐘信號的作用下,數據從MOSI口線經電阻1到從機的I/O 口線;當主機接收數據時,也需要在時鐘信號的作用下,數據從從機的I/O口線經電阻2到主機的MISO口線。該方案中MOSI與MISO連在一起, 由於加了適當的電阻,所以不違反電路設計原則,但如果電阻大小不當會對信號的特性帶來影響 。
 
圖1 SPI單線應用方案

3 SPI介面的單線應用舉例
    本例是作者設計的單片機,ADuC812的SPI匯流排與射頻無線通信模塊nRF2401間的通信介面,由於nRF2401隻支持I/O數據傳輸方式,但是為了提高無線通信的數據速率,作者採用單線方式實現了SPI與nRF2401的通信。

電路設計
    ADuC812的SPI與nRF2401的連接原理如圖2所示。其中ADuC812作為主機,nRF2401作為從機,PWR、CE、CS是nRF2401的工作模式選擇信號,他們共同完成從機的片選任務,相當於SS信號。CLK1是ADuC812串列時鐘信號。根據信號阻抗匹配原則,通信中選用兩個6K 的電阻。ADuC812單片機的SPI介面由SPICON (SPI控制寄存器)、SPIDAT (SPI數據寄存器)來控制, 通過設定SPICON 寄存器的各位實現SPI的各種工作模式。
 
圖2 ADuC812的SPI與nRF2401的連接原理
    控制寄存器SPICON中從高到低各位說明如下:

  • ISPI: 中斷標誌位。當發送或接收1位元組數據完畢時自動置1.當執行中斷服務程序時,硬體自動清除該位。該位也可以通過軟體控制。
  • WCOL:寫衝突錯誤標誌位。
  • SPE:SPI使能位。若SPE=0,則I2C串列口工作;若SPE=1,則SPI串列口工作。
  • SPIM:主模式選擇位。若SPIM=0,則SPI工作於從模式;若SPIM=1,則SPI工作於主模式。
  • CPOL:時鐘極性選擇位。CPOL=0,在主機時鐘下降沿時讀取數據,各數據位元組之間傳輸時,時鐘處於高電平空閑狀態;CPOL=1,在主機時鐘上升沿時讀取數據,各數據位元組之間傳輸時,時鐘處於低電平空閑狀態。
  • CPHA;時鐘相位選擇位。CPHA=0,傳輸數據的最高位在SS的下降沿出現,在時鐘第1個前沿讀入,之後的下一個數據位在時鐘后沿出現,
    在下一個前沿讀入,直到8位數據讀完;CPHA=1,傳輸數據在時鐘前沿出現,在同一時鐘周期的后沿讀入。
  • SPR1、SPR0:SPI波特率選擇位。

    介面程序設計 固件程序主要包括:SPI口初始化程序INITSPI,送數據程序SENDDATA,接收數據程RECEIVEDATA。
    在SPI初始化程序中,控制寄存器SPICON設置為33H, 即CPOL=0,CPHA=0, 當設置CPOL= 1,CPHA=1時, 由於干擾脈衝的存在,
ADuC812與NRF2401不能很好的同步。
    在發送數據子程序中,向數據寄存器SPIDAT寫數據,如產生中斷標誌,說明數據傳輸完畢,則可以發送下一個數據。
    在接收子程序中, 由於nRF2401送數據的時鐘是由ADuC812的SCLOCK 產生的, 所以執行接收數據指令MOVA,SPIDAT時先要對數據寄存器SPIDAT 寫數據0,也就是執行指令MOVA,SPIDAT,其目的是為了產生接收數據時的時鐘信號, 當單片機向SPIDAT 寫數據0時,nRF2401通過DATA 口向單片機送數據,改寫SPIDAT 的內容,這就是所接收的數據。

SPI單線方案在實際應用應注意以下問題:
(1)時鐘相位與時鐘極性的設置。其設置要跟從機的數據讀寫時序相一致, 在一致時也要注意干擾問題。
(2)所加電阻值的大小。阻值的大小關係到信號傳輸的阻抗匹配問題,同時也影響數據傳輸的速率,所以在選用電阻時一般取幾K 的電阻。


[admin via 研發互助社區 ] SPI介面單線應用已經有4758次圍觀

http://cocdig.com/docs/show-post-44807.html