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 |