summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucian Copeland <hierophect@gmail.com>2020-01-28 16:00:34 -0500
committerLucian Copeland <hierophect@gmail.com>2020-01-28 16:00:34 -0500
commitab9483b7fb50db46d9cb6abe54641787f5acd7c9 (patch)
tree9a9b57a21dd421af797704935361e85a60ab0729
parentb5b94b72c1cef10de16d4c30761791238ce204da (diff)
Add internal display definitions, fails at startup
-rw-r--r--ports/stm32f4/boards/meowbit_v121/board.c82
-rw-r--r--ports/stm32f4/boards/meowbit_v121/mpconfigboard.h2
-rw-r--r--ports/stm32f4/boards/meowbit_v121/mpconfigboard.mk6
-rw-r--r--ports/stm32f4/boards/meowbit_v121/pins.c4
4 files changed, 90 insertions, 4 deletions
diff --git a/ports/stm32f4/boards/meowbit_v121/board.c b/ports/stm32f4/boards/meowbit_v121/board.c
index 82b0c506e..2fa372980 100644
--- a/ports/stm32f4/boards/meowbit_v121/board.c
+++ b/ports/stm32f4/boards/meowbit_v121/board.c
@@ -27,7 +27,89 @@
#include "boards/board.h"
#include "mpconfigboard.h"
+#include "shared-bindings/board/__init__.h"
+#include "shared-bindings/displayio/FourWire.h"
+#include "shared-module/displayio/__init__.h"
+#include "shared-module/displayio/mipi_constants.h"
+#include "shared-bindings/busio/SPI.h"
+
+#include "supervisor/spi_flash_api.h"
+
+#include "tick.h"
+
+displayio_fourwire_obj_t board_display_obj;
+
+#define DELAY 0x80
+
+uint8_t display_init_sequence[] = {
+ 0x01, 0 | DELAY, 150, // SWRESET
+ 0x11, 0 | DELAY, 255, // SLPOUT
+ 0xb1, 3, 0x01, 0x2C, 0x2D, // _FRMCTR1
+ 0xb2, 3, 0x01, 0x2C, 0x2D, //
+ 0xb3, 6, 0x01, 0x2C, 0x2D, 0x01, 0x2C, 0x2D,
+ 0xb4, 1, 0x07, // _INVCTR line inversion
+ 0xc0, 3, 0xa2, 0x02, 0x84, // _PWCTR1 GVDD = 4.7V, 1.0uA
+ 0xc1, 1, 0xc5, // _PWCTR2 VGH=14.7V, VGL=-7.35V
+ 0xc2, 2, 0x0a, 0x00, // _PWCTR3 Opamp current small, Boost frequency
+ 0xc3, 2, 0x8a, 0x2a,
+ 0xc4, 2, 0x8a, 0xee,
+ 0xc5, 1, 0x0e, // _VMCTR1 VCOMH = 4V, VOML = -1.1V
+ 0x20, 0, // _INVOFF //MISMATCh 0x2a vs 0x20
+ 0x36, 1, 0x18, // _MADCTL bottom to top refresh
+ // 1 clk cycle nonoverlap, 2 cycle gate rise, 3 sycle osc equalie,
+ // fix on VTL
+ 0x3a, 1, 0x05, // COLMOD - 16bit color
+ 0xe0, 0x10, 0x02, 0x1c, 0x07, 0x12,
+ 0x37, 0x32, 0x29, 0x2d,
+ 0x29, 0x25, 0x2B, 0x39,
+ 0x00, 0x01, 0x03, 0x10, // _GMCTRP1 Gamma
+ 0xe1, 0x10, 0x03, 0x1d, 0x07, 0x06,
+ 0x2E, 0x2C, 0x29, 0x2D,
+ 0x2E, 0x2E, 0x37, 0x3F,
+ 0x00, 0x00, 0x02, 0x10, // _GMCTRN1
+ 0x13, 0 | DELAY, 10, // _NORON
+ 0x29, 0 | DELAY, 100, // _DISPON
+};
+
void board_init(void) {
+ displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
+ bus->base.type = &displayio_fourwire_type;
+ busio_spi_obj_t *internal_spi = &spi;
+ common_hal_displayio_fourwire_construct(bus,
+ internal_spi,
+ &pin_PA08, // Command or data
+ &pin_PB12, // Chip select
+ &pin_PB10, // Reset
+ 24000000);
+
+ displayio_display_obj_t* display = &displays[0].display;
+ display->base.type = &displayio_display_type;
+ common_hal_displayio_display_construct(display,
+ bus,
+ 160, // Width
+ 128, // Height
+ 0, // column start
+ 0, // row start
+ 90, // rotation
+ 16, // Color depth
+ false, // Grayscale
+ false, // Pixels in a byte share a row. Only used for depth < 8
+ 1, // bytes per cell. Only valid for depths < 8
+ false, // reverse_pixels_in_byte. Only valid for depths < 8
+ MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
+ MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
+ MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
+ 0x37, // set vertical scroll command
+ display_init_sequence,
+ sizeof(display_init_sequence),
+ &pin_PB03,
+ NO_BRIGHTNESS_COMMAND,
+ 1.0f, // brightness (ignored)
+ true, // auto_brightness
+ false, // single_byte_bounds
+ false, // data_as_commands
+ true, // auto_refresh
+ 60); // native_frames_per_second
}
bool board_requests_safe_mode(void) {
diff --git a/ports/stm32f4/boards/meowbit_v121/mpconfigboard.h b/ports/stm32f4/boards/meowbit_v121/mpconfigboard.h
index c849e03b6..b80715383 100644
--- a/ports/stm32f4/boards/meowbit_v121/mpconfigboard.h
+++ b/ports/stm32f4/boards/meowbit_v121/mpconfigboard.h
@@ -37,7 +37,7 @@
#define BOARD_OSC_DIV 12
#define BOARD_NO_VBUS_SENSE
-#define BOARD_VTOR_DEFER //Leave VTOR relocation to bootloader
+// #define BOARD_VTOR_DEFER //Leave VTOR relocation to bootloader
#define BOARD_USE_INTERNAL_SPI
// On-board flash
diff --git a/ports/stm32f4/boards/meowbit_v121/mpconfigboard.mk b/ports/stm32f4/boards/meowbit_v121/mpconfigboard.mk
index 340fd9d3b..c813b4120 100644
--- a/ports/stm32f4/boards/meowbit_v121/mpconfigboard.mk
+++ b/ports/stm32f4/boards/meowbit_v121/mpconfigboard.mk
@@ -9,7 +9,7 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
EXTERNAL_FLASH_DEVICES = W25Q16JV_IQ
LONGINT_IMPL = MPZ
-BOOTLOADER_OFFSET = 0x8010000
+# BOOTLOADER_OFFSET = 0x8010000
# INTERNAL_FLASH_FILESYSTEM = 1
# LONGINT_IMPL = NONE
@@ -19,5 +19,5 @@ MCU_VARIANT = stm32f4
MCU_SUB_VARIANT = stm32f401xe
MCU_PACKAGE = 64
CMSIS_MCU = STM32F401xE
-LD_FILE = boards/STM32F401_boot.ld
-# LD_FILE = boards/STM32F401_fs.ld #use for internal flash \ No newline at end of file
+# LD_FILE = boards/STM32F401_boot.ld
+LD_FILE = boards/STM32F401_fs.ld #use for internal flash \ No newline at end of file
diff --git a/ports/stm32f4/boards/meowbit_v121/pins.c b/ports/stm32f4/boards/meowbit_v121/pins.c
index 0cdbefd59..def551c3b 100644
--- a/ports/stm32f4/boards/meowbit_v121/pins.c
+++ b/ports/stm32f4/boards/meowbit_v121/pins.c
@@ -1,6 +1,8 @@
#include "shared-bindings/board/__init__.h"
#include "supervisor/spi_flash_api.h"
+#include "shared-module/displayio/__init__.h"
+
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_LED_RED), MP_ROM_PTR(&pin_PB04) },
{ MP_ROM_QSTR(MP_QSTR_LED_GREEN), MP_ROM_PTR(&pin_PB05) },
@@ -61,5 +63,7 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_P3), MP_ROM_PTR(&pin_PB00) },
{ MP_ROM_QSTR(MP_QSTR_INTERNAL_SPI), MP_ROM_PTR(&spi) },
+
+ { MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)},
};
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);