STM32L-Discovery LCD driver is code compele but untested
This commit is contained in:
parent
bc170f11b4
commit
a189ccebe5
@ -1,22 +1,22 @@
|
|||||||
README
|
README
|
||||||
======
|
======
|
||||||
|
|
||||||
This README discusses issues unique to NuttX configurations for the
|
This README discusses issues unique to NuttX configurations for the
|
||||||
STMicro STM32L-Discovery development board. The STM32L-Discovery board
|
STMicro STM32L-Discovery development board. The STM32L-Discovery board
|
||||||
is based on the STM32L152RBT6 MCU (128KB FLASH and 16KB of SRAM).
|
is based on the STM32L152RBT6 MCU (128KB FLASH and 16KB of SRAM).
|
||||||
|
|
||||||
The STM32L-Discovery and 32L152CDISCOVERY kits are functionally
|
The STM32L-Discovery and 32L152CDISCOVERY kits are functionally
|
||||||
equivalent. The difference is the internal Flash memory size (STM32L152RBT6
|
equivalent. The difference is the internal Flash memory size (STM32L152RBT6
|
||||||
with 128 Kbytes or STM32L152RCT6 with 256 Kbytes).
|
with 128 Kbytes or STM32L152RCT6 with 256 Kbytes).
|
||||||
|
|
||||||
Both boards feature:
|
Both boards feature:
|
||||||
|
|
||||||
- An ST-LINK/V2 embedded debug tool interface,
|
- An ST-LINK/V2 embedded debug tool interface,
|
||||||
- LCD (24 segments, 4 commons),
|
- LCD (24 segments, 4 commons),
|
||||||
- LEDs,
|
- LEDs,
|
||||||
- Pushbuttons,
|
- Pushbuttons,
|
||||||
- A linear touch sensor, and
|
- A linear touch sensor, and
|
||||||
- Four touchkeys.
|
- Four touchkeys.
|
||||||
|
|
||||||
Contents
|
Contents
|
||||||
========
|
========
|
||||||
@ -395,107 +395,114 @@ NXFLAT Toolchain
|
|||||||
LEDs
|
LEDs
|
||||||
====
|
====
|
||||||
|
|
||||||
The STM32L-Discovery board has four LEDs. Two of these are controlled by
|
The STM32L-Discovery board has four LEDs. Two of these are controlled by
|
||||||
logic on the board and are not available for software control:
|
logic on the board and are not available for software control:
|
||||||
|
|
||||||
LD1 COM: LD2 default status is red. LD2 turns to green to indicate that
|
LD1 COM: LD2 default status is red. LD2 turns to green to indicate
|
||||||
communications are in progress between the PC and the ST-LINK/V2.
|
that communications are in progress between the PC and the
|
||||||
LD2 PWR: Red LED indicates that the board is powered.
|
ST-LINK/V2.
|
||||||
|
LD2 PWR: Red LED indicates that the board is powered.
|
||||||
|
|
||||||
And two LEDs can be controlled by software:
|
And two LEDs can be controlled by software:
|
||||||
|
|
||||||
User LD3: Green LED is a user LED connected to the I/O PB7 of the STM32L152
|
User LD3: Green LED is a user LED connected to the I/O PB7 of the
|
||||||
MCU.
|
STM32L152 MCU.
|
||||||
User LD4: Blue LED is a user LED connected to the I/O PB6 of the STM32L152
|
User LD4: Blue LED is a user LED connected to the I/O PB6 of the
|
||||||
MCU.
|
STM32L152 MCU.
|
||||||
|
|
||||||
These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is
|
These LEDs are not used by the board port unless CONFIG_ARCH_LEDS is
|
||||||
defined. In that case, the usage by the board port is defined in
|
defined. In that case, the usage by the board port is defined in
|
||||||
include/board.h and src/up_leds.c. The LEDs are used to encode OS-related
|
include/board.h and src/up_leds.c. The LEDs are used to encode OS-related
|
||||||
events as follows:
|
events as follows:
|
||||||
|
|
||||||
SYMBOL Meaning LED state
|
SYMBOL Meaning LED state
|
||||||
LED3 LED4
|
LED3 LED4
|
||||||
------------------- ----------------------- -------- --------
|
------------------- ----------------------- -------- --------
|
||||||
LED_STARTED NuttX has been started OFF OFF
|
LED_STARTED NuttX has been started OFF OFF
|
||||||
LED_HEAPALLOCATE Heap has been allocated OFF OFF
|
LED_HEAPALLOCATE Heap has been allocated OFF OFF
|
||||||
LED_IRQSENABLED Interrupts enabled OFF OFF
|
LED_IRQSENABLED Interrupts enabled OFF OFF
|
||||||
LED_STACKCREATED Idle stack created ON OFF
|
LED_STACKCREATED Idle stack created ON OFF
|
||||||
LED_INIRQ In an interrupt No change
|
LED_INIRQ In an interrupt No change
|
||||||
LED_SIGNAL In a signal handler No change
|
LED_SIGNAL In a signal handler No change
|
||||||
LED_ASSERTION An assertion failed No change
|
LED_ASSERTION An assertion failed No change
|
||||||
LED_PANIC The system has crashed OFF Blinking
|
LED_PANIC The system has crashed OFF Blinking
|
||||||
LED_IDLE STM32 is is sleep mode Not used
|
LED_IDLE STM32 is is sleep mode Not used
|
||||||
|
|
||||||
Serial Console
|
Serial Console
|
||||||
==============
|
==============
|
||||||
|
|
||||||
The STM32L-Discovery has no on-board RS-232 driver. Further, there are no
|
The STM32L-Discovery has no on-board RS-232 driver. Further, there are no
|
||||||
USART pins that do not conflict with the on board resources, in particular,
|
USART pins that do not conflict with the on board resources, in particular,
|
||||||
the LCD: Most USART pins are available if the LCD is enabled; USART2 may be
|
the LCD: Most USART pins are available if the LCD is enabled; USART2 may
|
||||||
used if either the LCD or the on-board LEDs are disabled.
|
be used if either the LCD or the on-board LEDs are disabled.
|
||||||
|
|
||||||
PA9 USART1_TX LCD glass COM1 P2, pin 22
|
PA9 USART1_TX LCD glass COM1 P2, pin 22
|
||||||
PA10 USART1_RX LCD glass COM2 P2, pin 21
|
PA10 USART1_RX LCD glass COM2 P2, pin 21
|
||||||
PB6 USART1_TX LED Blue P2, pin 8
|
PB6 USART1_TX LED Blue P2, pin 8
|
||||||
PB7 USART1_RX LED Green P2, pin 7
|
PB7 USART1_RX LED Green P2, pin 7
|
||||||
|
|
||||||
PA2 USART2_TX LCD SEG1 P1, pin 17
|
PA2 USART2_TX LCD SEG1 P1, pin 17
|
||||||
PA3 USART2_RX LCD SEG2 P1, pin 18
|
PA3 USART2_RX LCD SEG2 P1, pin 18
|
||||||
|
|
||||||
PB10 USART3_TX LCD SEG6 P1, pin 22
|
PB10 USART3_TX LCD SEG6 P1, pin 22
|
||||||
PB11 USART3_RX LCD SEG7 P1, pin 23
|
PB11 USART3_RX LCD SEG7 P1, pin 23
|
||||||
PC10 USART3_TX LCD SEG22 P2, pin 15
|
PC10 USART3_TX LCD SEG22 P2, pin 15
|
||||||
PC11 USART3_RX LCD SEG23 P2, pin 14
|
PC11 USART3_RX LCD SEG23 P2, pin 14
|
||||||
|
|
||||||
GND and (external) 5V are available on both P1 and P2. Note: These signals
|
NOTES:
|
||||||
may be at lower voltage levels and, hence, may not properly drive an external
|
|
||||||
RS-232 transceiver.
|
|
||||||
|
|
||||||
NOTE: The crystal X3 is not installed on the STM32L3-Discovery. As a
|
- GND and (external) 5V are available on both P1 and P2. Note: These
|
||||||
result, the HSE clock is not availabled and the less acurate HSI must be
|
signals may be at lower voltage levels and, hence, may not properly
|
||||||
used. This may limit the accuracy of the computed baud, especially at
|
drive an external RS-232 transceiver.
|
||||||
higher BAUD. The HSI is supposedly calibrated in the factory to within 1%
|
|
||||||
at room temperatures so perhaps this not a issue.
|
|
||||||
|
|
||||||
I have had no problems using the USART1 with PA9 and PA10 with a 3.3-5V
|
- The crystal X3 is not installed on the STM32L3-Discovery. As a result,
|
||||||
RS-232 transceiver module at 57600 baud. I have not tried higher baud rates.
|
the HSE clock is not availabled and the less acurate HSI must be used.
|
||||||
|
This may limit the accuracy of the computed baud, especially at higher
|
||||||
|
BAUD. The HSI is supposedly calibrated in the factory to within 1% at
|
||||||
|
room temperatures so perhaps this not a issue.
|
||||||
|
|
||||||
There is no support for a USB serial connector on the STM32L-Discovery board.
|
- According to the STM32L-Discovery User Manual, the LCD should be removed
|
||||||
The STM32L152 does support USB, but the USB pins are "free I/O" on the board
|
from its socket if you use any of the LCD pins for any other purpose.
|
||||||
and no USB connector is provided. So the use of a USB console is not option.
|
|
||||||
If you need console output, you will need to disable either LCD (and use any
|
I have had no problems using the USART1 with PA9 and PA10 with a 3.3-5V
|
||||||
USART) or the LEDs (and use USART1)
|
RS-232 transceiver module at 57600 baud. I have not tried higher baud
|
||||||
|
rates.
|
||||||
|
|
||||||
|
- There is no support for a USB serial connector on the STM32L-Discovery
|
||||||
|
board. The STM32L152 does support USB, but the USB pins are "free I/O"
|
||||||
|
on the board and no USB connector is provided. So the use of a USB
|
||||||
|
console is not option. If you need console output, you will need to
|
||||||
|
disable either LCD (and use any USART) or the LEDs (and use USART1)
|
||||||
|
|
||||||
Debugging
|
Debugging
|
||||||
=========
|
=========
|
||||||
|
|
||||||
STM32 ST-LINK Utility
|
STM32 ST-LINK Utility
|
||||||
---------------------
|
---------------------
|
||||||
For simply writing to FLASH, I use the STM32 ST-LINK Utility. At least
|
For simply writing to FLASH, I use the STM32 ST-LINK Utility. At least
|
||||||
version 2.4.0 is required (older versions do not recognize the STM32 F3
|
version 2.4.0 is required (older versions do not recognize the STM32 F3
|
||||||
device). This utility is available from free from the STMicro website.
|
device). This utility is available from free from the STMicro website.
|
||||||
|
|
||||||
Debugging
|
Debugging
|
||||||
---------
|
---------
|
||||||
If you are going to use a debugger, you should make sure that the following
|
If you are going to use a debugger, you should make sure that the following
|
||||||
settings are selection in your configuration file:
|
settings are selection in your configuration file:
|
||||||
|
|
||||||
CONFIG_DEBUG_SYMBOLS=y : Enable debug symbols in the build
|
CONFIG_DEBUG_SYMBOLS=y : Enable debug symbols in the build
|
||||||
CONFIG_ARMV7M_USEBASEPRI=y : Use the BASEPRI register to disable interrupts
|
CONFIG_ARMV7M_USEBASEPRI=y : Use the BASEPRI register to disable interrupts
|
||||||
|
|
||||||
OpenOCD
|
OpenOCD
|
||||||
-------
|
-------
|
||||||
I am told that OpenOCD will work with the ST-Link, but I have never tried
|
I am told that OpenOCD will work with the ST-Link, but I have never tried
|
||||||
it.
|
it.
|
||||||
|
|
||||||
https://github.com/texane/stlink
|
https://github.com/texane/stlink
|
||||||
--------------------------------
|
--------------------------------
|
||||||
This is an open source server for the ST-Link that I have never used.
|
This is an open source server for the ST-Link that I have never used.
|
||||||
|
|
||||||
Atollic GDB Server
|
Atollic GDB Server
|
||||||
------------------
|
------------------
|
||||||
You can use the Atollic IDE, but I have never done that either.
|
You can use the Atollic IDE, but I have never done that either.
|
||||||
|
|
||||||
STM32L-Discovery-specific Configuration Options
|
STM32L-Discovery-specific Configuration Options
|
||||||
===============================================
|
===============================================
|
||||||
@ -693,20 +700,20 @@ STM32L-Discovery-specific Configuration Options
|
|||||||
Configurations
|
Configurations
|
||||||
==============
|
==============
|
||||||
|
|
||||||
Each STM32L-Discovery configuration is maintained in a sub-directory and
|
Each STM32L-Discovery configuration is maintained in a sub-directory and
|
||||||
can be selected as follow:
|
can be selected as follow:
|
||||||
|
|
||||||
cd tools
|
cd tools
|
||||||
./configure.sh STM32L-Discovery/<subdir>
|
./configure.sh STM32L-Discovery/<subdir>
|
||||||
cd -
|
cd -
|
||||||
. ./setenv.sh
|
. ./setenv.sh
|
||||||
|
|
||||||
If this is a Windows native build, then configure.bat should be used
|
If this is a Windows native build, then configure.bat should be used
|
||||||
instead of configure.sh:
|
instead of configure.sh:
|
||||||
|
|
||||||
configure.bat STM32L-Discovery\<subdir>
|
configure.bat STM32L-Discovery\<subdir>
|
||||||
|
|
||||||
Where <subdir> is one of the following:
|
Where <subdir> is one of the following:
|
||||||
|
|
||||||
nsh:
|
nsh:
|
||||||
---
|
---
|
||||||
@ -739,3 +746,9 @@ Where <subdir> is one of the following:
|
|||||||
CONFIG_HOST_WINDOWS=y : Builds under Windows
|
CONFIG_HOST_WINDOWS=y : Builds under Windows
|
||||||
CONFIG_WINDOWS_CYGWIN=y : Using Cygwin
|
CONFIG_WINDOWS_CYGWIN=y : Using Cygwin
|
||||||
CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y : CodeSourcery for Windows
|
CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y : CodeSourcery for Windows
|
||||||
|
|
||||||
|
5. To enable SLCD support:
|
||||||
|
|
||||||
|
CONFIG_ARCH_LEDS=y : Disable LED support
|
||||||
|
CONFIG_LIB_SLCDCODEC=y : Enable the SLCD CODEC
|
||||||
|
CONFIG_STM32_LCD=y : Enable the SLCD
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
############################################################################
|
############################################################################
|
||||||
# configs/stm32f3discovery/nsh/Make.defs
|
# configs/stm32l1discovery/nsh/Make.defs
|
||||||
#
|
#
|
||||||
# Copyright (C) 2013 Gregory Nutt. All rights reserved.
|
# Copyright (C) 2013 Gregory Nutt. All rights reserved.
|
||||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# configs/stm32f3discovery/nsh/setenv.sh
|
# configs/stm32l1discovery/nsh/setenv.sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2013 Gregory Nutt. All rights reserved.
|
# Copyright (C) 2013 Gregory Nutt. All rights reserved.
|
||||||
# Author: Gregory Nutt <gnutt@nuttx.org>
|
# Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -186,38 +186,38 @@
|
|||||||
* PC11 LCD_SEG41 LCD SEG23
|
* PC11 LCD_SEG41 LCD SEG23
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define BOARD_LCD_COM0 GPIO_LCD_COM0 /* PA8 */
|
#define BOARD_SLCD_COM0 GPIO_LCD_COM0 /* PA8 */
|
||||||
#define BOARD_LCD_COM1 GPIO_LCD_COM1 /* PA9 */
|
#define BOARD_SLCD_COM1 GPIO_LCD_COM1 /* PA9 */
|
||||||
#define BOARD_LCD_COM2 GPIO_LCD_COM2 /* PA10 */
|
#define BOARD_SLCD_COM2 GPIO_LCD_COM2 /* PA10 */
|
||||||
#define BOARD_LCD_COM3 GPIO_LCD_COM3 /* PB9 */
|
#define BOARD_SLCD_COM3 GPIO_LCD_COM3 /* PB9 */
|
||||||
#define BOARD_LCD_SEG0 GPIO_LCD_SEG0 /* PA1 */
|
#define BOARD_SLCD_SEG0 GPIO_LCD_SEG0 /* PA1 */
|
||||||
#define BOARD_LCD_SEG1 GPIO_LCD_SEG1 /* PA2 */
|
#define BOARD_SLCD_SEG1 GPIO_LCD_SEG1 /* PA2 */
|
||||||
#define BOARD_LCD_SEG2 GPIO_LCD_SEG2 /* PA3 */
|
#define BOARD_SLCD_SEG2 GPIO_LCD_SEG2 /* PA3 */
|
||||||
#define BOARD_LCD_SEG3 GPIO_LCD_SEG7 /* PB3 */
|
#define BOARD_SLCD_SEG3 GPIO_LCD_SEG7 /* PB3 */
|
||||||
#define BOARD_LCD_SEG4 GPIO_LCD_SEG8 /* PB4 */
|
#define BOARD_SLCD_SEG4 GPIO_LCD_SEG8 /* PB4 */
|
||||||
#define BOARD_LCD_SEG5 GPIO_LCD_SEG9 /* PB5 */
|
#define BOARD_SLCD_SEG5 GPIO_LCD_SEG9 /* PB5 */
|
||||||
#define BOARD_LCD_SEG6 GPIO_LCD_SEG10 /* PB10 */
|
#define BOARD_SLCD_SEG6 GPIO_LCD_SEG10 /* PB10 */
|
||||||
#define BOARD_LCD_SEG7 GPIO_LCD_SEG11 /* PB11 */
|
#define BOARD_SLCD_SEG7 GPIO_LCD_SEG11 /* PB11 */
|
||||||
#define BOARD_LCD_SEG8 GPIO_LCD_SEG12 /* PB12 */
|
#define BOARD_SLCD_SEG8 GPIO_LCD_SEG12 /* PB12 */
|
||||||
#define BOARD_LCD_SEG9 GPIO_LCD_SEG13 /* PB13 */
|
#define BOARD_SLCD_SEG9 GPIO_LCD_SEG13 /* PB13 */
|
||||||
#define BOARD_LCD_SEG10 GPIO_LCD_SEG14 /* PB14 */
|
#define BOARD_SLCD_SEG10 GPIO_LCD_SEG14 /* PB14 */
|
||||||
#define BOARD_LCD_SEG11 GPIO_LCD_SEG15 /* PB15 */
|
#define BOARD_SLCD_SEG11 GPIO_LCD_SEG15 /* PB15 */
|
||||||
#define BOARD_LCD_SEG12 GPIO_LCD_SEG17 /* PA15 */
|
#define BOARD_SLCD_SEG12 GPIO_LCD_SEG17 /* PA15 */
|
||||||
#define BOARD_LCD_SEG13 GPIO_LCD_SEG16 /* PB8 */
|
#define BOARD_SLCD_SEG13 GPIO_LCD_SEG16 /* PB8 */
|
||||||
#define BOARD_LCD_SEG14 GPIO_LCD_SEG18 /* PC0 */
|
#define BOARD_SLCD_SEG14 GPIO_LCD_SEG18 /* PC0 */
|
||||||
#define BOARD_LCD_SEG15 GPIO_LCD_SEG19 /* PC1 */
|
#define BOARD_SLCD_SEG15 GPIO_LCD_SEG19 /* PC1 */
|
||||||
#define BOARD_LCD_SEG16 GPIO_LCD_SEG20 /* PC2 */
|
#define BOARD_SLCD_SEG16 GPIO_LCD_SEG20 /* PC2 */
|
||||||
#define BOARD_LCD_SEG17 GPIO_LCD_SEG21 /* PC3 */
|
#define BOARD_SLCD_SEG17 GPIO_LCD_SEG21 /* PC3 */
|
||||||
#define BOARD_LCD_SEG18 GPIO_LCD_SEG24 /* PC6 */
|
#define BOARD_SLCD_SEG18 GPIO_LCD_SEG24 /* PC6 */
|
||||||
#define BOARD_LCD_SEG19 GPIO_LCD_SEG25 /* PC7 */
|
#define BOARD_SLCD_SEG19 GPIO_LCD_SEG25 /* PC7 */
|
||||||
#define BOARD_LCD_SEG20 GPIO_LCD_SEG26 /* PC8 */
|
#define BOARD_SLCD_SEG20 GPIO_LCD_SEG26 /* PC8 */
|
||||||
#define BOARD_LCD_SEG21 GPIO_LCD_SEG27 /* PC9 */
|
#define BOARD_SLCD_SEG21 GPIO_LCD_SEG27 /* PC9 */
|
||||||
#define BOARD_LCD_SEG22 GPIO_LCD_SEG40 /* PC10 */
|
#define BOARD_SLCD_SEG22 GPIO_LCD_SEG40 /* PC10 */
|
||||||
#define BOARD_LCD_SEG23 GPIO_LCD_SEG41 /* PC11 */
|
#define BOARD_SLCD_SEG23 GPIO_LCD_SEG41 /* PC11 */
|
||||||
|
|
||||||
#define BOARD LCD_NCOM 4
|
#define BOARD_SLCD_NCOM 4
|
||||||
#define BOARD LCD_NSEG 24
|
#define BOARD_SLCD_NSEG 24
|
||||||
#define BOARD_LCD_NGPIOS 28
|
#define BOARD_SLCD_NGPIOS 28
|
||||||
|
|
||||||
/****************************************************************************************************
|
/****************************************************************************************************
|
||||||
* Public Types
|
* Public Types
|
||||||
|
Loading…
Reference in New Issue
Block a user