Inter-Integrated circuit communication
I, 2개를 따서 I2C 통신이라 부른다.
일대다 통신이 가능하다. 하나의 Master node와 여러 개의 Slave node 가 있다.
Two-pin protocol
SDA (Serial data): data transmission
SCL (Seerial clock): clock transmission = 동기를 맞추는 역할을 한다.
위의 2개의 핀으로 통신한다.
Timing diagram
Free state - SCL과 SDA 둘 다 HIGH인 상태로 시작한다.
Start condition - SDA가 LOW가 되면 Slave node 들은 데이터를 수신할 준비가 된다.
I2C는 일대다 통신으로 Master가 통신할 slave node를 지정해야 한다.
Start condition에 들어가고 처음 7bit는 slave node address를 전송한다.
SDA를 통해 데이터를 보내며 SCL이 HIGH인 타이밍에 SDA 데이터를 읽는다.
그래서 SDA line은 SCL line이 full rise 하고 fall off 될 동안 유지돼야 한다.
그렇게 앞에 7bit는 Address를 전송하고 다음 1bit는 master가 데이터를 읽을지, 보낼지 결정한다.
Read (HIGH): master가 slave로부터 데이터를 읽는다.
Write (LOW): master가 slave에게 데이터를 보낸다.
그다음 1bit는 ACK/NACK flag이다.
앞의 8비트로 통신 링크가 정상적으로 만들어졌다면 slave가 master에게 ACK를 전송한다.
NACK를 받았거나 반응이 없다면 통신 링크가 잘 구성되지 못한 경우이다.
결과적으로 데이터의 송수신 준비를 마치는데 9bit를 사용한다.
Stop condition - SCL이 먼저 HIGH 값을 유지하고 SDA가 SCL을 따라 HIGH로 올라간다.
Stop condition은 Free state로 이어진다.
'Embedded' 카테고리의 다른 글
Shift Register - 74HC595 (0) | 2024.02.19 |
---|---|
아두이노 DAC, PWM (1) | 2024.02.18 |