전기전자 찌릿/전자

[ 전자 ] I2C 통신 (Inter-Integrated Circuit)

동그리의일상 2024. 3. 2. 18:07
반응형

I2C(Inter-Integrated Circuit)에 대해서 알아보자

개요 ( I2C는 무엇일까? )

- 필립스 반도체(현재는 NXP Semiconductors)에 의해 1980년대 초에 개발된 직렬 통신 프로토콜.

-이 프로토콜은 주로 마이크로컨트롤러와 다양한 저속 주변 장치 간의 통신을 위해 사용.

- I2C는 두 개의 선만을 사용.

  • 데이터 전송을 위한 SDA(Serial Data Line), 클록 신호를 위한 SCL(Serial Clock Line)
  • 단순성 덕분에  I2C는 하드웨어 설계를 단순화하고, 회로 기판에서 필요한 핀의 수 줄임.
  • 슬레이브 장치는 각각 고유한 주소 있음( 다중으로 가능, 고유한 주소 (Slave address)

( 여러개의 IC의  address가 같을 경우 Multiplexer or DeMultiplexer IC를 사용하여 해결 - 방법 일부 중 하나.)

 

Multiple 다중으로 사용가능



I2C의 속도는 대표적으로 주로 세 가지 모드로 분류됩니다:


표준 모드: 최대 100 kbps
고속 모드: 최대 400kbps
고속 모드 플러스: 최대 1Mbps
 * 초고속 모드: 최대 3.4Mbps (최근)

 

Data sheet 살펴보며 좀 더 알아보자. (  IC : TMP 116 ) 

 Start and Stop

I2C communication is initiated from the controller device with an I2C START condition. If the bus is open, an I2C
controller claims the bus for communication by sending an I2C START. To do this, the controller device first pulls
the SDA low and then pulls the SCL low. This sequence indicates that the controller device is claiming the I2C
bus for communication, forcing other controller devices on the bus to hold their communication.
When the controller device has completed communication, the SCL releases high and then the SDA releases
high. This indicates an I2C STOP condition. This releases the bus to allow other controllers to communicate or
to allow for the same controller to communicate with another device. Figure 3-1 shows the protocol for an I2C
START and STOP.

I2C 통신은 I2C START 조건으로 제어기 장치로부터 개시된다. 버스가 개방되어 있는 경우, I2C
제어기는 I2C START를 전송함으로써 통신을 위한 버스를 요구하고, 이를 위해, 제어기 디바이스(Master)는 먼저 풀링(pulling)한다. SDA가 낮게 설정된 다음 SCL을 낮게 설정한다. 이 시퀀스는 컨트롤러 디바이스가 I2C를 주장하고 있음을 나타낸다
통신을 위한 버스, 버스의 다른 컨트롤러 장치가 통신을 유지하도록 강제합니다.
컨트롤러 장치가 통신을 완료하면 SCL이 하이를 해제하고 SDA가 해제됩니다
high. I2C STOP 상태를 나타냅니다. 그러면 버스가 해제되어 다른 컨트롤러와 통신하거나
동일한 컨트롤러가 다른 장치와 통신할 수 있도록 하기 위한 것이다. 그림 3-1은 I2C의 프로토콜을 보여준다

 

A Basic Guide to I2C

사진 및 자료 출처: https://www.ti.com/ " A Basic Guide to I2C"

 

IC : TMP 116 (온도센서/Temperature Sensor)

 - Master ( 제어하는 자 ) : I2C의 모든 제어는 Master 가 한다.(write/read)

 

 - Write 일 때 (그림을 참고: TMP116  Write,순서도 (Flowchart/Write)

TMP116  Write

 

순서도 (Flowchart/Write)

 

 - Read 일 때 (그림을 참고: TMP116  read,순서도 (Flowchart/read)

TMP116  Read
순서도 (Flowchart/Read)
TMP116  registers

 

마무리

-  대부분의 I2C 통신의 위와 같이  Master에서 시작을 선언, 원하는 IC를 찾고, 데이터를 읽는다.

-  I2C 통신은  Write 보다 Read의 속도가 느리다. ( 처리하는 양이 많아서)

-  I2C 통신시 User의 설계 및 코딩에 따라서 Clock을 지속 or 비지속(통신할 때만 송출 ) 내보낼 수 있다.
 (H/W 엔지니어 입장에서는 debug시 주의 / 단  비지속시 장점은 전력소모를 줄임  )

- 주의 IC의 Write-Protect  를 꼭 확인한다.!!!

반응형