組込み・ファームウェア
I2Cで、データを1バイト受け取った側が、受け取ったことを知らせる方法として正しいものはどれか。
- A受け取った側が、別の線で1を出し続ける
- B9番目のクロックの間に、受け取った側がSDAを0に引き下げる(ACK)
- C受け取った側が、同じバイトを送り返す
答えと解説を見る
正解:B. 9番目のクロックの間に、受け取った側がSDAを0に引き下げる(ACK)
I2Cでは、8ビットのデータに続く9番目のクロックで、受け取った側がSDAを0に引き下げて受け取ったことを知らせます(ACK)。誰も引き下げなければSDAはプルアップで1のままで、NACKになります。アドレスを送ったときにACKが返らなければ、その機器がない、配線が切れている、アドレスが違う、などが考えられ、故障の調査の手がかりになります。
- A. I2Cに確認用の別の線はありません。
- B. 正しい。0に引き下げなければNACKになります。
- C. 送り返すことはしません。