임베디드
MCU I2C 통신 데이터 읽는 방법
초코머핀
2025. 2. 4. 11:25
I2C 통신으로 0110을 전송한다고 예시를 들어보자.
SCL이 상승엣지일 떄 값을 읽는다고 가정

▶ 데이터는 SCL이 low일때 변경돼야합니다.
값 읽는 순서
1. Start : SCL이 high일때 SDA가 low로 변하는 경우, 데이터 전송 시작
2. 0을 전송하므로 SCL이 low일때 0을 유지
3. SCL이 high가 되는 시점에 0인 SDA값을 읽는다.
4. SCL이 low일때 SDA는 1로 변경된다.(파란선 시점에서 데이터 변경)
5. SDA가 1을 유지하고있으면 SCL이 high가 되는 시점에 1을 읽는다.(데이터가 바뀐 후 빨간 선에서 데이터 읽기)
6. 다음 전송할 값이 1이므로 1을 계속 유지하고있으면 SCL의 다음 high 시점에서 또 1을 읽는다.
7. SCL이 low일 때 SDA값이 0으로 변경
8. SCL이 high일때 SDA 0을 읽는다
9. 그럼 0110 이 제대로 전송된 것을 확인할 수 있다
10. Stop: SCL이 high일때 SDA가 high로 변하는 경우, 데이터 전송 끝
제가 공부한 부분을 기록한 것이므로 오류가 있을 수 있습니다.
틀린 부분을 알려주시면 수정하겠습니다.