본문 바로가기
전자공학/LoRa 통신

I2C 통신에 대한 깔끔한 설명 - 원리부터 응용까지 (with 온도센서)-2

by ohj921189 2020. 3. 17.
반응형

 

 목차

 

1. I2C 통신이란?

  - I2C 통신이란?

  - I2C 통신의 특징

 

2. 왜 I2C 통신을 사용하는 가?

   - I2C통신과 SPI 통신,UART 통신과의 비교

 

3. I2C 통신을 위해 필요한 조건

  - I2C 통신을 위해 하드웨어적으로 필요한 것

 

4. I2C 통신의 원리

  - 데이터 전송을 위한 네 개의 구간

  - Master와 Slave 사이의 통신

 

5. 온도센서에서의 I2C 통신 원리 - 응용

 

 

 

4. I2C 통신의 원리

 

신호 구간은 크게 4가지로 분류할 수 있습니다. 통신을 시작하는 START 구간, 데이터 변화 구간 (완전한 데이터가 아닌 상태, 완전한 데이터를 보내기 위한 중간 과정), SDA의 완전한 데이터를 읽는 구간, 통신을 종료하는 STOP 구간 이렇게 4가지의 구간이 존재합니다. 

 

I2C 통신에서의 SDA와 SCL의 기본 값(디폴트)은 HIGH(1)인데 만약 SCL이 HIGH(1)인 상태에서 SDA가 LOW(0)가 된다면 통신 시작 신호(START)로 판단합니다. SCL이 SDA에 이어서 LOW(0)가 되면 SDA는 데이터 비트로 바꾸기 시작하고 (데이터 변화 구간) 이후에 SCL이 HIGH(1)가 되면 SDA의 데이터를 읽습니다. 만약 SDA가 LOW(0)인 상태에서 SCL이 HIGH(1)인 상태를 계속 유지한다면 통신 정지신호(STOP)로 판단하고 SDA도 기본 값인 HIGH(1)로 다시 돌아갑니다

 

그럼 I2C 통신을 통해서 어떤 데이터를 주고받는 걸까요?

 

Master Slave Write 할 경우

 

I2C 통신을 할 때 1Byte씩, 즉 8bit씩 데이터를 보낼 수 있습니다.

 

Master가 Slave에 Write 할 경우 시작 신호(START) 뒤에 먼저 7비트의 Slave의 주소가 나오며 그 뒤에 8번째 비트는 Read/Write 필드입니다. 이 필드의 값이 0이면 Write 신호입니다. Slave가 ACK 신호 (ACK 신호로 0을 보내어 Slave가 수신을 확인)를 보내면 Master가 Slave에 Write 할 8비트의 데이터를 보내고 Slave는 ACK를 보내게 됩니다. 그러고 나서 통신을 종료하기 위해 SCL을 1로 유지함으로 통신 종료 신호를 보냅니다.

 

*ACK? 송신된 데이터를 잘 받았는지 확인하기 위해 수신하는 쪽에서 데이터를 잘 받았다고 확인 응답하는 신호를 나타냅니다. 주로 오류 제어 및 흐름 제어를 위해 사용합니다.

 

MasterSlave Read 할 경우 

SlaveMasterRead 할 경우 시작 신호(START) 뒤에 먼저 7비트의 Slave 주소가 나오며 그 뒤에 8번째 비트는 Read/Write 필드이고 이 필드의 값이 1이면 Read 신호입니다. SlaveACK 신호Master에게 보내고 Slave가 자신이 가지고 있는 데이터를 Master에게 전송하기 시작합니다. 데이터를 다 보내면 MasterNACK(1)을 보내어 전송이 끝났다는 신호를 보내고 통신을 종료합니다.

반응형

댓글