ARM與射頻芯片TRF796x的SPI通信研究
3 ARM與TRF796x通信的實現(xiàn)
S3C2440A的SPI接口傳輸方式有查詢、中斷、DMA三種,由于TRF796x有專門的IRQ中斷引腳,所以本文選擇ARM芯片 SPI接口的查詢方式。S3C2440A作為Master,時鐘頻率通過SPPREn寄存器設(shè)置,其頻率f=PCLK/[2(SPPREn的值+1)],f≤25 MHz??刂萍拇嫫鱏PCONn應(yīng)該根據(jù)具體的通信要求來設(shè)置。
對TRF796x的訪問需要區(qū)分是寫地址還是寫命令,字節(jié)的最高位(MSB)決定了該指令是用于命令還是地址。具體的地址/命令字節(jié)位描述如表3所列。
從表3可以看出,如果是單個寫寄存器操作,則發(fā)送字節(jié)最高3位為000;如果是連續(xù)寫寄存器操作,則最高3位001;如果是讀單個寄存器操作,則最高3位010;如果是寫命令,則最高3位100;其他操作不再詳述。
本文采用S3C2440A的SPI0接口與TRF796x通信,其連接圖如圖4所示。從I/O_0~I/O_2的引腳電平可以看出選擇的是SPI帶SS通信方式。其中,EN腳是TRF796x的工作使能引腳,I/O_4是SS腳。當SS置為低且查詢到狀態(tài)寄存器SPSTA0的最低位為1(說明SPI發(fā)送接收準備好),待發(fā)送的數(shù)據(jù)一旦寫入到發(fā)送移位寄存器SPTDAT0中,SPI通信的發(fā)送和接收就會同時開始,一般是上升沿發(fā)送,下降沿接收。如果只想發(fā)送不想接收數(shù)據(jù),可以不讀取接收寄存器的內(nèi)容;值得注意的是,如果只想接收數(shù)據(jù),應(yīng)該寫數(shù)據(jù)0xFF或0x00到發(fā)送移位寄存器,然后才能從接收移位寄存器中讀取數(shù)據(jù)。
下面通過非連續(xù)寄存器讀操作來具體說明ARM與TRF796x是如何進行SPI通信的。圖5是對TRF796x的非連續(xù)寄存器讀操作的流程。
整個讀操作流程是:
①初始化操作,置EN腳為高電平使能TRF796x工作,將GPE11~GPE13配置成SPI功能,配置S3C2440A作為Master,且選擇查詢工作方式,寫SPPREN0寄存器來配置通信時鐘頻率。
評論