void ssd1306_print(const char * string, uint16_t tcolor, uint16_t bcolor, uint8_t tsize) { const char * p = string; int n = strlen(string); while (*p != 0 && n-->0) { ssd1306_write( (uint8_t) *p++, tcolor, bcolor, tsize); } }
void ssd1306_init(void) { oled_spi_dev.port = 1; oled_spi_dev.config.mode = HAL_SPI_MODE_MASTER; oled_spi_dev.config.freq = 6000000; hal_spi_init(&oled_spi_dev); //config reset and ds pin gpio_oled_reset.port = 8; //PA8 gpio_oled_reset.config = OUTPUT_PUSH_PULL; hal_gpio_init(&gpio_oled_reset); hal_gpio_output_high(&gpio_oled_reset); gpio_oled_cs.port = 22; //PA22 gpio_oled_cs.config = OUTPUT_PUSH_PULL; hal_gpio_init(&gpio_oled_cs); hal_gpio_output_high(&gpio_oled_cs); aos_msleep(1); hal_gpio_output_low(&gpio_oled_cs); gpio_oled_ds.port = 20; //PA20 gpio_oled_ds.config = OUTPUT_PUSH_PULL; hal_gpio_init(&gpio_oled_ds); hal_gpio_output_high(&gpio_oled_ds); aos_msleep(1); hal_gpio_output_low(&gpio_oled_reset); aos_msleep(1); hal_gpio_output_high(&gpio_oled_reset); //config oled ssd1306_write(SSD1306_DISPLAYOFF, SSD1306_CMD); ssd1306_write(SSD1306_SETDISPLAYCLOCKDIV, SSD1306_CMD); ssd1306_write(80, SSD1306_CMD); ssd1306_write(SSD1306_SETMULTIPLEX, SSD1306_CMD); ssd1306_write(0x3F, SSD1306_CMD); ssd1306_write(SSD1306_SETDISPLAYOFFSET, SSD1306_CMD); ssd1306_write(0x00, SSD1306_CMD); ssd1306_write(SSD1306_SETSTARTLINE, SSD1306_CMD); ssd1306_write(SSD1306_ENABLE_CHARGE_PUMP, SSD1306_CMD); ssd1306_write(0x14, SSD1306_CMD); ssd1306_write(SSD1306_MEMORYMODE, SSD1306_CMD); ssd1306_write(0x02, SSD1306_CMD); ssd1306_write(0xA1, SSD1306_CMD); ssd1306_write(SSD1306_COMSCANINC, SSD1306_CMD); ssd1306_write(SSD1306_SETCOMPINS, SSD1306_CMD); ssd1306_write(0X12, SSD1306_CMD); ssd1306_write(SSD1306_SETCONTRAST, SSD1306_CMD); ssd1306_write(0x1F, SSD1306_CMD); //set brightness ssd1306_write(SSD1306_SETPRECHARGE, SSD1306_CMD); ssd1306_write(0xF1, SSD1306_CMD); ssd1306_write(SSD1306_SETVCOMDETECT, SSD1306_CMD); ssd1306_write(0x30, SSD1306_CMD); ssd1306_write(SSD1306_DISPLAYALLON_RESUME, SSD1306_CMD); ssd1306_write(SSD1306_NORMALDISPLAY, SSD1306_CMD); ssd1306_write(SSD1306_DISPLAYON, SSD1306_CMD); return 0; }
void ssd1306_set_brightness(uint8_t brightness) { ssd1306_write(SSD1306_SETCONTRAST, SSD1306_CMD); ssd1306_write(brightness, SSD1306_CMD); //set brightness }