Skip to content

Commit bd6b801

Browse files
committed
Add display init to Hacktablet firmware
1 parent f4dfd5f commit bd6b801

File tree

2 files changed

+71
-0
lines changed
  • ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet

2 files changed

+71
-0
lines changed

ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/board.c

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,83 @@
2626

2727
#include "supervisor/board.h"
2828
#include "mpconfigboard.h"
29+
#include "shared-bindings/board/__init__.h"
30+
#include "shared-bindings/dotclockframebuffer/DotClockFramebuffer.h"
31+
#include "shared-bindings/dotclockframebuffer/__init__.h"
32+
#include "shared-bindings/framebufferio/FramebufferDisplay.h"
2933
#include "shared-bindings/microcontroller/Pin.h"
34+
#include "shared-module/displayio/__init__.h"
35+
36+
static const mcu_pin_obj_t *blue_pins[] = {
37+
&pin_GPIO3,
38+
&pin_GPIO4,
39+
&pin_GPIO5,
40+
&pin_GPIO6,
41+
&pin_GPIO7
42+
};
43+
static const mcu_pin_obj_t *green_pins[] = {
44+
&pin_GPIO8,
45+
&pin_GPIO9,
46+
&pin_GPIO10,
47+
&pin_GPIO11,
48+
&pin_GPIO12,
49+
&pin_GPIO13
50+
};
51+
static const mcu_pin_obj_t *red_pins[] = {
52+
&pin_GPIO14,
53+
&pin_GPIO15,
54+
&pin_GPIO16,
55+
&pin_GPIO17,
56+
&pin_GPIO18
57+
};
58+
59+
static void display_init(void) {
60+
61+
// Turn on backlight
62+
// gpio_set_direction(2, GPIO_MODE_DEF_OUTPUT);
63+
// gpio_set_level(2, true);
64+
common_hal_never_reset_pin(&pin_GPIO39);
65+
66+
dotclockframebuffer_framebuffer_obj_t *framebuffer = &allocate_display_bus_or_raise()->dotclock;
67+
framebuffer->base.type = &dotclockframebuffer_framebuffer_type;
68+
69+
common_hal_dotclockframebuffer_framebuffer_construct(
70+
framebuffer,
71+
&pin_GPIO45, // de
72+
&pin_GPIO48, // vsync
73+
&pin_GPIO47, // hsync
74+
&pin_GPIO21, // pclk
75+
red_pins, MP_ARRAY_SIZE(red_pins),
76+
green_pins, MP_ARRAY_SIZE(green_pins),
77+
blue_pins, MP_ARRAY_SIZE(blue_pins),
78+
6500000, // Frequency
79+
800, // width
80+
480, // height
81+
30, 16, 210, false, // horiz: pulse, back porch, front porch, idle low
82+
13, 10, 22, false, // vert: pulse, back porch, front porch, idle low
83+
false, // DE idle high
84+
false, // pclk active high
85+
false, // pclk idle high
86+
0 // overscan left
87+
);
88+
89+
framebufferio_framebufferdisplay_obj_t *display = &allocate_display_or_raise()->framebuffer_display;
90+
display->base.type = &framebufferio_framebufferdisplay_type;
91+
common_hal_framebufferio_framebufferdisplay_construct(
92+
display,
93+
framebuffer,
94+
0, // rotation
95+
true // auto-refresh
96+
);
97+
}
3098

3199
void board_init(void) {
32100
// Debug UART
33101
#ifdef DEBUG
34102
common_hal_never_reset_pin(&pin_GPIO43);
35103
common_hal_never_reset_pin(&pin_GPIO44);
36104
#endif
105+
display_init();
37106
}
38107

39108
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.

ports/espressif/boards/espressif_esp32s3_devkitc_1_n8r8_hacktablet/pins.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "py/objtuple.h"
22
#include "shared-bindings/board/__init__.h"
3+
#include "shared-module/displayio/__init__.h"
34

45
STATIC const mp_rom_obj_tuple_t tft_r_pins = {
56
{&mp_type_tuple},
@@ -120,5 +121,6 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
120121
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
121122
{ MP_ROM_QSTR(MP_QSTR_STEMMA_I2C), MP_ROM_PTR(&board_i2c_obj) },
122123
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
124+
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)},
123125
};
124126
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

0 commit comments

Comments
 (0)