Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

boards/stm32f723e-disco: enable ST7789 display #19939

Merged
merged 3 commits into from
Sep 22, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
boards/stm32f723e-disco: enable ST7789 display
fixup! boards/stm32f723e-disco: enable ST7789 display
  • Loading branch information
gschorcht committed Sep 22, 2023
commit 95d1e47b9a5c7c135c75e400e2610fc957721e4b
3 changes: 3 additions & 0 deletions boards/stm32f723e-disco/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ config BOARD_STM32F723E_DISCO

select HAVE_SAUL_GPIO
select HAVE_FT5X06
select HAVE_ST7789
select HAVE_LCD_PARALLEL_16BIT if MODULE_ST7789

select MODULE_PERIPH_UART_HW_FC if HAS_PERIPH_UART_HW_FC && MODULE_PERIPH_UART
# Workaround due to stdout only working with stdin enabled
select MODULE_STDIN if TEST_KCONFIG
Expand Down
8 changes: 8 additions & 0 deletions boards/stm32f723e-disco/Makefile.dep
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,13 @@ ifneq (,$(filter periph_spi,$(USEMODULE)))
DISABLE_MODULE += periph_init_led0
endif

ifneq (,$(filter disp_dev,$(USEMODULE)))
USEMODULE += st7789
endif

ifneq (,$(filter st7789,$(USEMODULE)))
USEMODULE += lcd_parallel_16bit
endif

# TODO: remove the stdin dependency
USEMODULE += stdin
27 changes: 27 additions & 0 deletions boards/stm32f723e-disco/board.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* Copyright (C) 2023 Gunar Schorcht
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/

/**
* @ingroup boards_stm32f723e-disco
* @{
*
* @file
* @brief Board specific initializations for the STM32F723E-DISCO board
*
* @author Gunar Schorcht <gunar@schorcht.net>
*/

#include "board.h"

