« 手荷物検査 | トップページ | 4連休 »

2018年9月14日 (金)

STM32F3のSPI

STM32F303のSPIペリフェラルは、所々要注意なトラップが有ったりする。
記憶だけで書くので、認識が間違っているかもしれないけど。

1.データレジスタのアクセス方法が2種類ある

送信データビットが8ビット以下の時は、
データレジスタにバイトアクセスしないといけない。
9ビット以上の時は、ハーフワードでアクセスする。
データ長だけ設定しても、正しいデータを送ってくれない。
公式のサンプルコードは、酷いことになっている。

ヘッダーファイルには、データレジスタは
ハーフワードの定義しかないので、要注意。

自力で、バイトアクセス用の定義を追加するか、
直接*(volatile unsigned char*)(”アドレス値”)みたいにして
バイトアクセスする。

2.受信終了ステータスフラグ

マスターモードで、なぜか正しく動作しないので、
替わりにビジーフラグを使う。
受信完了フラグが、受信完了してないところで立つ。
フラグを信用して読み込むと、おかしなことになる。

なので、送信完了の方を使って処理する。
(全2重で動くので、送信終了=受信終了)

それ以外のSTMでは、この件は無かったと思うけど、
似たようなトラップに、注意するに越したことはないかも。

|

« 手荷物検査 | トップページ | 4連休 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: STM32F3のSPI:

« 手荷物検査 | トップページ | 4連休 »