Raspberry Pi 5 のSoftware-I2C libraryを作ってみた。

公開済みのRP1-GPIOライブラリを利用したソフトウェアI2Cライブラリを作ってみた。

Raspberry Pi 5のRP1-Chipを使い倒す(GPIO)

簡単そうと思って始めたもののGPIOが非同期実行なためにマイクロ秒レベルで時間制御するのがやっかいすぎておおハマリ。(-_-;)

Raspberry Pi 5 がバグッてる?

それと1MHz程度まで行けると予想していたのにGPIO入力のウェイトが大きすぎて350KHz程度の速度しかでない...とか、想定外のことがありすぎだったがなんとか完成。

【仕様】
・マスターモードのみ
・100KHz/400KHzのみ
・7bitアドレスのみ
・リピーテッド・スタート対応
・クロック・ストレッチ対応
・マルチ・マスター対応
・ArduinoのWire準拠クラス対応

【I2Cデバイスを列挙するサンプル・プログラム】

【I2Cデバイスを列挙するサンプル・プログラム(Arduinoふう)】

【修正】
2025-05-13
ソースをより読みやすくしたのとコンフリクト・チェックのタイミングを変更。

2025-05-12
TwoWire::setClock()が間違ってたので修正。

2025-05-10
start/stop condition処理のエラーチェックを強化。

2025-05-06
rp1-gpio.hのpinMode()修正にともなう初期化処理の変更。

【ライブラリ】