임베디드/고추건조기

I2C 구조

twoweeks-within 2024. 12. 15. 14:28

I2C // IIC

클럭동기방식 <> onewire 는 시간으로 구분했음
주소를 불러서 각 SLAVE 구별

특징
1. 8bit 씩 주고받음
2. 7bit 주소공간 ( 128개)
// ex) 0x78 > 0111 1000
 > 111 1000만보냄
3. 400Khz 전송속도
4. sleep 모드 > 주소 인식으로 일어남
5. 동기방식
6. 선 두가닥
7. 기본 HIGH
// 클럭 발생 주체는 master 

기본구조

0. 클럭 HIGH> DA: HIGH
1. 클럭 HIGH > DA : LOW
2. 클럭 LOW > DA : HIGH
3. 다시 클럭 HIGH > 이때 DA 를 읽음
4. 쭉하다가
5. 클럭 HIGH > DA : LOW 계속유지
6. 클럭 HIGH 유지 , > DA: HIGH
7. 기본값


WRITE
//master
1. slave 주소 7bit 를 쭉보냄
2. write bit (master) 0 : wtire , 1 : read 
 // 1 + 2 : 8bit
//slave
1. ACK bit (slave) 0 : 데이터 수신, 1 : 수신X
2. DATA (master ) : 8bit // 주소가 7bit
3. ACK bit (slave) 0: 데이터 잘받음

> CLK : HIGH > DA: LOW 유지
   >  "      > HIGH 변경

READ 
1. 주소 7bit 
2. READ bit ( master ) : 1
3. ACK bit ( slave ) : 0 
4. DATA ( slave ) 8bit
5. NACK ( master ) 1 : 잘받음 

옵션설정을 해보자
I2C1, 2 

standard mode  : 100KHZ 
fast mode : 400KHZ

Primary slave address : 0~ 127 로 주소설정 > master 를 slave 로 쓸 수 있음 > 다른 master 장치랑 연결
Dual Address Acknowledged : 주소를 두개를 가짐
general call address detection : 전체 장치에게 전달 ( 장치들이 기능을 지원 해야함 )  
  // 보통 reset 할때 사용

'임베디드 > 고추건조기' 카테고리의 다른 글

SSD1306 코드분석  (0) 2024.12.17
I2C hello world :)  (0) 2024.12.17
코드 분해  (0) 2024.12.14
문제원인  (0) 2024.12.14
장치 통합  (0) 2024.12.12