[Tiva] TM4C의 I2C 통신 파형 보는 방법

임베디드/TI 2014.07.28 21:50

 I2C 통신을 처음 입문하는 분들은 종종 파형의 원리를 깨닫지 못해 많이 해메는 경우가 많습니다. 코드 상으로는 감이 오지 않는 I2C 통신을 오실로스코프를 통해 파형을 확인해보면 그 원리를 쉽게 알 수 있습니다.




 위 사진은 오실로스코프에 찍은 I2C 통신중인 파형이고 노란색은 SDA, 파란색은 SCL입니다. 아래는 I2C 회로를 설계하는데 참고할 수 있는 데이터시트의 파형입니다.


 위 사진의 파형을 쉽게 구분할 수 있게 7단계로 나누었고 그에 대한 각각의 부분은 다음과 같이 설명할 수 있습니다.


① : START

SCL이 HIGH 상태일 때 SDA가 HIGH에서  LOW로 변하는 것으로 I2C 통신을 개시합니다.


② : Slave address

Master가 통신하기 원하는 Salve address 주소를 전송합니다. 1번째부터 7번째 SCL의 edge 클록에서의 7비트가 Slave Address 주소입니다.


③ : R/S

Master가 Salve 에서 할 동작을 설정합니다. HIGH일 때는 Slave로부터 데이터를 전달받고 LOW일 때는 Slave에 데이터를 전송합니다.


④ : ACK

Slave가 Master에게 데이터를 제대로 전송하였음을 확인하는 신호입니다. Slave가 데이터를 완벽히 수신하였을 때 SDA의 값을 LOW로 끌어내려 SCL에 edge 클록이 들어올 때 까지 고정시키다가 값이 제대로 전달되면 SDA를 놓아줍니다다.


⑤ : DATA

R/S에서 설정 대로 데이터를 보내거나 받는다. 데이터 값은 8비트입니다.


⑥ : ACK

Master가 Slave에게 보내는 ACK 신호입니다.


⑦ : STOP

SCL이 HIGH 상태일 때 SDA가 LOW에서 HIGH로 변하는 것으로 I2C 통신을 종료합니다.


  • 임베어려워 2017.06.05 10:52 ADDR 수정/삭제 답글

    안녕하세요? 혹시 2개의 TM4C 보드를 이용해서 I2C 통신으로 한쪽은 마스터 한쪽은 슬레이브로 해서
    회로 구성하려고 하는데 각 보드에 소스 하나씩 올려놔야 되는건 알겠는데...
    어떻게 I2C 구성을 해야할 지 감이 안와 도움이 필요합니다 ㅜㅜ
    혹시 관련 프로젝트 경험해 본적이 있으신가요?

    • Justin T. 2017.06.05 12:40 신고 수정/삭제

      각 mcu별로 slave와 master 설정 해주시고 소스코드로 둘을 구분하여 구현하셔야 할겁니다.
      저의 경우 mcu가 마스터이고 제어 대상인 센서들이 slave인 구성의 프로젝트를 진행한 바 있습니다.
      i2c의 경우 관련 데이터시트를 보시면 설명이 자세히 되있을 것입니다.

    • 임베어려워 2017.06.14 12:29 수정/삭제

      답변감사합니다. 늦게 확인했네요 제가 ㅠ
      혹시 두 보드간 회로 구성은 완료한거(?) 같고 각 보드에 맞게 코드를 구성해서 보드에 올려놓고 실행했는데 (pc 2대로...각각의 tera term에서) 마스터에선 계속 데이터를 보내는데 슬레이브에서 못받는 느낌이라...혹시 봐주실수 있을까요??(메일 주소라도 알려주시면 너무너무나도 감사하겠습니다 ㅜㅜ)

    • Justin T. 2017.06.14 13:01 신고 수정/삭제

      전문가 분들께 도움을 받으시면 더 쉽게 해결하실 수 있을겁니다.
      http://e2e.ti.com/
      영어 좀 되신다면 큰 도움 되실겁니다!