void board_init(void)
{
#if MODULE_ST77XX
/* initialize the pin for the HIGH active LCD_BL signal */
gpio_init(BACKLIGHT_PIN, GPIO_OUT);
#endif
}
86 changes: 86 additions & 0 deletions boards/stm32f723e-disco/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,92 @@
extern "C" {
#endif

/**
* @name LCD Backlight control defines
* @{
*/
#define BACKLIGHT_PIN GPIO_PIN(PORT_H, 11) /**< Backlight pin (HIGH active LD_BL) */
#define BACKLIGHT_MASK (1 << 11) /**< Backlight pin mask */

/** Set the backlight pin */
#define BACKLIGHT_ON (GPIOH->BSRR = BACKLIGHT_MASK)
/** Clear the backlight pin */
#define BACKLIGHT_OFF (GPIOH->BSRR = (BACKLIGHT_MASK << 16))
/** Toggle the backlight pin */
#define BACKLIGHT_TOGGLE (GPIOH->ODR ^= BACKLIGHT_MASK)
/** @} */

/**
* @name LCD display definitions
*
* The STM32F723G-DISCO board has a 240 x 240 pixel TFT color LCD display with
* ST7789H2 driver IC using the MCU 8080 16-bit parallel interface (default with
* SB15=ON and SB16=OFF). SB15 and SB16 control the ST7789H2 `IM0` signal.
* With SB15=OFF and SB16=ON, the MCU 8080 8-bit parallel interface is enabled.
*
* For the `LCD_*` pins, please refer to the
* [schematic](https://www.st.com/resource/en/schematic_pack/mb1260-f723e-d03_schematic.pdf).
*
* @{
*/
#define LCD_SCREEN_WIDTH 240 /**< LCD width */
#define LCD_SCREEN_HEIGHT 240 /**< LCD height */

#define LCD_D0 GPIO_PIN(PORT_D, 14) /**< LCD_D0 pin */
#define LCD_D1 GPIO_PIN(PORT_D, 15) /**< LCD_D1 pin */
#define LCD_D2 GPIO_PIN(PORT_D, 0) /**< LCD_D2 pin */
#define LCD_D3 GPIO_PIN(PORT_D, 1) /**< LCD_D3 pin */
#define LCD_D4 GPIO_PIN(PORT_E, 7) /**< LCD_D4 pin */
#define LCD_D5 GPIO_PIN(PORT_E, 8) /**< LCD_D5 pin */
#define LCD_D6 GPIO_PIN(PORT_E, 9) /**< LCD_D6 pin */
#define LCD_D7 GPIO_PIN(PORT_E, 10) /**< LCD_D7 pin */
#define LCD_D8 GPIO_PIN(PORT_E, 11) /**< LCD_D8 pin */
#define LCD_D9 GPIO_PIN(PORT_E, 12) /**< LCD_D9 pin */
#define LCD_D10 GPIO_PIN(PORT_E, 13) /**< LCD_D10 pin */
#define LCD_D11 GPIO_PIN(PORT_E, 14) /**< LCD_D11 pin */
#define LCD_D12 GPIO_PIN(PORT_E, 15) /**< LCD_D12 pin */
#define LCD_D13 GPIO_PIN(PORT_D, 8) /**< LCD_D13 pin */
#define LCD_D14 GPIO_PIN(PORT_D, 9) /**< LCD_D14 pin */
#define LCD_D15 GPIO_PIN(PORT_D, 10) /**< LCD_D15 pin */
#define LCD_TE GPIO_PIN(PORT_C, 8) /**< LCD_TE pin */
#define LCD_WE GPIO_PIN(PORT_D, 5) /**< LCD_WE pin */
#define LCD_OE GPIO_PIN(PORT_D, 4) /**< LCD_OE pin */
#define LCD_RS GPIO_PIN(PORT_F, 0) /**< LCD_RS pin */
#define LCD_NE GPIO_PIN(PORT_G, 9) /**< LCD_NE pin */
#define LCD_RST GPIO_PIN(PORT_H, 7) /**< LCD_RST pin */
#define LCD_BACKLIGHT BACKLIGHT_PIN /**< LCD_BL pin */

#define ST77XX_PARAM_CNTRL ST77XX_CNTRL_ST7789 /**< ST77xx controller variant */
#define ST77XX_PARAM_SPI SPI_UNDEF /**< parallel interface is used */
#define ST77XX_PARAM_D0 LCD_D0 /**< ST77xx D0 signal */
#define ST77XX_PARAM_D1 LCD_D1 /**< ST77xx D1 signal */
#define ST77XX_PARAM_D2 LCD_D2 /**< ST77xx D2 signal */
#define ST77XX_PARAM_D3 LCD_D3 /**< ST77xx D3 signal */
#define ST77XX_PARAM_D4 LCD_D4 /**< ST77xx D4 signal */
#define ST77XX_PARAM_D5 LCD_D5 /**< ST77xx D5 signal */
#define ST77XX_PARAM_D6 LCD_D6 /**< ST77xx D6 signal */
#define ST77XX_PARAM_D7 LCD_D7 /**< ST77xx D7 signal */
#define ST77XX_PARAM_D8 LCD_D8 /**< ST77xx D8 signal */
#define ST77XX_PARAM_D9 LCD_D9 /**< ST77xx D9 signal */
#define ST77XX_PARAM_D10 LCD_D10 /**< ST77xx D10 signal */
#define ST77XX_PARAM_D11 LCD_D11 /**< ST77xx D11 signal */
#define ST77XX_PARAM_D12 LCD_D12 /**< ST77xx D12 signal */
#define ST77XX_PARAM_D13 LCD_D13 /**< ST77xx D13 signal */
#define ST77XX_PARAM_D14 LCD_D14 /**< ST77xx D14 signal */
#define ST77XX_PARAM_D15 LCD_D15 /**< ST77xx D15 signal */
#define ST77XX_PARAM_WRX LCD_WE /**< ST77xx WR signal */
#define ST77XX_PARAM_RDX LCD_OE /**< ST77xx RD signal */
#define ST77XX_PARAM_DCX LCD_RS /**< ST77xx RS signal */
#define ST77XX_PARAM_RST LCD_RST /**< ST77xx RST signal */
#define ST77XX_PARAM_CS LCD_NE /**< ST77xx CS signal */
#define ST77XX_PARAM_RGB 1 /**< ST77xx RGB mode */
#define ST77XX_PARAM_INVERTED 1 /**< ST77xx inverted colors */
#define ST77XX_PARAM_ROTATION ST77XX_ROTATION_90 /**< ST77xx rotation */
#define ST77XX_PARAM_OFFSET_X 80 /**< ST77xx offset because of rotation */
#define ST77XX_PARAM_NUM_LINES LCD_SCREEN_HEIGHT /**< ST77xx number of lines */
#define ST77XX_PARAM_RGB_CHANNELS LCD_SCREEN_WIDTH /**< ST77xx number of channels */
/** @} */

/**
* @name Macros for controlling the on-board LEDs.
* @{
Expand Down