아트메가/이론

ATMEGA128 TWI(I2C)통신 알아보기 1편

원원 2022. 9. 10. 23:56

안녕하세요. 오늘은 TWI 통신에 대해 알아보겠습니다.

 

*TWI통신이란
TWI통신이란 Two Wire Interface이고 I2C통신과 같습니다. 
선 2개로 통신을 하므로 편리하고 많이 사용됩니다. 선2개의 이름은 각각 SDA, SCL이라고 부릅니다.

 

*SDA/SCL 데이터 읽는방법
SDA는 Serial Data이고 SCL은 Serial Clock입니다. SDA가 실제 데이터이고 SCL은 클럭입니다. HIGH와 LOW로 데이터를 전달합니다. 기본적으로 SDA는 SCL이 LOW일때 상태를 변경하고 SCL이 HIGH일때는 SDA이 변하지 않습니다.
그래서 SCL이 HIGH일때 값을 읽습니다

위의 그림처럼 데이터가 0b10001이 됩니다
이러한 과정은 출력을 HIGH/LOW를 계속 변경해가면서 만들수도 있는데 일반적으로 MCU에서 I2C통신을 지원하면 레지스터설정을 통해서 위의 그림처럼 파형을 만들 수 있습니다.

 

*TWI통신 특징
- 일반적으로 MCU 1개에 모듈 여러개를 붙일 수 있습니다. (최대 128개) 일반적으로 MCU를 마스터라고하고 모듈을 슬레이브라고 부릅니다. SCL은 항상 마스터가 HIGH/LOW로 변경합니다.
- 슬레이브가 여러개이므로 마스터가 통신을할때 어떤 슬레이브인지 가리켜야해서 슬레이브마다 주소가 있습니다. 주소는 7비트로 표시되므로 최대 128개가 슬레이브가 될 수 있습니다.

일반적으로 하드웨어는 위의 형태로 연결합니다. 저항은 풀업저항을 연결해서 평소에 HIGH상태를 유지해줍니다

이러한 통신을 하려면 여러가지 약속이 있어야 하는데 그 중에 하나가 START와 STOP입니다. 아까 위에서 SDA는 SCL이LOW일때만 변한다했는데 예외적으로 SCL이 HIGH일때 SDA가 변하는 경우가 있습니다

위의 경우처럼 SCL이 HIGH일때, SDA가 LOW가 된다면 START를 의미합니다

반대의 경우면 STOP입니다.

- ACK/NACK라는게 있는데 데이터를 보내거나 받았을때 확인하는 신호가 ACK/NACK입니다.
ACK은 LOW이고 NACK은 HIGH입니다

- 통신속도는 일반적으로 100~400kHz를 사용하는데 이 속도는 데이터1개를 전달하는 속도이고 일반적으로 100kHz를 많이 사용합니다.

 

 

다음글에서는 Write를 해보겠습니다