void oledRefresh(void) { /* Draw triangle in upper right corner */ oledInvertDebugLink(); const uint8_t *buffer = oledGetBuffer(); static uint32_t data[OLED_HEIGHT][OLED_WIDTH]; for (size_t i = 0; i < OLED_BUFSIZE; i++) { int x = (OLED_BUFSIZE - 1 - i) % OLED_WIDTH; int y = (OLED_BUFSIZE - 1 - i) / OLED_WIDTH * 8 + 7; for (uint8_t shift = 0; shift < 8; shift++, y--) { bool set = (buffer[i] >> shift) & 1; data[y][x] = set ? 0xFFFFFFFF : 0xFF000000; } } SDL_UpdateTexture(texture, NULL, data, OLED_WIDTH * sizeof(uint32_t)); SDL_RenderCopy(renderer, texture, NULL, NULL); SDL_RenderPresent(renderer); /* Return it back */ oledInvertDebugLink(); }
void oledRefresh() { static const uint8_t s[3] = {OLED_SETLOWCOLUMN | 0x00, OLED_SETHIGHCOLUMN | 0x00, OLED_SETSTARTLINE | 0x00}; // draw triangle in upper right corner oledInvertDebugLink(); gpio_clear(OLED_CS_PORT, OLED_CS_PIN); // SPI select SPISend(SPI_BASE, s, 3); gpio_set(OLED_CS_PORT, OLED_CS_PIN); // SPI deselect gpio_set(OLED_DC_PORT, OLED_DC_PIN); // set to DATA gpio_clear(OLED_CS_PORT, OLED_CS_PIN); // SPI select SPISend(SPI_BASE, _oledbuffer, sizeof(_oledbuffer)); gpio_set(OLED_CS_PORT, OLED_CS_PIN); // SPI deselect gpio_clear(OLED_DC_PORT, OLED_DC_PIN); // set to CMD // return it back oledInvertDebugLink(); }