안녕하세요. 취업한 공대누나입니다.
센서나 모듈을 사용하다 보면 시리얼 통신이나 I2C 통신, SPI 통신을 사용하게 되는 경우가 많은 것을 알 수 있습니다.
오늘은 이러한 I2C 통신에 대해 알아보도록 하겠습니다.
1. I2C란?
I2C는 우선 Inter-Intergrated Circuit의 약자입니다.
데이터 통신을 위한 선 하나 (SDA) 타이밍 동기화를 위한 선 (SCL) 하나로 이루어져 있습니다.
배선이 참 간단한 것을 알 수 있죠
이러한 점 때문에 TWI라고도 불립니다.
TWI는 Two Wire Interface의 약자로, MCU의 Datasheet를 보게 되면 TWI라는 이름으로 기술 된 경우도 많이 있습니다.
SAM4S16C Datasheet |
SDA가 TWD라는 이름으로, SCL이 TWCK라는 이름으로 되어 있는 것을 알 수 있습니다.
하나의 마스터와 하나 이상의 슬레이브로 이루어져있으며 이론적으로 슬레이브는 최대 127개까지 연결할 수 있습니다.
SCL과 Data는 연결된 모든 Slave에게 전달이 됩니다.
하지만 해당 주소를 가진 디바이스만 응답하고 데이터를 주고 받는 형식으로 통신을 하게 됩니다.
2. SCL SDA
Master에서 기준 클럭인 SCL을 생성하고, 이 클럭에 맞춰서 데이터를 SDA 라인을 통해 송신 및 수신을 하게 됩니다.
선이 하나 이므로 송신과 수신은 동시에 이뤄지지 않습니다.
즉, 한 번에 송신만 하거나, 수신만 할 수 있는 반이중 통신 방식입니다.
I2C 통신속도는 100kHz, 400kHz, 3.4MHz를 주로 사용합니다.
필립스에서는 100kHZ 통신 속도를 표준 클럭으로, 400kHz를 Fast mode로,
3.4MHz 통신 속도를 High Speed mode로 정의해 놓았습니다.
SDA와 SCL은 풀업 저항에 의해 기본적으로 High 상태를 유지해줘야 합니다.
그러다가 SDA 신호가 Low로 떨어지게 되면 START로 판단하게 됩니다.
SAM4S16C Datasheet |
Datasheet의 내용을 읽어보면
TWCK가 High로 유지되고 있는 동안에 TWD가 Low로 떨어지는 순간을 Start로 인식한다고 되어있고
TWCK가 High로 유지되고 있는 동안에 TWD까 High가 되면 Stop으로 인식한다고 되어 있습니다.
SAM4S16C Datasheet |
시작 신호 뒤에 나오는 7비트는 슬레이브의 주소 값입니다.
그리고 8번째 비트는 Read를 할 것인지, Write를 할 것인지를 위한 신호입니다.
그런 다음 슬레이브가 Ack(Low) 혹은 Nack(High)를 보내게 됩니다.
(Slave가 잘 받았으면 Acknowledge, 잘 못받았으면 Not Acknowledge입니다.)
그런 다음 데이터를 읽거나 쓰게 되고 다시 Slave로 부터 Ack 또는 Nack 응답을 받게 됩니다.
통신을 하는 방법 자체는 어렵지 않습니다.
다음에는 아두이노로 직접 구현하는 것 또한 보여드리도록 하겠습니다.
감사합니다.
'전자 공학 > 기타' 카테고리의 다른 글
메모리 반도체와 비메모리 반도체 (0) | 2020.12.29 |
---|---|
SPI 통신이란? (0) | 2020.12.25 |
CMOS센서 CCD센서 (0) | 2020.12.23 |
EEPROM이란? (0) | 2020.12.22 |
LAN이란? Ethernet이란? (0) | 2020.12.21 |