Skip to content

Commit 408e291

Browse files
committed
add Port sunton_esp32_8048S050
1 parent 726639b commit 408e291

File tree

5 files changed

+275
-0
lines changed

5 files changed

+275
-0
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#include "supervisor/board.h"
8+
#include "mpconfigboard.h"
9+
#include "shared-bindings/board/__init__.h"
10+
#include "shared-bindings/dotclockframebuffer/DotClockFramebuffer.h"
11+
#include "shared-bindings/dotclockframebuffer/__init__.h"
12+
#include "shared-bindings/framebufferio/FramebufferDisplay.h"
13+
#include "shared-bindings/microcontroller/Pin.h"
14+
#include "shared-module/displayio/__init__.h"
15+
16+
static const mcu_pin_obj_t *blue_pins[] = {
17+
&pin_GPIO8,
18+
&pin_GPIO3,
19+
&pin_GPIO46,
20+
&pin_GPIO9,
21+
&pin_GPIO1
22+
};
23+
static const mcu_pin_obj_t *green_pins[] = {
24+
&pin_GPIO5,
25+
&pin_GPIO6,
26+
&pin_GPIO7,
27+
&pin_GPIO15,
28+
&pin_GPIO16,
29+
&pin_GPIO4
30+
};
31+
static const mcu_pin_obj_t *red_pins[] = {
32+
&pin_GPIO45,
33+
&pin_GPIO48,
34+
&pin_GPIO47,
35+
&pin_GPIO21,
36+
&pin_GPIO14
37+
};
38+
39+
static void display_init(void) {
40+
41+
// Turn on backlight
42+
gpio_set_direction(2, GPIO_MODE_DEF_OUTPUT);
43+
gpio_set_level(2, true);
44+
common_hal_never_reset_pin(&pin_GPIO2);
45+
46+
dotclockframebuffer_framebuffer_obj_t *framebuffer = &allocate_display_bus_or_raise()->dotclock;
47+
framebuffer->base.type = &dotclockframebuffer_framebuffer_type;
48+
49+
common_hal_dotclockframebuffer_framebuffer_construct(
50+
framebuffer,
51+
&pin_GPIO40, // de
52+
&pin_GPIO41, // vsync
53+
&pin_GPIO39, // hsync
54+
&pin_GPIO42, // pclk
55+
red_pins, MP_ARRAY_SIZE(red_pins),
56+
green_pins, MP_ARRAY_SIZE(green_pins),
57+
blue_pins, MP_ARRAY_SIZE(blue_pins),
58+
12500000, // Frequency
59+
800, // width
60+
480, // height
61+
4, 8, 8, true, // horiz: pulse, back porch, front porch, idle low
62+
4, 8, 8, true, // vert: pulse, back porch, front porch, idle low
63+
false, // DE idle high
64+
false, // pclk active high
65+
false, // pclk idle high
66+
0 // overscan left
67+
);
68+
69+
framebufferio_framebufferdisplay_obj_t *display = &allocate_display_or_raise()->framebuffer_display;
70+
display->base.type = &framebufferio_framebufferdisplay_type;
71+
common_hal_framebufferio_framebufferdisplay_construct(
72+
display,
73+
framebuffer,
74+
0, // rotation
75+
true // auto-refresh
76+
);
77+
}
78+
79+
void board_init(void) {
80+
display_init();
81+
}
82+
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#pragma once
8+
9+
// Micropython setup
10+
11+
#define MICROPY_HW_BOARD_NAME "Sunton-ESP32-8048S050"
12+
#define MICROPY_HW_MCU_NAME "ESP32S3"
13+
14+
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO19)
15+
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO20)
16+
17+
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO11)
18+
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO12)
19+
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO13)
20+
21+
// UART pins attached to the USB-serial converter chip
22+
#define CIRCUITPY_CONSOLE_UART_TX (&pin_GPIO43)
23+
#define CIRCUITPY_CONSOLE_UART_RX (&pin_GPIO44)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
CIRCUITPY_CREATOR_ID = 0x19991000
2+
CIRCUITPY_CREATION_ID = 0x00AA0050
3+
4+
# This board doesn't have USB by default, it
5+
# instead uses a CH340C USB-to-Serial chip
6+
CIRCUITPY_USB_DEVICE = 0
7+
CIRCUITPY_ESP_USB_SERIAL_JTAG = 0
8+
9+
IDF_TARGET = esp32s3
10+
11+
CIRCUITPY_ESP_FLASH_MODE = qio
12+
CIRCUITPY_ESP_FLASH_FREQ = 80m
13+
CIRCUITPY_ESP_FLASH_SIZE = 16MB
14+
15+
CIRCUITPY_ESP_PSRAM_SIZE = 8MB
16+
CIRCUITPY_ESP_PSRAM_MODE = opi
17+
CIRCUITPY_ESP_PSRAM_FREQ = 80m
18+
19+
CIRCUITPY_DOTCLOCKFRAMEBUFFER = 1
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#include "py/objtuple.h"
8+
#include "shared-bindings/board/__init__.h"
9+
#include "shared-module/displayio/__init__.h"
10+
11+
static const mp_rom_obj_tuple_t tft_r_pins = {
12+
{&mp_type_tuple},
13+
5,
14+
{
15+
MP_ROM_PTR(&pin_GPIO45),
16+
MP_ROM_PTR(&pin_GPIO48),
17+
MP_ROM_PTR(&pin_GPIO47),
18+
MP_ROM_PTR(&pin_GPIO21),
19+
MP_ROM_PTR(&pin_GPIO14),
20+
}
21+
};
22+
23+
static const mp_rom_obj_tuple_t tft_g_pins = {
24+
{&mp_type_tuple},
25+
6,
26+
{
27+
MP_ROM_PTR(&pin_GPIO5),
28+
MP_ROM_PTR(&pin_GPIO6),
29+
MP_ROM_PTR(&pin_GPIO7),
30+
MP_ROM_PTR(&pin_GPIO15),
31+
MP_ROM_PTR(&pin_GPIO16),
32+
MP_ROM_PTR(&pin_GPIO4),
33+
}
34+
};
35+
36+
static const mp_rom_obj_tuple_t tft_b_pins = {
37+
{&mp_type_tuple},
38+
5,
39+
{
40+
MP_ROM_PTR(&pin_GPIO8),
41+
MP_ROM_PTR(&pin_GPIO3),
42+
MP_ROM_PTR(&pin_GPIO46),
43+
MP_ROM_PTR(&pin_GPIO9),
44+
MP_ROM_PTR(&pin_GPIO1),
45+
}
46+
};
47+
48+
static const mp_rom_map_elem_t tft_pins_table[] = {
49+
{ MP_ROM_QSTR(MP_QSTR_de), MP_ROM_PTR(&pin_GPIO40) },
50+
{ MP_ROM_QSTR(MP_QSTR_vsync), MP_ROM_PTR(&pin_GPIO41) },
51+
{ MP_ROM_QSTR(MP_QSTR_hsync), MP_ROM_PTR(&pin_GPIO39) },
52+
{ MP_ROM_QSTR(MP_QSTR_dclk), MP_ROM_PTR(&pin_GPIO42) },
53+
{ MP_ROM_QSTR(MP_QSTR_red), MP_ROM_PTR(&tft_r_pins) },
54+
{ MP_ROM_QSTR(MP_QSTR_green), MP_ROM_PTR(&tft_g_pins) },
55+
{ MP_ROM_QSTR(MP_QSTR_blue), MP_ROM_PTR(&tft_b_pins) },
56+
};
57+
MP_DEFINE_CONST_DICT(tft_pins_dict, tft_pins_table);
58+
59+
static const mp_rom_map_elem_t timings_table[] = {
60+
{ MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_INT(12500000) },
61+
{ MP_ROM_QSTR(MP_QSTR_width), MP_ROM_INT(800) },
62+
{ MP_ROM_QSTR(MP_QSTR_height), MP_ROM_INT(480) },
63+
{ MP_ROM_QSTR(MP_QSTR_hsync_pulse_width), MP_ROM_INT(4) },
64+
{ MP_ROM_QSTR(MP_QSTR_hsync_back_porch), MP_ROM_INT(8) },
65+
{ MP_ROM_QSTR(MP_QSTR_hsync_front_porch), MP_ROM_INT(8) },
66+
{ MP_ROM_QSTR(MP_QSTR_hsync_idle_low), MP_ROM_TRUE },
67+
{ MP_ROM_QSTR(MP_QSTR_vsync_pulse_width), MP_ROM_INT(4) },
68+
{ MP_ROM_QSTR(MP_QSTR_vsync_back_porch), MP_ROM_INT(8) },
69+
{ MP_ROM_QSTR(MP_QSTR_vsync_front_porch), MP_ROM_INT(8) },
70+
{ MP_ROM_QSTR(MP_QSTR_vsync_idle_low), MP_ROM_TRUE },
71+
{ MP_ROM_QSTR(MP_QSTR_de_idle_high), MP_ROM_FALSE },
72+
{ MP_ROM_QSTR(MP_QSTR_pclk_active_high), MP_ROM_FALSE },
73+
{ MP_ROM_QSTR(MP_QSTR_pclk_idle_high), MP_ROM_FALSE },
74+
75+
};
76+
MP_DEFINE_CONST_DICT(timings_dict, timings_table);
77+
78+
static const mp_rom_map_elem_t board_module_globals_table[] = {
79+
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
80+
81+
// Display constructs
82+
{ MP_ROM_QSTR(MP_QSTR_TFT_PINS), MP_ROM_PTR(&tft_pins_dict) },
83+
{ MP_ROM_QSTR(MP_QSTR_TFT_TIMINGS), MP_ROM_PTR(&timings_dict) },
84+
{ MP_ROM_QSTR(MP_QSTR_TFT_BACKLIGHT), MP_ROM_PTR(&pin_GPIO2) },
85+
86+
// User buttons
87+
{ MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) },
88+
{ MP_ROM_QSTR(MP_QSTR_BOOT0), MP_ROM_PTR(&pin_GPIO0) },
89+
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_GPIO0) },
90+
91+
// User accessible GPIO
92+
{ MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) }, // P2, External SPI plug
93+
{ MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) },
94+
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) },
95+
{ MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
96+
97+
{ MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) }, // P3 has 19&20 for I2C bus, plus 17&18
98+
{ MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) }, // P4 & P5 are both 17,18,3.3v,G
99+
{ MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) },
100+
101+
// UART pins
102+
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) },
103+
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) },
104+
105+
// I2C
106+
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO19) },
107+
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO20) },
108+
109+
// SPI
110+
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO11) },
111+
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO12) },
112+
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO13) },
113+
114+
// i2s amplifier
115+
{ MP_ROM_QSTR(MP_QSTR_I2S_BIT_CLOCK), MP_ROM_PTR(&pin_GPIO0) },
116+
{ MP_ROM_QSTR(MP_QSTR_I2S_WORD_SELECT), MP_ROM_PTR(&pin_GPIO18) },
117+
{ MP_ROM_QSTR(MP_QSTR_I2S_DATA), MP_ROM_PTR(&pin_GPIO17) },
118+
119+
// Touch (GT911 I2C, XPT2046 SPI)
120+
// There are two versions of this tablet, one with capacitive touch
121+
// one with resistive. They use their respective bus as defined,
122+
// with GPIO38 being reset on capacitive and cs on resistive.
123+
{ MP_ROM_QSTR(MP_QSTR_TOUCH_RESET), MP_ROM_PTR(&pin_GPIO38) },
124+
{ MP_ROM_QSTR(MP_QSTR_TOUCH_CS), MP_ROM_PTR(&pin_GPIO38) },
125+
{ MP_ROM_QSTR(MP_QSTR_TOUCH_INT), MP_ROM_PTR(&pin_GPIO18) },
126+
127+
// SD Slot (SPI)
128+
{ MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_GPIO10) },
129+
130+
// Objects
131+
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
132+
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
133+
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
134+
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)},
135+
};
136+
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#
2+
# Espressif IoT Development Framework Configuration
3+
#
4+
#
5+
# Component config
6+
#
7+
#
8+
# LWIP
9+
#
10+
CONFIG_LWIP_LOCAL_HOSTNAME="sunton-esp32-8048S050"
11+
# end of LWIP
12+
13+
# end of Component config
14+
15+
# end of Espressif IoT Development Framework Configuration

0 commit comments

Comments
 (0)