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

NRF2401與SPI介面的軟硬體解決方案

admin @ 2014-03-26 , reply:0

概述

摘要:由於Nordic公司2.4GHz的雙向射頻收發晶元NRF2401沒有標準的SPI介面。所以在實際的應用過程當中很難發揮它的高速無線傳輸的性能。針對該問題,利用帶SPI介面的LPC2104ARM內……

摘 要:由於Nordic公司2.4GHz的雙向射頻收發晶元NRF2401沒有標準的SPI介面。所以在實際的應用過程當中很難發揮它的高速無線傳輸的性能。針對該問題,利用帶SPI介面的LPC2104 ARM內核微控制器,介紹一種能實現高速無線數據傳輸的介面方法。

    NRF2401與微處理的介面有兩種方式:I/O直接連接方式和SPI連接方式,但是兩種連接的方式各有優缺點。下面從NRF2401的時序上分析兩種方法的優點及存在的問題,並介紹一種能有效地避開兩種方式的缺點,同時又能發揮兩種方式的優點的設計方法。下面假設CPU的晶振運行在11.0592MHz.

2 I/O直接連接方式的優點及存在的問題
    這種連接方式的優點是可以非常方便地與各種高低速CPU介面,並且傳輸的誤碼率很低。缺點是因為CPU和NRF2401通信的方式是模擬SPI的串列移位,所以不得不耗費大量的時間來模擬SPI的時序,導致CPU與NRF2401的數據傳輸速度成為整個系統傳輸速度的瓶頸。通過圖1的時序圖分析導致傳輸速度下降的原因。
 
圖1 NRF2401以ShoekBurst方式發送的時序圖
   通過時序圖(圖1)可以發現當希望以Shock-Burst方式發送一個數據包的時候,需要經過下面幾個階段:
(1)邊沿之間的延時Td,最短時間是50 ns。
(2)從CE引腳出現高電平到可以開始傳輸數據的延時Tce2data,最短時間是5 us。
(3)數據傳輸過程中的數據建立時間Ts,最短時間為500 ns。保持時間Th,最短時間為500 ns。
(4)由Stand-by模式到ShockBurst發射的延時Tsby2txSB,最短時間為195us。
(5)NRF2401真正發射剛才寫入FIFO中的數據包的時問Toa。
    NRF2401的數據發送方式是按照數據包的方式發送的。每發射一個數據包都要經過上述的5個階段。所以計算髮射每個數據包耗費的時間就可以計算出整個系統數據發射實際能達到的速度。現在我們就按照下面的NRF2401配置方式來計算。
① 設定本機的地址長度為32 bit。
② 本機每次發送數據和接收數據的長度為208 bit。
③ 發送速率1 Mbps,CRC16,CRC使能。
④ CPU的晶振為11.0592 MHz。
總時間
T=Td+Tce2data+(Ts+Th)*208+Tsby2txSB+Toa
=Td+Tce2data+(Ts+Th)*208+Tsby2txSB+1 us*256
= 50ns+5us+(500ns+500ns)*208+195us+256us
= 664.05 us
發送速率
V=208/(664.05/1000000)≈313 kbps
    這是系統能夠達到的最高的實際發送速率。但是在用I/O直接連接方式的時候,用下面的方法(如圖2)模擬SPI的時序。可以發現用這樣的方法,每發送一個數據所需時間遠遠超過1 us。假如(Ts+Th )部分的時間變成10 us時,速率將降低為75kbps,可見要想提高整個系統數據發送的速率,在數據包的長度達到最長的時候,只有通過縮短總時間中的(Ts+Th)部分才能達到。而利用ARM的SPI介面就可以達到目的。
 
圖2 模擬SPI時序的流程圖

3 SPI連接方式的優點及存在的問題
    這種連接方式的特點是可以充分發揮SPI介面的高效以及NRF2401高速無線傳輸的優勢,具有大的數據吞吐量。而且CPU只要將要發送的數據寫入SPI的緩存,就可以執行別的其他程序,不用一直圍繞發送數據去模擬時序而浪費寶貴的CPU時間。但是因為在用SPI進行數據傳輸的過程中會有誤碼產生,如果CPU直接用SPI的方式對nRF2401進行初始化,初始化成功率不是很高,也就會導致數據無法發送。下面就介紹一種能提高發送速率,同時又能保證成功初始化NRF2401的方法。

4 系統硬體及軟體設計
    與LPC2104的SPI介面相比較NRF2401隻有一個DATA數據埠與之對應。所以將LPC2104的SPI介面MOSI和MISO接2k的電阻出來,另一端接到NRF2401的DATA埠,以實現阻抗匹配和隔離(見圖3)。
    軟體設計的過程中,需要注意的是,因為在用SPI進行數據傳輸的過程中會有誤碼產生,如果LPC2104直接用SPI的方式對nRF2401進行初始化會導致初始化失敗,所以採用先將LPC2104的MOSI配置成普通的I/O 口,以較慢的發送速率完成NRF2401的初始化工作,然後再將LPC2104的I/O配置成SPI介面並且初始化SPI寄存器(見圖4)。這樣可以保證對NRF2401晶元的配置字準確無誤。
 
圖3 硬體連接示意圖
 
圖4 軟體流程示意圖

5 結論
    採用這種介面方式,能顯著地提高對NRF2401的配置成功率和系統的數據傳輸速率。配合一定糾錯辦法,我們在HOLTER(心電數據採集器)的無線數據傳輸中採用了這種方式。這種介面為嵌入式系統的無線數據傳輸提供了一種比較實用且經濟的解決方案。


[admin via 研發互助社區 ] NRF2401與SPI介面的軟硬體解決方案已經有2666次圍觀

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