This is an automated email from the ASF dual-hosted git repository.
acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new a5754a2f03 arm/stm32f401rc-rs485: Add support to LCD 16x2 with I2C
Backpack
a5754a2f03 is described below
commit a5754a2f03bbdba8084f60dfcf235cb823c56d05
Author: Rodrigo Sim <[email protected]>
AuthorDate: Sat Sep 21 11:25:27 2024 -0300
arm/stm32f401rc-rs485: Add support to LCD 16x2 with I2C Backpack
Signed-off-by: Rodrigo Sim [email protected]
---
.../arm/stm32f4/boards/stm32f401rc-rs485/index.rst | 43 +++++++++++++-
.../stm32f401rc-rs485/configs/lcd1602/defconfig | 68 ++++++++++++++++++++++
.../stm32/stm32f401rc-rs485/src/stm32_bringup.c | 15 +++++
3 files changed, 125 insertions(+), 1 deletion(-)
diff --git
a/Documentation/platforms/arm/stm32f4/boards/stm32f401rc-rs485/index.rst
b/Documentation/platforms/arm/stm32f4/boards/stm32f401rc-rs485/index.rst
index 20d067d01b..95c1087812 100644
--- a/Documentation/platforms/arm/stm32f4/boards/stm32f401rc-rs485/index.rst
+++ b/Documentation/platforms/arm/stm32f4/boards/stm32f401rc-rs485/index.rst
@@ -699,6 +699,13 @@ Configures the NuttShell (nsh) over USB Serial (check
usbserial configuration) a
BMP280 has an I2C address that can be configure by SDO. Connecting SDO to GND
results in slave
address 0x76, connection it to VDD results in slave address 0x77. This can be
configured by enabling BMP280_I2C_ADDR_76 or BMP280_I2C_ADDR_77. This
configuration uses I2C1 and slave address 0x77.
+======= =====
+SENSOR PINS
+======= =====
+SDA PA7
+SCK PB8
+======= =====
+
NSH commands::
NuttShell (NSH) NuttX-12.6.0-RC1
@@ -709,4 +716,38 @@ NSH commands::
Absolute pressure [hPa] = 932.650024
Temperature [C] = 24.490000
-There is a known issue where every time the sensor is initialized, the first
measurement is wrong, please check https://github.com/apache/nuttx/issues/12421
for the latest updates on this issue.
\ No newline at end of file
+There is a known issue where every time the sensor is initialized, the first
measurement is wrong, please check https://github.com/apache/nuttx/issues/12421
for the latest updates on this issue.
+
+lcd1602
+-------
+
+This configuration sets up the NuttShell (NSH) interface over USB Serial
(refer to the usbserial
+configuration for details). It also enables I2C1 and the driver for an
alphanumeric/segment LCD.
+Specifically, the setup supports a 16x2 LCD screen based on the HD44780
controller, which is
+interfaced using an I2C adapter known as the LCD Backpack, utilizing the
PCF8574 chip.
+
+======= =====
+LCD PINS
+======= =====
+SDA PA7
+SCK PB8
+======= =====
+
+NSH commands::
+
+ nsh> slcd "Hello NuttX"
+ Opening /dev/slcd0 for read/write access
+ Attributes:
+ rows: 2 columns: 16 nbars: 0
+ max contrast: 0 max brightness: 1
+ Clear screen
+ WRITING:
+ 0000: 1b5b46
.[F
+ Set brightness to 1
+ Print [Hello NuttX]
+ WRITING:
+ 0000: 1b5b471b5b30304c1b5b4548656c6c6f 204e75747458
.[G.[00L.[EHello NuttX
+ Test complete
+ nsh>
+
+
diff --git a/boards/arm/stm32/stm32f401rc-rs485/configs/lcd1602/defconfig
b/boards/arm/stm32/stm32f401rc-rs485/configs/lcd1602/defconfig
new file mode 100644
index 0000000000..a2ecac7598
--- /dev/null
+++ b/boards/arm/stm32/stm32f401rc-rs485/configs/lcd1602/defconfig
@@ -0,0 +1,68 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed
.config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that
includes your
+# modifications.
+#
+# CONFIG_ARCH_FPU is not set
+# CONFIG_NSH_ARGCAT is not set
+# CONFIG_NSH_CMDOPT_HEXDUMP is not set
+# CONFIG_NSH_DISABLE_IFCONFIG is not set
+# CONFIG_NSH_DISABLE_PS is not set
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="stm32f401rc-rs485"
+CONFIG_ARCH_BOARD_COMMON=y
+CONFIG_ARCH_BOARD_STM32F401RC_RS485=y
+CONFIG_ARCH_BUTTONS=y
+CONFIG_ARCH_CHIP="stm32"
+CONFIG_ARCH_CHIP_STM32=y
+CONFIG_ARCH_CHIP_STM32F401RC=y
+CONFIG_ARCH_INTERRUPTSTACK=2048
+CONFIG_ARCH_IRQBUTTONS=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_BOARDCTL_USBDEVCTRL=y
+CONFIG_BOARD_LOOPSPERMSEC=8499
+CONFIG_BUILTIN=y
+CONFIG_CDCACM=y
+CONFIG_CDCACM_CONSOLE=y
+CONFIG_EXAMPLES_BUTTONS=y
+CONFIG_EXAMPLES_BUTTONS_NAME0="SW3"
+CONFIG_EXAMPLES_BUTTONS_NAME1="SW4"
+CONFIG_EXAMPLES_BUTTONS_NAME2="SW5"
+CONFIG_EXAMPLES_BUTTONS_NAMES=y
+CONFIG_EXAMPLES_BUTTONS_QTD=3
+CONFIG_EXAMPLES_SLCD=y
+CONFIG_HAVE_CXX=y
+CONFIG_HAVE_CXXINITIALIZE=y
+CONFIG_I2C=y
+CONFIG_INIT_ENTRYPOINT="nsh_main"
+CONFIG_INPUT=y
+CONFIG_INPUT_BUTTONS=y
+CONFIG_INPUT_BUTTONS_LOWER=y
+CONFIG_INTELHEX_BINARY=y
+CONFIG_LCD_BACKPACK=y
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_PREALLOC_TIMERS=4
+CONFIG_RAM_SIZE=98304
+CONFIG_RAM_START=0x20000000
+CONFIG_RAW_BINARY=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_WAITPID=y
+CONFIG_SLCD=y
+CONFIG_SPI=y
+CONFIG_START_DAY=5
+CONFIG_START_MONTH=5
+CONFIG_START_YEAR=2014
+CONFIG_STM32_I2C1=y
+CONFIG_STM32_JTAG_SW_ENABLE=y
+CONFIG_STM32_OTGFS=y
+CONFIG_STM32_PWR=y
+CONFIG_STM32_USART6=y
+CONFIG_SYSTEM_NSH=y
+CONFIG_TASK_NAME_SIZE=0
+CONFIG_USBDEV=y
diff --git a/boards/arm/stm32/stm32f401rc-rs485/src/stm32_bringup.c
b/boards/arm/stm32/stm32f401rc-rs485/src/stm32_bringup.c
index b513580b4f..fb03c70efa 100644
--- a/boards/arm/stm32/stm32f401rc-rs485/src/stm32_bringup.c
+++ b/boards/arm/stm32/stm32f401rc-rs485/src/stm32_bringup.c
@@ -79,6 +79,10 @@
#include "stm32_bmp280.h"
#endif
+#ifdef CONFIG_LCD_BACKPACK
+#include "stm32_lcd_backpack.h"
+#endif
+
/****************************************************************************
* Public Functions
****************************************************************************/
@@ -313,5 +317,16 @@ int stm32_bringup(void)
}
#endif
+#ifdef CONFIG_LCD_BACKPACK
+ /* slcd:0, i2c:1, rows=2, cols=16 */
+
+ ret = board_lcd_backpack_init(0, 1, 2, 16);
+ if (ret < 0)
+ {
+ syslog(LOG_ERR, "Failed to initialize PCF8574 LCD, error %d\n", ret);
+ return ret;
+ }
+#endif
+
return ret;
}