본문 바로가기

Hardware/Circuit Design

I2C

  • Introduce

I2C 통신 프로토콜은 master/slave 구조를 가지고 있다.

master가 특정 address를 통해 slave 를 호출하여 read/write 를 할 수 있다.

SDA (Serial Data Line), SCL(Serial Clock Line)두개의 양방향 통신 라인을 사용한다. (SDA 는 양방향, SCL은 단방향으로 볼 수 있다.)

  • Data 속도

Standard mode : 100kbits/s

Fase mode : 400kbits/s

Fase mode plus : 1Mbits/s

High speed mode : 3.4Mbits/s

 


I2C 디바이스들은 Open Collector(Open Drain) 방식을 사용하고 있다. 외부에 Pull-up을 추가해 주기 때문에 데이터 통신이 없을때 High 상태 이다.

I2C spec상 SDA는 SCL이 low 일때만 값을 변경 할 수 있다. (아래 그림에서 파란색 부분) 

예외 일때가 Start/Stop Condition 일때만 가능하다.

SDA 값을 읽는 것은 SCL rising edge부터 SCL falling edge 일때 까지 이다. 편하게 SCL High일때 라고 보면 될 듯 하다.


  • Start / Stop Condition

SCL이 High 인 상태에서 SDA가 Low로 떨어지면 Start Condition

SCL이 High 인 상태에서 SDA가 High로 올라가면 Stop Condition 이 된다.

  • Data Read/Write

Start Condition 후에  Slave address 를 보낸다.

내가 쓰는 거는 8bit mode 라서 MSB 부터 7bit 보내고 최하위 bit는 R/W command bit이다.

아래 그림에서 상위 4개 bit는 0100으로 고정이고 그 다음 3개 bit를 이용하여 address값을 변경한다.

PCA9555의 경우에는 동시에 최대 8개 사용 가능하다.


이 글을 쓰기 위한 목적이 다음부터 이어진다.

고객사의 I2C Timing 요구 조건 중에 모르는 용어가 많이 있어서 정리를 하고자 한다.

약어와 파형으로 설명을 대체 하려고 한다.

  • I2C Timing Definition

1. Rising Time ($t_{r}$) & Falling Time ($t_{f}$)

※ Setup / Hold Time

setup: Sampled 되기 전에 안정적으로 유지 되어야 하는 시간

hold: sampling 시작된 후 시간

2. Hold Time for a start condition ($t_{hd;sta}$) / Setup Time for a start condition ($t_{su;sta}$)

($t_{hd;sta}$)  : SDA low 시작 부터 SCL high 끝 까지

($t_{su;sta}$) : SCL high 시작 부터 SDA hign 끝 까지

3. Setup Time for stop condition ($t_{su;sto}$)

($t_{su;sto}$) : SCL high 시작 부터 SDA Low 끝까지

 

4. Setup time for data ($t_{su;dat}$)

 

참고자료

https://www.analog.com/en/technical-articles/i2c-timing-definition-and-specification-guide-part-2.html

https://www.ti.com/lit/an/slva704/slva704.pdf

'Hardware > Circuit Design' 카테고리의 다른 글

DC/DC Converter 인덕터 선정 방법  (0) 2020.07.09
Analog to Digital Converter (1)  (0) 2019.10.16
Fully Differential Amplifier  (0) 2019.09.17