Skip to content

Commit 602a9f6

Browse files
committed
Fix SSD1306 display
1 parent b0861ec commit 602a9f6

File tree

3 files changed

+34
-55
lines changed

3 files changed

+34
-55
lines changed

ports/raspberrypi/boards/tinycircuits_thumby/board.c

Lines changed: 19 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -16,43 +16,19 @@
1616

1717

1818
uint8_t display_init_sequence[] = {
19-
/*
20-
0, 0xae, // display off
21-
0xd5, 0, 0x80, // set display clock div
22-
0, 0xd3, 0, 0x00, // set display offset
23-
0, 0x40, // set start line
24-
0, 0xa4, // display all on, resume
25-
0, 0xa6, // normal display
26-
0, 0x8d, 0, 0x14, // charge pump
27-
0, 0x20, 0, 0x00, // memory mode
28-
0, 0xa0, // segremap
29-
0, 0xc0, // com scan increment
30-
0, 0x81, 0, 0xff, // set contrast
31-
0, 0xd9, 0, 0xf1, // set precharge
32-
0, 0xd8, 0, 0x20, // set v com detect
33-
0, 0xa8, 0, 40-1, // set multiplex
34-
0, 0xda, 0, 0x12, // set com pins
35-
0, 0xad, 0, 0x30,
36-
0, 0xaf, // on
37-
*/
38-
39-
0xae, 0, // sleep
40-
0xd5, 1, 0x80, // fOsc divide by 2
41-
0xd3, 1, 0x00, // set display offset
42-
0x40, 1, 0x00, // set start line
43-
0xa4, 0, // display all on, resume
44-
0xa6, 0, // normal display
45-
0x8d, 1, 0x14, // charge pump
46-
0x20, 1, 0x00, // memory mode
47-
0xa0, 0, // segremap
48-
0xc0, 0, // com scan increment
49-
0x81, 1, 0xff, // set contrast
50-
0xd9, 1, 0xf1, // set precharge
51-
0xd8, 1, 0x20, // set v com detect
52-
0xa8, 1, 40-1, // set multiplex
53-
0xda, 1, 0x12, // set com pins
54-
0xad, 1, 0x30,
55-
0xaf, 0, // on
19+
0xAE, 0, // DISPLAY_OFF
20+
0x20, 1, 0x00, // Set memory addressing to horizontal mode.
21+
0x81, 1, 0xcf, // set contrast control
22+
0xA1, 0, // Column 127 is segment 0
23+
0xA6, 0, // Normal display
24+
0xc8, 0, // Normal display
25+
0xA8, 1, 0x3f, // Mux ratio is 1/64
26+
0xd5, 1, 0x80, // Set divide ratio
27+
0xd9, 1, 0xf1, // Set pre-charge period
28+
0xda, 1, 0x12, // Set com configuration
29+
0xdb, 1, 0x40, // Set vcom configuration
30+
0x8d, 1, 0x14, // Enable charge pump
31+
0xAF, 0, // DISPLAY_ON
5632
};
5733

5834
void board_init(void) {
@@ -76,17 +52,17 @@ void board_init(void) {
7652
72, // Width (after rotation)
7753
40, // Height (after rotation)
7854
28, // column start
79-
0, // row start
55+
28, // row start
8056
0, // rotation
8157
1, // Color depth
8258
true, // grayscale
8359
false, // pixels in byte share row. only used for depth < 8
8460
1, // bytes per cell. Only valid for depths < 8
8561
false, // reverse_pixels_in_byte. Only valid for depths < 8
8662
true, // reverse_pixels_in_word
87-
0, // Set column command
88-
0, // Set row command
89-
0, // Write memory command
63+
0x21, // Set column command
64+
0x22, // Set row command
65+
44, // Write memory command
9066
display_init_sequence,
9167
sizeof(display_init_sequence),
9268
NULL, // backlight pin
@@ -97,8 +73,8 @@ void board_init(void) {
9773
true, // auto_refresh
9874
60, // native_frames_per_second
9975
true, // backlight_on_high
100-
true, // SH1107_addressing
101-
50000); // backlight pwm frequency
76+
false, // SH1107_addressing
77+
0); // backlight pwm frequency
10278
}
10379

10480
void reset_board(void) {

ports/raspberrypi/boards/tinycircuits_thumby/mpconfigboard.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,18 @@
66

77
#pragma once
88

9-
#define MICROPY_HW_BOARD_NAME "TinyCircuits Thumby"
10-
#define MICROPY_HW_MCU_NAME "rp2040"
9+
#define MICROPY_HW_BOARD_NAME "TinyCircuits Thumby"
10+
#define MICROPY_HW_MCU_NAME "rp2040"
1111

12-
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO18)
13-
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO19)
12+
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO18)
13+
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO19)
1414

15-
#define CIRCUITPY_BOARD_OLED_DC (&pin_GPIO17)
16-
#define CIRCUITPY_BOARD_OLED_CS (&pin_GPIO16)
17-
#define CIRCUITPY_BOARD_OLED_RESET (&pin_GPIO20)
15+
#define CIRCUITPY_BOARD_OLED_DC (&pin_GPIO17)
16+
#define CIRCUITPY_BOARD_OLED_CS (&pin_GPIO16)
17+
#define CIRCUITPY_BOARD_OLED_RESET (&pin_GPIO20)
1818

1919
#define CIRCUITPY_BOARD_SPI (1)
2020
#define CIRCUITPY_BOARD_SPI_PIN {{.clock = DEFAULT_SPI_BUS_SCK, .mosi = DEFAULT_SPI_BUS_MOSI, .miso = NULL }}
21+
22+
// For entering safe mode
23+
#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO6)

ports/raspberrypi/boards/tinycircuits_thumby/pins.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ static const mp_rom_map_elem_t board_module_globals_table[] = {
1616
{ MP_ROM_QSTR(MP_QSTR_EXT_PU), MP_ROM_PTR(&pin_GPIO1) },
1717

1818
// 0.42 inch OLED AST1042
19-
{ MP_ROM_QSTR(MP_QSTR_OLED_CS), MP_ROM_PTR(&pin_GPIO16) },
20-
{ MP_ROM_QSTR(MP_QSTR_OLED_DC), MP_ROM_PTR(&pin_GPIO17) },
21-
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO18) },
22-
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO19) },
23-
{ MP_ROM_QSTR(MP_QSTR_OLED_RESET), MP_ROM_PTR(&pin_GPIO20) },
19+
{ MP_ROM_QSTR(MP_QSTR_OLED_CS), MP_ROM_PTR(CIRCUITPY_BOARD_OLED_CS) },
20+
{ MP_ROM_QSTR(MP_QSTR_OLED_DC), MP_ROM_PTR(CIRCUITPY_BOARD_OLED_DC) },
21+
{ MP_ROM_QSTR(MP_QSTR_OLED_RESET), MP_ROM_PTR(CIRCUITPY_BOARD_OLED_RESET) },
22+
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(DEFAULT_SPI_BUS_SCK) },
23+
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(DEFAULT_SPI_BUS_MOSI) },
2424

2525
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
2626
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)},

0 commit comments

Comments
 (0)