はじめに
Arudino Leonardo同士をI2Cで接続する場合は 5V とGND, SDA, SCL の4本をお互いに接続するだけで動作したので Seeeduino XIAO も同じかと思っていたら動作しなかった
1. 通信できなかった回路
LeonardoをXIAOに置き換えただけの回路では通信できなかった
確認に使用したスケッチ
種別 | スケッチ |
---|---|
primary(master) | スケッチ例の master_writer |
standby(slave) | スケッチ例の slave_receiver |
2. 通信できた回路
5V間とSDA間 5V間とSCL間に それぞれ10kΩのプルアップ抵抗を追加した回路 @MergeCells さんから『ロジックレベルは3.3V』とのご指摘を頂き修正
これで問題なく通信を確認できました
プルアップ抵抗の容量が10kΩの理由はわかっていません
3.3VとSDA間 3.3VとSCL間に それぞれ4.7kΩのプルアップ抵抗を追加した回路
これで問題なく通信を確認できました
プルアップ抵抗の容量が4.7kΩの理由はわかっていませんが 10kΩから下げていって安定して通信してくれたのがこの辺りなので採用しました
おわりに
余りにも当たり前すぎて記事にすらならないのだろうけど
fritzing がいつの間にか事実上有料アプリとなっていたのがショック
かわりに kicad の回路図エディタを使用
謝辞
@MergeCells さん ご指摘ありがとうございました!