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

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

by ohj921189 2020. 3. 18.
반응형

 

목차

 

1. I2C 통신이란?

  - I2C 통신이란?

  - I2C 통신의 특징

 

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

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

 

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

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

 

4. I2C 통신의 원리

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

  - Master와 Slave 사이의 통신

 

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

 

 

 

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

 

Si7021 온도센서의 데이터시트에 I2C 통신과 관련해 자세한 내용들이 담겨져 있었습니다. 표의 첫번째 줄인 SCLK Frequency에서 온도센서의 I2C 통신은 400kHz의 전송 속도를 갖는다는 것을 알 수 있습니다. 두번째 줄에서 SCL이 HIGH가 되는 동안의 시간은 0.6us 이라는 것을 알 수 있습니다. SCL이 LOW가 되는 동안의 시간은 1.3us 입니다. SCL에 관련된 이 두 가지 정보를 바탕으로 하여 알 수 있는 사실은 한 클럭을 만드는 데 걸리는 시간이 HIGH가 0.6us, LOW가 1.3us. 즉 더하면 1.9us가 걸린다는 사실을 알 수 있습니다. 

 

또한 위의 표의 네 번째 줄에 Start Hold Time이 있는데 이것은 디바이스 간 통신을 시작할 때 SDA가 0이 되고 나서 언제 SCL이 0이 되는 지를 나타내는 것입니다. 이와 비슷하게 Stop Setup Time은 통신이 종료될 때 SCL이 1이 되고 나서 언제 SDA가 1이 되는 지를 나타내는 것입니다. Bus Free Time은 통신의 종료와 시작사이에 얼만큼의 시간이 걸리는 지를 나타냅니다. SDA Setup Time은 완전한 데이터 비트로 바뀌기까지 걸리는 시간, SDA Hold Time은 데이터 전송후 다른 데이터를 준비하기까지 걸리는 시간입니다. 

 

 

Sr이 무엇인지에 대해 먼저 알아 본 뒤 본격적인 설명을 시작하겠습니다. 

 

Sr: 전송을 START 한 후 STOP 전에 다시 한번 START를 할 수 있는데 이것을 REPEAT START라고 하며 이는 마스터가

새로운 데이터를 전송 할 때 사용됩니다. 

 

디바이스 간 통신을 할 때 주고 받는 레지스터는 어떤 것인지 살펴봅시다. 첫번째 레지스터는 마스터가 슬레이브의 데이터를 읽어올 때의 레지스터를 나타냅니다.

 

우선 S(START)가 먼저 나오고 읽어올 슬레이브의 주소가 나온 다음 W(Write)를 통해 슬레이브 레지스터에 Read 레지스터 커맨드를 보냅니다. 그 후 STOP 하지 않고 Sr 명령어를 보내어 다시 슬레이브 주소를 보내고 R(Read)를 하여 슬레이브의 데이터를 읽어 온 뒤 NA를 보내고 P(STOP)을 합니다.

 

두번째 레지스터는 슬레이브에 Write 할 때의 레지스터입니다. Read 할 때와 동일하게 수행한 뒤 Write 커맨드를 보내고 슬레이브에 데이터를 Write 합니다. 

 

 

반응형

댓글