티스토리 뷰

프로젝트/OLED12864

OLED 12864 - I2C

Just4Fun 2018. 3. 10. 18:53

지금까지는 OLED 디스플레이 모듈과의 통신을 위하여 SPI버스를 이용하였지만, 이번에는 I2C 버스를 이용하여 원하는 데이터를 출력하는 방법에 대해서 설명하도록 하겠다.

SPI 버스 방식은 모두 7개의 연결이 필요하였지만, I2C버스의 경우 전원 포함 4개의 연결만 필요하므로 훨씬 단순한 연결방식이라고 할 수 있겠다.

SSD1306 datasheet 문서에서 I2C 버스의 경우에 어떻게 데이터를 보내야하는지는 위의 그림과 같이 설명되어 있다.

I2C의 경우 device address가 필요한데 SSD1306의 경우에는 0x3C의 값을 가진다.  필요한 경우 칩의 D/C# 핀을 1로 연결하면 device address가 0x3D로 변경할 수 있다.  이번 프로젝트에서 사용하는 모듈은 0x3C의 주소를 가지고 있다.

Address 데이터를 송신한 후에는 다음에 쓰여지는 데이터들이 command 데이터인지, GDDRAM에 쓰여지는 데이터인지 구별하기 위하여 B6비트 값으로 결정하도록 하였다. B6의 값이 0이면 command 데이터이고, 1이면 GDDRAM 데이터가 된다.

ssd1306_cmd()와 ssd1306_data() 함수만 위의 내용대로 수정하면 SPI 버스를 사용한 경우와 동일한 결과를 볼 수 있다.


oled_i2c.zip


'프로젝트 > OLED12864' 카테고리의 다른 글

OLED 12864 - String(문자 출력)  (6) 2018.03.09
OLED 12864 - Draw Dot  (0) 2018.03.03
OLED 12864 - HORIZONTAL, VERTICAL Addressing Mode  (0) 2018.03.01
OLED 12864 - Page Addressing Mode  (0) 2018.03.01
OLED 12864 - SSD1306  (1) 2018.02.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함