摘要:為解決I/O口數據傳輸的速率問題,提出SPI介面的單線應用方案,分析該方法的可行性,並在單片機ADuC812與射頻無線通信模塊nRF2401間的介面設計中得到了應用,驗證該方案的有效性。該方案具有電路設計簡單、數據傳輸速率高等優點。
1 SPI通信
SPI信號線:一般的SPI介面使用4條信號線與外圍設備介面,其具體功能如下:
SPI工作模式:SPI的工作模式分為:主模式和從模式。
不論是在主模式下還是在從模式下,都要在時鐘極性和時鐘相位的配合下才能有效的完成一次數據傳輸。
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中從高到低各位說明如下:
介面程序設計 固件程序主要包括: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