GND - 접지, VCC - (3.3V~5V), SCL - 클럭핀, SDA - 데이터핀, 인터페이스 - I2C
SCL핀 & SDA핀을 묶어서 GND와 TWI 통신을 한다.
SCL (클록) : 통신을 주관하여 통신 라인을 공유
풀업저항을 연결시켜 동시 통신에 충돌을 방지 시킨다, 통신속도가 빠르다.
Master : 통신을 주관하는 권한을 가진 장치로 클럭을 발생시킨다.
Slave : 나머지 장치, 마스터에 의해 주소가 지정되는 장치
ATmega 128의 TWI 통신
2선식 직렬 통신 규격으로 SDA, SCL 2개의 라인으로 양방향 직렬 통신을 한다.
SDA : 온도, 습도 값을 나타내고 128개의 주소를 지정할 수 있다.
SCL : 샘플링 타임을 나타내는 것으로 반드시 마스터가 발생시켜 슬레이브로 전달한다.
Master와 Slave 동작을 지원하고
7비트 주소를 가진다(최대 128개의 Slave 연결이 가능하다 2^7)
✔ SPI 통신 : 동기식 직렬 통신 방식으로 I2C 통신보다 속도가 빠르고 동시에 송수신이 가능하다.
AND-Wired-Pull-Up 저항을 연결
👉 Device 1에 스위치를 연결했을 시, 풀업 저항이기 때문에 SDA는 0이 된다.
Device1이 0이기 때문에 나머지 장치는 모두 0이 된다.
AND 구조 : 하나가 0이 입력되면 그 선은 모두 0이다 (모든 스위치를 off 할 때만 1이 된다.)
데이터 프레임 : 마스터와 슬레이브간 (양방향) 통신 비트로 주소 패킷+데이터 패킷 형식으로 구성(1byte)
주소 패킷 : 주소를 구성하는 데이터의 71bit 주소를 반드시 포함
데이터 패킷 : 81bit 데이터 반드시 포함
START조건(1bit) + 주소(7bit) + 데이터(8bit) + STOP조건(1bit)
👉 9bit 주소 패킷 = 7bit 슬레이브 주소(SLA) + R/W + ACK
👉 9bit 데이터 패킷 = 8bit 데이터 + ACK
사용하지 않는 상태(Start전) : AND-Wired 구조일 때 1로 SDA가 0으로 떨어질 때 START 조건
하나의 마스터가 127개의 슬레이브에게 데이터 전송
마스터가 슬레이브로 데이터를 내보낼 땐 W로 표시하고 그래프는 0이 된다.
슬레이브에서 마스터로 데이터를 읽어올 땐 R로 표시하고 그래프는 1이 된다.
ACK : 응답신호로 슬레이브가 마스터한테 보내는 것으로 슬레이브가 만들어낸다(전송 성공시 0으로 응답)
STOP : 8비트 데이터 전송 완료
👉 SCL이 1이고 SDA가 1인 구간일 때 데이터 라인의 값을 샘플링한다.
SDA가 0으로 신호를 보내면 START → 주소패킷~데이터패킷에서 1byte 데이터를 전송 → 클럭이 1일 때 SDA가 1의 신호를 가지면 STOP
REPEATED START : 신호를 연속적으로 보내기 위해 지정된 슬레이브 계속적으로 데이터를 보낼 때
- Master의 역할
SCL clock, Start, Stop 신호를 생성
Receiver가 Ack를 high로 놔두면 데이터를 받을 수 없음을 transmitter에게 알려준다.
데이터는 MSB부터 전송한다.