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