- 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}$)
참고자료
'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 |