ARM與射頻芯片TRF796x的SPI通信研究
②寫地址,從圖1和圖3的時序可以看出,要讀TRF796x的寄存器值,必須包含一個寫地址周期和一個讀數據周期。在寫TRF796x的地址之前,必須先設置SPCON0的CPOL和CPHA都為O,這樣通信雙方的時序才能保持一致,而且要將地址字節的最高3位設為010,然后將地址字節寫入發送移位寄存器SPTDAT0中,一旦地址字節發送完,TRF796x就會把相應地址的內容送到MISO腳上。
③讀數據,在地址字節寫入后,讀數據之前,必須轉換SCK的時鐘極性,從圖1可以看出,需要設置CPOL為0,CPHA為1,這樣就滿足了TRF796x的讀時序要求。寫數據0x00或0xFF到SPTDAT0中,接著就可以從SPRDAT0中讀取數據。
非連續讀操作的實現代碼如下:

為了驗證上述的程序,在按照圖4連接電路后,可以選擇讀取TRF7960的09h、0Ah、0Bh寄存器單元的內容,這3個寄存器在系統上電時,分別默認內容為0x11、0x40、0x87。定義一個數組 Operation[O]=0x09;Operation[1]=0x0A;Operation[2]=0x0B;調用函數 SingleRead(Operation,3);即可得到3個寄存器的內容并存放在Operation數組中。在RFID門禁系統的開發中,就是采用了這種SPI通信方式實現了ARM對RFID閱讀器芯片的訪問控制。
結語
本文通過介紹ARM芯片與TRF796x之間的硬件SPI通信方式,說明了在進行SPI器件之間通信時應該注意的問題,強調工作時序在通信時的重要性,最后給出的程序在RFID門禁系統中得到了運用。論文研究對ARM與其他SPI器件之間的通信有一定的參考意義,只要根據SPI器件的工作時序進行稍加修改就能融會貫通。
本文引用地址:http://www.104case.com/article/151079.htm
評論