Skip to content

Commit 9badf45

Browse files
authored
Merge pull request #10088 from SeanTheITGuy/lolin_s3_mini_pro
Lolin s3 mini pro
2 parents 525b50b + 00c9c1b commit 9badf45

File tree

5 files changed

+212
-0
lines changed

5 files changed

+212
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
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/busio/SPI.h"
10+
#include "shared-bindings/fourwire/FourWire.h"
11+
#include "shared-bindings/microcontroller/Pin.h"
12+
#include "shared-module/displayio/__init__.h"
13+
#include "shared-module/displayio/mipi_constants.h"
14+
#include "shared-bindings/board/__init__.h"
15+
16+
17+
#define DELAY 0x80
18+
19+
// display init sequence according to ST7789
20+
uint8_t display_init_sequence[] = {
21+
0x01, 0 | DELAY, 0x96, // _SWRESET and Delay 150ms
22+
0x11, 0 | DELAY, 0xff, // _SLPOUT and Delay 500ms
23+
0x3A, 1 | DELAY, 0x55, 0x0a, // _COLMOD and Delay 10ms
24+
0x36, 0x01, 0x08, // _MADCTL
25+
0x21, 0x80, 0x0A, // _INVON Hack and Delay 10ms
26+
0x13, 0x80, 0x0A, // _NORON and Delay 10ms
27+
0x29, 0 | DELAY, 0xff // _DISPON and Delay 500ms
28+
};
29+
30+
31+
void board_init(void) {
32+
fourwire_fourwire_obj_t *bus = &allocate_display_bus()->fourwire_bus;
33+
// busio_spi_obj_t *spi = common_hal_board_create_spi(0);
34+
busio_spi_obj_t *spi = &bus->inline_bus;
35+
common_hal_busio_spi_construct(spi, &pin_GPIO40, &pin_GPIO38, NULL, false);
36+
common_hal_busio_spi_never_reset(spi);
37+
bus->base.type = &fourwire_fourwire_type;
38+
39+
common_hal_fourwire_fourwire_construct(
40+
bus,
41+
spi,
42+
&pin_GPIO36, // DC
43+
&pin_GPIO35, // CS
44+
&pin_GPIO34, // RST
45+
40000000, // baudrate
46+
0, // polarity
47+
0 // phase
48+
);
49+
busdisplay_busdisplay_obj_t *display = &allocate_display()->display;
50+
display->base.type = &busdisplay_busdisplay_type;
51+
52+
common_hal_busdisplay_busdisplay_construct(
53+
display,
54+
bus,
55+
128, // width (after rotation)
56+
128, // height (after rotation)
57+
2, // column start
58+
1, // row start
59+
0, // rotation
60+
16, // color depth
61+
false, // grayscale
62+
false, // pixels in a byte share a row. Only valid for depths < 8
63+
1, // bytes per cell. Only valid for depths < 8
64+
false, // reverse_pixels_in_byte. Only valid for depths < 8
65+
true, // reverse_pixels_in_word
66+
MIPI_COMMAND_SET_COLUMN_ADDRESS, // set column command
67+
MIPI_COMMAND_SET_PAGE_ADDRESS, // set row command
68+
MIPI_COMMAND_WRITE_MEMORY_START, // write memory command
69+
display_init_sequence,
70+
sizeof(display_init_sequence),
71+
&pin_GPIO33, // backlight pin
72+
NO_BRIGHTNESS_COMMAND,
73+
1.0f, // brightness
74+
false, // single_byte_bounds
75+
false, // data_as_commands
76+
true, // auto_refresh
77+
60, // native_frames_per_second
78+
true, // backlight_on_high
79+
false, // SH1107_addressing
80+
200 // backlight pwm frequency
81+
);
82+
}
83+
84+
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#pragma once
8+
9+
// Micropython setup
10+
11+
#define MICROPY_HW_BOARD_NAME "LOLIN S3 MINI PRO 4MB Flash 2MB PSRAM"
12+
#define MICROPY_HW_MCU_NAME "ESP32S3"
13+
14+
#define MICROPY_HW_NEOPIXEL (&pin_GPIO8)
15+
16+
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO11)
17+
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO12)
18+
19+
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO38)
20+
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO39)
21+
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO40)
22+
23+
#define DEFAULT_UART_BUS_RX (&pin_GPIO44)
24+
#define DEFAULT_UART_BUS_TX (&pin_GPIO43)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
USB_VID = 0x303a
2+
USB_PID = 0x8217
3+
USB_PRODUCT = "LOLIN S3 MINI PRO 4MB Flash 2MB PSRAM"
4+
USB_MANUFACTURER = "WEMOS"
5+
6+
IDF_TARGET = esp32s3
7+
8+
CIRCUITPY_ESP_FLASH_MODE = qio
9+
CIRCUITPY_ESP_FLASH_FREQ = 80m
10+
CIRCUITPY_ESP_FLASH_SIZE = 4MB
11+
12+
CIRCUITPY_ESP_PSRAM_SIZE = 2MB
13+
CIRCUITPY_ESP_PSRAM_MODE = qio
14+
CIRCUITPY_ESP_PSRAM_FREQ = 80m
15+
16+
CIRCUITPY_ESPCAMERA = 0
17+
CIRCUITPY_BITMAPFILTER = 0
18+
CIRCUITPY_CODEOP = 0
19+
CIRCUITPY_PARALLELDISPLAYBUS = 0
20+
21+
# Include these Python libraries in firmware.
22+
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2023 David Sullivan
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#include "shared-bindings/board/__init__.h"
8+
#include "shared-module/displayio/__init__.h"
9+
10+
static const mp_rom_map_elem_t board_module_globals_table[] = {
11+
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
12+
13+
// User buttons
14+
{ MP_ROM_QSTR(MP_QSTR_BOOT), MP_ROM_PTR(&pin_GPIO0) },
15+
{ MP_ROM_QSTR(MP_QSTR_BUTTON0), MP_ROM_PTR(&pin_GPIO0) },
16+
{ MP_ROM_QSTR(MP_QSTR_BUTTON1), MP_ROM_PTR(&pin_GPIO47) },
17+
{ MP_ROM_QSTR(MP_QSTR_BUTTON2), MP_ROM_PTR(&pin_GPIO48) },
18+
19+
// LEDs
20+
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL_ENABLE), MP_ROM_PTR(&pin_GPIO7) },
21+
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO8) },
22+
{ MP_ROM_QSTR(MP_QSTR_IR_LED), MP_ROM_PTR(&pin_GPIO9) },
23+
24+
// I2C
25+
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO11) },
26+
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO12) },
27+
28+
// IMU QMI8658C
29+
{ MP_ROM_QSTR(MP_QSTR_IMU_INT1), MP_ROM_PTR(&pin_GPIO18) },
30+
{ MP_ROM_QSTR(MP_QSTR_IMU_INT2), MP_ROM_PTR(&pin_GPIO21) },
31+
32+
// TFT Display
33+
{ MP_ROM_QSTR(MP_QSTR_TFT_DC), MP_ROM_PTR(&pin_GPIO36) },
34+
{ MP_ROM_QSTR(MP_QSTR_TFT_CS), MP_ROM_PTR(&pin_GPIO35) },
35+
{ MP_ROM_QSTR(MP_QSTR_TFT_RES), MP_ROM_PTR(&pin_GPIO34) },
36+
{ MP_ROM_QSTR(MP_QSTR_TFT_BACKLIGHT), MP_ROM_PTR(&pin_GPIO33) },
37+
38+
// SPI
39+
{ MP_ROM_QSTR(MP_QSTR_CLK), MP_ROM_PTR(&pin_GPIO40) },
40+
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO39) },
41+
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO38) },
42+
43+
// User accessible GPIO
44+
{ MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) },
45+
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) },
46+
{ MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
47+
{ MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) },
48+
{ MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) },
49+
{ MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) },
50+
{ MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) },
51+
{ MP_ROM_QSTR(MP_QSTR_IO40), MP_ROM_PTR(&pin_GPIO40) },
52+
{ MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) },
53+
{ MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) },
54+
{ MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) },
55+
{ MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) },
56+
57+
// UART
58+
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) },
59+
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) },
60+
61+
// Objects
62+
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
63+
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
64+
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
65+
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}
66+
67+
};
68+
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#
2+
# Espressif IoT Development Framework Configuration
3+
#
4+
#
5+
# Component config
6+
#
7+
#
8+
# LWIP
9+
#
10+
# end of LWIP
11+
12+
# end of Component config
13+
14+
# end of Espressif IoT Development Framework Configuration

0 commit comments

Comments
 (0)