본문 바로가기
Embedded

[임베디드] SSD1306 OLED 모듈 제어 - I2C

by yhames 2024. 9. 2.
728x90

I2C

I2C(Inter-Integrated Circut)는 SPI와 마찬가지로 IC 간의 단거리 통신을 위해 고안된 프로토콜입니다. Clock 신호를 사용하여 동기 방식으로 통신하기 때문에 사전에 데이터 전송 속도 등을 맞추지 않아도 된다는 특징이 있습니다. I2C에서는 풀업 저항을 사용하여 기본적으로 HIGH 상태입니다.

 

또한 SPI와 다르게 오직 2개의 핀만 사용한다는 것이 특징입니다. SPI는 전이중 통신이 가능하지만, 슬레이브가 추가될 때마다 슬레이브 선택을 위한 핀이 추가로 필요합니다. 반면 I2C주소 체계를 사용하기 때문에 2개의 핀만으로 여러 장치와 반이중 통신이 가능합니다.

 

데이터 형식

위 데이터 프레임 형식은 마스터에서 슬레이브에 데이터를 송신(Master write / Slave read)하는 예시입니다. I2C는 8비트(MSB)씩 데이터를 주고 받으며, 7비트의 주소공간을 사용합니다. 이 중 16개는 예약되어 있으므로 최대 112개의 노드를 연결할 수 있습니다. 전송 속도는 일반적으로 표준모드인 100 kbit/s저속모드인 10 kbit/s가 사용됩니다.

 

마스터에서 슬레이브의 데이터를 읽어야할때(Mastser read / Slave write)도 위와같이 데이터 프레임 형식은 동일합니다.

 

최신 리비전의 I2C에서는 패스트모드인 400 kbit/s고속(high-speed) 모드인 3.4 Mbit/s를 지원하고, 10비트의 주소공간을 지원하여 최대 1008개의 노드를 연결할 수 있습니다. 자세한 내용은 Philips의 I2C 명세에서 확인할 수 있습니다.

 

개발환경

개발도구

구분 내용
통합개발환경 STM32CubeIDE

 

BOM

STM32F103 Development Board(좌), SSD1306 OLED 모듈 전면(중간), SSD1306 OLED 모듈 후면 (우)

상품명(링크) 수량
STM32F103 Development Board 1
SSD1306 OLED 모듈 1
ST-Link STM32 디버거 (with JTAG 20-pin cable) 1
USB 2.0 A to mini-B 커넥터 1
소켓 점퍼 케이블 40P (칼라) (M/F) 20cm 4

 

H/W

H/W 구성도

 

HSI(Human System Interface)

 

S/W

소스코드

소스코드는 양이 많아서 생략합니다. 강의를 참고해주세요.

 

결과

 

참고자료

 

[임베디드 32강] 이제는 쉬워진 I2C 통신

[임베디드 33강] 배운 I2C로 OLED를 제어해보자!

 

 

반응형