-
I2C 통신Note/임베디드 노트 2020. 11. 26. 12:45
n개의 디바이스가 2개의 선 SDA와 SCL로 연결되어 1:1 통신을 할 수 있다.
하나의 디바이스가 마스터로 선택되면 나머지 디바이스는 슬레이브로 선택된다.
마스터는 Slave의 주소를 선택하여 통신을 하게된다.
* Half Duplex 통신이다.
SDA : 데이터 전송선
SCL : 클럭
(출처 : Atmega2560 DataSheet)
SCA와 SCL은 기본적으로 Pull Up저항으로 구성된다. (일반적인 기기에서는 내부적으로 구현됨)
참고 :
- 마스터는 여러개가 될 수도 있으나, 한번에 하나의 마스터와 슬레이브만 통신 가능
- SDA선으로 데이터 송수신이 모두 이루어지기 때문에 Floating현상이 발생할 수 있어서 풀업저항이 필요하다.
SCA가 LOW로 떨어지면 그때 데이터 시작 신호로 판별한다. 그리고 클럭에 맞춰서 데이터를 전송한다.
끝엔 SCA와 SCL을 모두 High로 만들어 정지한다.
I2C 통신 다이어그램 (출처 : 위키백과)
전송되는 데이터의 패킷은 아래와 같다.
슬레이브 선택을 위해 항상 ADDRESS주소가 데이터 앞에 붙는다. 또한 데이터 앞뒤로 ACK 비트가 붙는다.
항상 붙는 주소 데이터 때문에 긴 데이터는 전송하기 부적합하다는 단점이있다.
마스터에서 슬레이브로 데이터를 Write 마스터에서 슬레이브로 데이터를 Read
* 참고 :
WRITE 필드는 "LOW", READ는 "HIGH" 이다.
ACK 필드는 "LOW", NACK는 "HIGH"이다.
- 하나의 마스터에 여러 개의 슬레이브 기기가 연결될 수 있다는 장점이있다
- 클럭 신호를 사용하는 동기식 통신 방식이기 때문에 시간에 자유롭다는 장점이있다.
- 슬레이브 선택을 위해 항상 주소 데이터가 붙기 때문에 긴 데이터는 부적합하다는 단점이있다.
참조 :
m.blog.naver.com/yuyyulee/220323559541[아두이노 강좌] 29. I2C 통신 (1) - I2C 통신이란 무엇인가
아두이노에 사용되는 센서나 모듈 등을 사용하다 보면, 의외로 시리얼 통신이나 I2C 통신, SPI 통신을...
blog.naver.com
[기술노트_통신] I2C 통신이란?
아두이노의 입출력(I/O) 핀을 보다 효율적으로 활용하고 싶다면 I2C에 주목해보시죠~ 앱스킷(APPSKIT)은 I2C 통신을 많이 사용합니다. I2C는 두 개의 신호선(SDA, SCL)으로 다수의 I2C 통신을 지원하는
blog.daum.net
en.wikipedia.org/wiki/I%C2%B2C
I²C - Wikipedia
Not to be confused with I²S. I2C (Inter-Integrated Circuit), pronounced I-squared-C, is a synchronous, multi-master, multi-slave, packet switched, single-ended, serial communication bus invented in 1982 by Philips Semiconductor (now NXP Semiconductors). I
en.wikipedia.org
'Note > 임베디드 노트' 카테고리의 다른 글
TIMER/PWM (0) 2020.11.26 CAN(Controller Area Network) 통신 (0) 2020.11.26 SPI 통신 (0) 2020.11.26 ARM 프로세서 개요 (0) 2020.11.25 USART 통신(UART와의 차이) (0) 2020.11.25