I2C (Inter-Intergrated Circuit)
인터페이스 & 프로토콜 파트 중 BASIC
1. I2C (Inter-Integrated Circuit)
- 1982년 필립스 반도체에서 발명
- 동기식 , 직렬 통신 방법
- 짧은 거리의 보드 내 통신으로,
프로세서 및 마이크로 컨트롤러에 저속 주변 장치 집적 회로를 연결하는데 사용함 - 두개의 선 (SDA, SCL)을 이용하여 다중 마스터와 다중 슬레이브 장치 간의 통신을 지원
- SPI와 UART통신의 장점을 가지고 있음
- 속도보다 단순성과 낮은 제조 비용이 중요한 분야에 사용
장점
- 두 개의 선만을 사용하여 하드웨어 구현이 간단함
- 하나의 I2C 버스에 여러 장치를 연결할 수 있어 하드웨어 비용이 절감됨
- ACK/NACK 비트를 통해 데이터 전송의 성공 여부 확인 가능
- 하드웨어 인터페이스가 UART 보다 덜 복잡함
단점
- 데이터 전송 속도가 상대적으로 느림(HS Mode Plus 기준 3.4Mbps. 표준 모드 100kbps)
- 근거리 통신을 목적으로 설계되어, 전송거리가 멀어지면 신호 품질이 저하될 수 있음
- 모든 장치가 I2C 프로토콜을 지원해야하므로, 장치 선택에 제한이 있을 수 있음
- 데이터 프레임의 크기가 8비트로 제한됨
- SPI 보다는 하드웨어 구현이 더 복잡함
2. I2C 통신 원리
하드웨어 구조
- 장치간의 데이터 통신을 위해서는 두개의 와이어를 필요로함
- SDA(Serial Data) : 마스터와 슬레이브가 서로 주고 받는 데이터 스트림
- SDL(Serial Clock) : 클럭 신호
- 직렬 통신 프로토콜이므로, SDA를 따라 일련의 비트 단위, 메세지 형태로 전송함
- SPI 통신과 마찬가지로 동기식 통신이기 때문에, 마스터 비트의 출력은 마스터와 슬레이브간에 공유되는 클럭 신호에 의해 비트 샘플링이 동기화 됨
- 시작 조건 (Start condition) : SDA가 High -> Low로 변경되면 시작
- 중지 조건 (Stop condition) : SCL 와이어를 Low -> High로 전환 후, SDA 와이어도 Low-> High 로 전환 시, 종료
데이터 프레임 구조
- 주소 프레임(Address Frame)
- 마스터가 특정 슬레이브와 통신하기 위한 슬레이브 고유의 7~10 비트 크기의 데이터 프레임
- 7bit라면 128개, 10비트라면 1024개 까지 지정가능
- Slave Select, Chip Select와 같은 와이어가 없으므로, 주소 지정(addressing)을 통해 이 작업을 수행함
- 마스터는 연결된 모든 슬레이브에게 통신하려는 슬레이브의 주소를 전송함
- 각 슬레이브는 이를 자신의 주소와 비교
- 일치하면 SDA의 ACK 비트를 Low로 변경하여 마스터로 다시 전송
- 주소가 일치하지 않으면 아무 작업도 하지 않고, SDA는 High로 유지
- 마스터가 특정 슬레이브와 통신하기 위한 슬레이브 고유의 7~10 비트 크기의 데이터 프레임
- 읽기/쓰기 비트(Read/Write Bit)
- 마스터가 슬레이브에 데이터를 송신(Low)하는지 수신(High)하는지 지정
- ACK/NACK 비트
- 데이터가 성공적으로 수신되면 ACK 비트가 Low로 변경하여 송신 장치에게 리턴함
- 데이터 프레임 (Data Frame)
- 마스터가 슬레이브가 전송한 ACK 비트를 감지하면, 주소 지정이 성공적으로 완료된 것으로 간주함
- 데이터 프레임은 항상 8비트이며, 최상위 비트(MSB)부터 전송함
- 각 데이터 뒤에는 ACK/NACK 비트가 위치하여, 데이터가 제대로 수신되었는지를 바로 확인 가능
- 두번째 데이터 프레임을 보내기 위해선, 이전 데이터의 ACK 비트가 확인되어야함
3. I2C 데이터 전송 과정
- 마스터는 SDA 와이어를 High에서 Low로 전환함.
이 상태에서 SCL 와이어도 High 에서 Low로 전환하여 시작 조건을 모든 슬레이브에게 전송함 - 마스터는 각 슬레이브에게 통신하려는 슬레이브의 고유 주소를 읽기/쓰기 비트와 함께 전송함
- 각 슬레이브는 받은 주소를 자신의 주소와 비교 후, 일치하면 SDA 와이어를 통해 ACK Low를 리턴함
- 마스터는 클럭에 따라 데이터 프레임을 전송하거나 수신함
- 데이터 프레임이 전송될 때마다 수신 장치는 다른 ACK 비트를 송신자에게 리턴함.
이를 통해 송신 장치는 프레임의 성공적인 수신을 확인함 - 데이터 전송을 중지하기 위해 마스터는 SCL 와이어를 Low->High로 변환하여,
슬레이브에게 정지 조건을 전송. 이후 SDA 와이어를 Low->High로 변환
4. I2C 통신 구조의 예
- 센서 인터페이스
- 메모리 장치
- 디스플레이
- RTC(Real-Time Clock)
- ADC/DAC
참조
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.