이전 글에서 MCU와 OLED 모듈간의 SPI 통신이 제대로 수행되는지 확인하는 방법에 대해서 설명하였다. 확인하는 방법으로 Entire Display ON 레지스터의 값을 1로 설정하여 전 영역의 픽셀들이 모두 켜보는것이었다.기본적인 통신이 잘 되는지 확인하였으면 정상적인 화면 출력을 위하여 Entire Display ON 레지스터의 값을 0으로 만들어 어떻게 화면 출력이 이루어지는지 확인해 보도록 하겠다. void ssd1306_init(void) { _delay_ms(1); ssd1306_reset(); ssd1306_chargepump_enable(true); ssd1306_entire_on(false); ssd1306_display_on(true); } 8번 줄에 보이는것처럼 ssd1306_en..
이번 프로젝트는 SSD1306를 사용한 OLED 128 x 64 디스플레이를 구동해 보는 방법을 구현해 보는것이다.먼저 해야할 일은 SSD1306 datasheet를 구해서 충분히 이해될 정도로 반복해서 읽어 보는것이다.위의 표에 설명되어 있는것처럼 SSD1306은 MCU와 연결하는 방법이 5가지가 있음을 알수 있다. 이번 프로젝트에서는 그 중에서 4-wire SPI 연결 방법을 이용하여 MCU와 연결하도록 하겠다.이 프로젝트에서는 위의 그림에 보이는 OLED 디스플레이 모듈을 사용하도록 하겠다. 그림을 보면 모두 7핀이 제공되는데, SDIN(MOSI), SCLK(SCK), CS, D/C 이렇게 4개의 신호선을 SPI 통신으로 연결하는데 사용하고, Reset 신호를 받아들이기 위한 RES핀과 전원 연결을..
지금까지 분석하고 만들어 봤던 FAT32 파일 시스템 프로젝트를 VS1003 프로젝트에 적용 시켜 문제 없이 제대로 동작하는지 확인해 보도록 하겠다. void setup(void) { sysclock_init(BD_CLKSRC, BD_PLLMUL, BD_AHBPRE, BD_APB1PRE, BD_APB2PRE, BD_ADCPRE); uart_init(); spi_init(BAUD_PRE256); printf(CLEAR_SCRN"Coarse MP3 Player. %s - %s\n\n", __DATE__, __TIME__); init_command(); vs1003_init(); vs1003_write_reg(SCI_CLOCKF, 0xD000); vs1003_chg_volume(40); microsd_init..