@@ -370,7 +370,7 @@ static void __not_in_flash_func(free_buffer_callback)() {
370370#define FRAME_PERIOD J_OLED_FRAME_PERIOD
371371
372372// some oleds need 2 park lines, but that's not as robust
373- #define PARK_LINES 1
373+ #define PARK_LINES 2
374374
375375static const uint8_t command_initialise [] = {
376376 0xAE , //display off
@@ -418,6 +418,74 @@ uint8_t byte_reverse(uint8_t b) {
418418 return b ;
419419}
420420
421+ void power_on_logo (void ) {
422+ // get the logo up on screen using conservative settings and no greyscale trickery, as proof of life
423+
424+ gpio_init (J_OLED_CS );
425+ gpio_set_dir (J_OLED_CS , GPIO_OUT );
426+ gpio_put (J_OLED_CS , 0 );
427+
428+ gpio_init (J_OLED_RESET );
429+ gpio_set_dir (J_OLED_RESET , GPIO_OUT );
430+ gpio_put (J_OLED_RESET , 0 );
431+
432+ gpio_init (J_OLED_DC );
433+ gpio_set_dir (J_OLED_DC , GPIO_OUT );
434+ gpio_put (J_OLED_DC , 0 );
435+
436+ gpio_put (J_OLED_RESET , 1 );
437+ sleep_ms (1 );
438+ gpio_put (J_OLED_RESET , 0 );
439+ sleep_ms (10 );
440+ gpio_put (J_OLED_RESET , 1 );
441+
442+ gpio_set_function (PICO_DEFAULT_SPI_SCK_PIN , GPIO_FUNC_SPI );
443+ gpio_set_function (PICO_DEFAULT_SPI_TX_PIN , GPIO_FUNC_SPI );
444+ spi_init (spi0 , 115200 );
445+ spi_set_format (spi0 , 8 , SPI_CPOL_0 , SPI_CPHA_0 , SPI_MSB_FIRST );
446+
447+ gpio_put (J_OLED_CS , 1 );
448+ gpio_put (J_OLED_DC , 0 );
449+ gpio_put (J_OLED_CS , 0 );
450+
451+ const uint8_t cmd_init [] = {
452+ 0xAE , 0x20 , 0x00 , 0x40 , 0xA1 , 0xA8 , 0x27 , 0xC8 , 0xD3 , 0x00 , 0xDA , 0x12 , 0xD5 , 0xF0 , 0xD9 , 0x11 , 0xDB , 0x20 , 0x81 , 0x7F ,
453+ 0xA4 , 0xA6 , 0x8D , 0x14 , 0xAD , 0x30 , 0x21 , 0x1C , 0x63 , 0x22 , 0x00 , 0x04 , 0xAF
454+ };
455+ spi_write_blocking (spi0 , cmd_init , sizeof (cmd_init ));
456+
457+ gpio_put (J_OLED_CS , 1 );
458+ gpio_put (J_OLED_DC , 1 );
459+ gpio_put (J_OLED_CS , 0 );
460+
461+ const uint8_t dat_logo [] = {
462+ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x02 , 0xfe , 0x02 , 0x02 , 0x02 , 0xe2 , 0x22 , 0x22 , 0x22 , 0xe2 , 0x02 , 0x02 , 0x04 , 0xfc ,
463+ 0x00 , 0xfc , 0x02 , 0x02 , 0x02 , 0xe2 , 0x22 , 0x22 , 0x22 , 0xe2 , 0x02 , 0x02 , 0x02 , 0xfc , 0x00 , 0xfc , 0x02 , 0x02 , 0x02 , 0xe2 ,
464+ 0x22 , 0x22 , 0x22 , 0xe2 , 0x02 , 0x02 , 0x02 , 0xfc , 0x00 , 0x02 , 0xfe , 0x02 , 0x02 , 0x02 , 0x0c , 0x30 , 0xc0 , 0xc0 , 0x30 , 0x0c ,
465+ 0x02 , 0x02 , 0x02 , 0x02 , 0xfe , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xff ,
466+ 0x00 , 0x00 , 0x00 , 0xff , 0x00 , 0x00 , 0x00 , 0xff , 0x40 , 0xa0 , 0x00 , 0xff , 0x00 , 0xff , 0x00 , 0x40 , 0x80 , 0xff , 0x00 , 0x00 ,
467+ 0x00 , 0xff , 0x00 , 0x00 , 0x00 , 0xff , 0x00 , 0xff , 0x00 , 0x00 , 0x00 , 0xff , 0x00 , 0x00 , 0x00 , 0xff , 0x00 , 0x00 , 0x00 , 0xff ,
468+ 0x00 , 0x00 , 0xff , 0xa0 , 0x40 , 0xf0 , 0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x80 , 0x00 , 0x00 , 0xff , 0x00 , 0x00 , 0x00 ,
469+ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xff , 0x00 , 0xa8 , 0x54 , 0xbf , 0x60 , 0xb0 , 0x58 , 0xaf ,
470+ 0x55 , 0x2a , 0x80 , 0xff , 0x00 , 0x7f , 0xc0 , 0x95 , 0x2a , 0x57 , 0xa8 , 0x50 , 0xa0 , 0x7f , 0x28 , 0x90 , 0xc0 , 0x7f , 0x00 , 0x7f ,
471+ 0xc0 , 0x90 , 0x28 , 0x7f , 0xa0 , 0x50 , 0xa8 , 0x57 , 0x2a , 0x95 , 0xc0 , 0x7f , 0x00 , 0x80 , 0xff , 0x2a , 0x55 , 0xff , 0x03 , 0x3c ,
472+ 0xd5 , 0x2a , 0xd4 , 0x38 , 0x07 , 0xff , 0x50 , 0xa0 , 0xff , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
473+ 0x00 , 0x00 , 0x00 , 0xff , 0x00 , 0x2a , 0x95 , 0xca , 0x65 , 0x32 , 0x19 , 0x0c , 0x06 , 0x03 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 ,
474+ 0x03 , 0x06 , 0x0c , 0x19 , 0x0c , 0x06 , 0x03 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x03 , 0x06 , 0x0c , 0x19 , 0x0c , 0x06 ,
475+ 0x03 , 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x03 , 0x06 , 0x0f , 0x00 , 0x00 , 0x03 , 0x0c , 0x03 , 0x00 , 0x00 , 0xff , 0x55 , 0xaa ,
476+ 0xff , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x0f , 0x06 , 0x03 , 0x01 , 0x00 ,
477+ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
478+ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
479+ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x03 , 0x06 , 0x0f , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00
480+ };
481+
482+ spi_write_blocking (spi0 , dat_logo , sizeof (dat_logo ));
483+
484+ gpio_put (J_OLED_CS , 1 );
485+
486+ //sleep_ms(2000);
487+ }
488+
421489static void display_driver_init () {
422490
423491 gpio_init (J_OLED_CS );
@@ -438,7 +506,7 @@ static void display_driver_init() {
438506
439507 gpio_set_function (PICO_DEFAULT_SPI_SCK_PIN , GPIO_FUNC_SPI );
440508 gpio_set_function (PICO_DEFAULT_SPI_TX_PIN , GPIO_FUNC_SPI );
441- spi_init (spi0 , 62500000 );
509+ spi_init (spi0 , 60000000 );
442510 spi_set_format (spi0 , 8 , SPI_CPOL_0 , SPI_CPHA_0 , SPI_MSB_FIRST );
443511
444512 gpio_put (J_OLED_CS , 1 );
0 commit comments