私は 16 MHz で動作する PIC18F45k20 に取り組んでおり、それを SPI スレーブとして使用しています。マスターからの SPI クロック レート (SCK) に関係なく、SPI の衝突や受信オーバーフローを回避するために、SPI バイト間にかなりの遅延 (~64 us) を常に追加する必要があることがわかりました。遅延がなく、SPI クロック レートが非常に遅い場合、SPI パケットの 95% は衝突やオーバーフローなしで通過します。
オンラインの投稿を見ると、これはこの PIC18 プロセッサやその他の PIC18 プロセッサの「機能」である可能性があると思われます。
- 他の人は、この同じスレーブの「機能」を観察しましたか?
- これが「機能」である場合、すべての PIC18 プロセッサに搭載されていますか?
次のようにして、割り込みなしで PIC18 をテストしました。
if (SSPSTATbits.BF)
{
DataIn = SSPBUF;
SSPBUF = DataOut;
}
割り込みを使用してテストしたところ、同じ課題が見られました。
本当にSPIクロックを正しく検出していないのだろうかと思います。