RpiRs-002で改善を行ったI2Cバスについて、波形観測してみました。
Raspberry Pi3(以下、ラズパイ)のI2Cバスに16桁2行のLCD(AQM1602)を接続し、1秒ごとに時刻を表示させます。
まず、バスリピーターなし(上がSCL、下がSDA)の方から、
秋月電子のサイトでも注意されてますが、ラズパイ上でSCL/SDAともプルアップされているため、slave(AQM1602)のackがlowレベルに引き込み切れてません。このため、動作が不安定になります。
この波形は、位置指定コマンド(3e,00,c0)、時刻表示コマンド(3e、40、31、34、3a、35、36、3a、35)を送っているときのものですが、途中でシーケンスが終わってしまっています。アスキーコードで送られているので「14:56:5」となり、秒の1桁目が送られていないことになります。
一方、バスリピーターあり(RpiRs-002)の方は、
slaveのackが十分lowレベルまで引き込めており、時刻表示コマンドも「13:41:5x」と最後の桁まで送られています。(右端が少し切れてしまってますが…)
ちなみに、デジタルオシロ(SDS1202X)のデコード機能(今回は、I2Cバス)は、シリアル波形を8ビットコードに変換してくれるので便利ですね。。