cc1101.pdf page 54 

CC1101は、64バイトのFIFO（TXデータとRXデータの2種類）を含みます。 
SPIインターフェースは、RX FIFO　TX FIFOへのアクセスに使用します。 
第10.5節は、SPI FIFOアクセスに関する詳細を含みます。 
FIFOコントローラは、TX FIFO、RX FIFOでアンダーフローを検知できます。
TX FIFOに書くとき、TX FIFOオーバーフローを避けることはMCUの責任です。 

TX FIFOオーバーフローになると、TX FIFOのデータ内容はエラーとなります。 

同様に。そのとき、MCUがRX FIFOアンダーフローになったならば、空のRX FIFO内はアンダーフローとしてエラーの状態なので、すでに空のRXFIFOへのアクセスはMCU側で避けなければいけません。


SPIヘッダを移している間、SOピンで利用可能であるチップステータスバイト、そして、アクセスが書込み操作であるならばアクセスが読込み操作とTX FIFOの一杯等級であるならば、RX FIFOの一杯等級を含みます。 


30ページの上の第10.1節は、これに関するより多くの詳細を含みます。 

RX FIFOとTX FIFOのバイト数は、それぞれステータスレジスタ

RXBYTES.NUM_RXBYTES
TXBYTES.NUM_TXBYTES

からリードすることができます。

RX FIFOの最後のバイトがSPIインターフェースについて読まれて1受信データバイトが正確な同じ時刻にRX FIFOに書かれるならば、
RX FIFOポインターはきちんとアップデートされません、そして、最後の読まれたバイトは複製されます。 

この問題を避けるために、箱の最後のバイトが受け取られる前に、RX FIFOは絶対に消去しないで下さい。


この問題を避けるために、箱の最後のバイトが受け取られる前に、RX FIFOは決して空にされてはいけません。

64バイト未満の箱長のパケット長の場合、パケットがRXFIFOに受信完了するまで待つことが推奨されています。

64バイト以上のパケット長の場合、MCUは何バイトがRXFIFOから読み出しできるかを決定しなければいけません。


以下のソフトウェアルーチンを使うことができます。


RXBYTES.NUM_RXBYTESの読み込みを繰り返し、少なくとも二度であることが示されている率で、どのRFバイトが同じ価値まで受け取られるかというそれが、二回返されます; 

そして、値をnに保管してください。 

2.もし、パケットの中に#のバイトが残っているならば、(n-1)したバイトをRXFIFOから読んでください 。


3.バイトのn = #までの残りのパケットバイトを、ステップ1と2を繰り返してください  

4.RXから残りのバイトをRXFIFOから読んでください。

FIFOTHR.FIFO_THR4ビットの設定で、FIFOのRX,TXのデータ量を変更することができます。

表36は、RXとTX FIFOのために16のFIFO_THRセッティングと対応するしきい値をリストします。 

閾値はRX FIFOとTX FIFOのために反対方向でコード化されます。Thisはオーバーフローに等しいマージンを与えます、そして、アンダーフローにいつ達するかについてもわかります。


