STM32のI2C...
ああ。
STM32はF4までと、F3以降(L4とか)でI2Cの構成が
大幅に変わってるから...ね。
新しいやつは、相手先アドレスがレジスタ中の独立した
ビットフィールドに割り当てられているけど、
古いやつは、アドレス用のレジスタなんて存在してなくて、
自分で、アドレス+R/Wフラグで組み立てないといけない。
1ビット左シフトしているように見えるのは、ここが原因かな。
実際、F3系を使っていると、もうF4までのI2Cは触りたくない。
そりゃまあ、ライブラリがその辺隠ぺいしてくれれば
なんにも問題はないはずなんだけど...
マイコンあるあるだけど、ハードウエア構成に
強く依存する様なもの(これとか、タイマーとか)
は、ライブラリが(微妙に)うまく機能しないことなんて
日常茶飯事だ。
そりゃまあ、ライブラリがクソ、と言って済むなら
それで万事オッケーだけど、どうにか動かさないといけなく
なることも普通。
公式ライブラリ、確かに有効なんだけど、早いんだけど、
この手のトラップで引っかかると、脱出に無限の時間がかかる
(手詰まりになる)
時間がかかっても、必達の案件はレジスタ直たたき
から離れられない...
早さよりも、行き詰らない方が遥かに重要だ。
| 固定リンク | 0
« クルマを売り続ける理由 | トップページ | LDO »
コメント