아두이노/이론

I2C통신 아두이노와 오실로스코프로 확인해보기 1편

원원 2021. 10. 3. 00:01

안녕하세요. 아두이노(uno)와 오실로스코프와 I2C통신모듈 JMOD-TEMP-1 (LM75A)을 이용해서 파형을 직접 확인해보겠습니다. 


I2C통신 아두이노와 오실로스코프로 확인해보기 2편
https://wowon.tistory.com/225?category=615512
I2C통신 아두이노와 오실로스코프로 확인해보기 3편
https://wowon.tistory.com/226?category=615512

- I2C와 TWI는 같은 의미입니다.

- I2C 통신이란 두 개의 신호선 (SDA,SCL)으로 다수의 I2C 통신을 지원하는 디바이스와 송신/수신을 할 수 있게 해주는 통신 방식입니다.  ( SDA: Serial Data Line, SCL : Serial Clock Line)

- 보통 1개의 마스터와 다수의 슬레이브모듈과 통신을 합니다. 마스터1개는 최대 슬레이브 127개와 통신이 가능합니다.

- SDA,SCL에는 풀업저항이 걸려있어야 합니다.

 

- SCL와 SDA는 풀업저항이 걸려있으므로 통신을 안할때는 HIGH상태가 유지됩니다. 

- SCL가 LOW일때 SDA의 상태가 변 할 수있고, SCL가 HIGH일때 SDA값을 읽는게 국룰입니다.

- SCL가 HIGH일때 SDA가 LOW로 되면 통신을 시작합니다. (국룰 예외사항)

- SCL가 HIGH일때 SDA가 HIGH로 되면 통신을 종료합니다. (국룰 예외사항)

- 마스터와 슬레이브는 통신을 하는데 할때 읽을건지, 쓸건지 정해야합니다. 데이터를 슬레이브에게 쓰는건 0이고 읽는건 1입니다.

- 데이터를 읽고 쓸때,  정상인지 비정상인지 확인하는 비트가 있습니다. 0:정상(ACK) 1:비정상(NACK)

- UART통신과 다르게 마스터는 1:1 연결상태가 아닙니다. 다수의 슬레이브와 통신해야 하므로 통신할때마다 슬레이브 주소값을 보내야합니다.

- 마스터 -> 슬레이브 쓰기

주황색: 마스터 흰색:슬레이브

해석: 마스터가 시작비트를 보내서 시작을 알립니다. 슬레이브 주소를 보내서 어느 슬레이브와 통신할지 알립니다. WRITE모드를 합니다. 슬레이브가 ACK를 보내주면 슬레이브가 있다고 판단하고 DATA 8비트를 보냅니다. 슬레이브가 받았다는 의미를하는 ACK를 보내면 STOP비트를 보내서 통신을 종료합니다.

 

-마스터 -> 슬레이브 읽기

주황색: 마스터 흰색:슬레이브

 

 

위의 파형은 READ 예시입니다. READ를 할때 Write를 먼저 하고 Read를 해야합니다. 그래서 위의 파형은 Write와 Read가 둘다 있습니다. 근데 빨강1번을 보면 Write가 끝나고 Stop신호를 안주고 다시 Start를 하는데 이걸 Restart라고 합니다. 
그리고 빨강2번을 보면 NAK으로 그대로 놔두는데 그 이유는 슬레이브에게 전송이 끝냈다는걸 알리기 위함입니다.

 

2편에서는 오실로스코프를 이용해서 위의 말처럼 파형이 나오는지 확인해 보겠습니다.