Silicon LabsEZRadioPro 系列的Si4463無線模塊,TX FIFO 和 RX FIFO只有64字節(jié)。那么如何實現(xiàn)超過64字節(jié)的數據包收發(fā)呢?需要繁瑣的去把長包拆分成小于等于64字節(jié)的小包,每個小包單獨發(fā)送,然后接收端把這些小包數據拼接回原始的長包數據嗎?回答是:不!因為長包的收發(fā)在Si446X 收發(fā)芯片實現(xiàn)是非常簡單的。
打開WDS軟件或者查看API寄存器描述文檔,有兩個中斷非常有用,就是TX_FIFO_ALMOST_EMPTY_PEND和RX_FIFO_ALMOST_FULL_PEND,這個兩個中斷代表的意思就是TX FIFO 的數據即將發(fā)送完,或者RX FIFO即將被填充滿。那么我們只需要根據這兩個中斷,就可以實現(xiàn)超長數據包收發(fā)了。
例如,在TX_FIFO_ALMOST_EMPTY_PEND中斷產生時,立刻填充數據到TX FIFO中,新填充的數據會緊跟著之前的數據發(fā)送出去,直到數據包完全發(fā)送完成,最終產生一個發(fā)送完成中斷,表示這包數據發(fā)完。接收時也是類似,當收到的數據不斷往RX FIFO中填充,快要填滿的時候,就會產生RX_FIFO_ALMOST_FULL_PEND中斷,這時立刻把RX FIFO讀取出來,那么空出來的FIFO又可以繼續(xù)接收新的數據,直到接收到的總數據等于整個完整的數據包長度,產生一個接收完成中斷。整個過程都是連續(xù)的,根據包長度和設定的閥值,會產生多個TX_FIFO_ALMOST_EMPTY_PEND和RX_FIFO_ALMOST_FULL_PEND中斷,但是每包數據發(fā)送完成和接收完成中斷只會有一個,和短包的收發(fā)是一樣的。
WDS的設置界面如下:
設置配置TX_FIFO_ALMOST_EMPTY和RX_FIFO_ALMOST_FULL 閥值

開啟對應的中斷

用戶需要再代碼中添加檢測到TX_FIFO_ALMOST_EMPTY和RX_FIFO_ALMOST_FULL兩種中斷時系統(tǒng)對應的反應。
以上是對Si4463發(fā)送超長數據包的一些總結,希望能對你有所幫助。