본문 바로가기
MCU 통신/이론

I2C

by [Akashic Records] 개발의선지자 2024. 6. 27.

※ 해당 글은 개인 공부 기록을 남겨놓는 것이 목적임으로 오류가 발생할수 있습니다.

    오류 또는 업데이트된 사항이 있다면 댓글로 알려주시면 감사하겠습니다.

 

이번에는 I2C(아이투씨 또는 아이스퀘어라 불린다) 통신을 포스팅하고자 한다.

I2C는 필립스에서 만들어 여러 주변장치들이 최소한 연결선만 사용하는 저속 통신 방식

 

I2C는 한줄로 마스터 - 슬레이브 구조를 가진 반이중 동기 통신

 

연결 선 

1. 데이터 통신 전송용 : SDA(Serial Data)  -> SDA 한 개로 데이터 송수신을 진행하기에 반이중 통신이다.

2, 동기 클럭 신호 통로 : SCL(Serial Clock) 

 

 

 

1:n 사용 Slave 연결

각각 slave는 고유 주소(7bit)를 가지고 있다. 1:n 통신 시 마스터는 통신하고자 슬레이브 하나  주소를 선택하여 해당 슬레이브와 통신을 시작한다. 나머지 슬레이브는 대기 상태에 들어간다. 


SDA 
구조

Start(하강) Address(7) Write/Read(1) ACK/LACK DATA ACK STOP(상승)

 

 

마스터-> 슬레이브 1byte data WRITE(R/W : LOW)

:  START 1bit/ Address 7-bits / Write 1bit(High, 1) / ACK(긍정 응답): Low , LACK(부정 응답) : High 1bit / Data 8bit(1byte) from Mastr / ack 1bit / stop 1 bit

슬레이브에 Write 성공 시 슬레이브가 SDA 0으로 보낸다(ACK)

슬레이브에 Write 문제 발생시 시 슬레이브가  SDA 1으로 보낸다(NACK)

 

 

 

마스터 -> 슬라이브 1byte data READ(R/W : HIGH)

Start 1bit / Address 7bits / Read 1bit(Low, 0 )/ ACK(긍정 응답): Low , LACK(부정 응답) : High 1bit

/ Data 8bit(1Byte) from Slave / ack 1bit / stop 1 bit

마스터가 Read 성공 시  SDA 0으로 보낸다(ACK)

마스터가 Read 문제 발생시 시 슬레이브가  SDA 1으로 보낸다(NACK)

 

통신 프로토콜

 

일반 속도 : 100khz , faster mode: 400hz

1byte 데이터 전송 시작과 끝

시작: SCL : High, SDA : 하강 엣지

: SCL : high , SDA : 상승 엣지

 

시작 신호 : Start sequnce + 8bit (Address(7) + Read/high(1))

ADDRESS 필드와 DATA 필드에서 SCL LOW일 때 데이터를 변경 , SCL High 일 때 데이터 확정

 

Data Write (Master -> Slave)

1. Send a start sequence

2. Send the I2C address(7bit) of the slave with the R/W bit low

3.  ACK or NACK 1 bit (Slave -> Master)

 

4. Send the internal register number you want to write to

 

5.  ACK or NACK bit (Slave -> Master)


6. Send the data 1 byte ( Master  -> Slave )


7. ACK or NACK 1 bit (Slave -> Master)

8. Repeat 6th, 7th

9. Send the stop sequence.

Write process



Data Read (Slave -> Master)

1. Send a start sequence

2. Send the I2C address(7bit) of the slave with the R/W bit low

3.  ACK or NACK bit (Slave -> Master ) 주소 수신한 최초 1회만 ACK 비트를 전송하여 수신 확인 및 데이터 전송 확인

4. Send the data 1 byte (Slave -> Master)

5. ACK or NACK 1 bit ( Master -> Slave )

6. Repeat 4th, 5th

7. After Send final nth bytes, Send NACK bit

8. Send the stop sequence.

 

Read Process

 

 

 

'MCU 통신 > 이론' 카테고리의 다른 글

SPI  (0) 2024.07.07
NEC Protocol  (0) 2024.06.27
RS-485 HW 구성 [1]  (0) 2024.06.13
U(S)ART (1)  (0) 2024.05.26