ST STM32VLDiscovery

This page discusses issues unique to NuttX configurations for the STMicro STM32VLDiscovery (Value Line Discovery) board.

LEDs

It is assumed that STMicro STM32F100RB generic board board has one LED on PA0. You should configure the port and pin number in boards/arm/stm32/stm32vldiscovery/src/stm32vldiscovery.h. This LED is 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 LED is used to encode OS-related events as follows:

SYMBOL                Meaning                 LED1*
                                              green
-------------------  -----------------------  -------
LED_STARTED          NuttX has been started   ON
LED_HEAPALLOCATE     Heap has been allocated  ON
LED_IRQSENABLED      Interrupts enabled       ON
LED_STACKCREATED     Idle stack created       ON
LED_INIRQ            In an interrupt          ON
LED_SIGNAL           In a signal handler      ON
LED_ASSERTION        An assertion failed      OFF
LED_PANIC            The system has crashed   OFF

So basically if the LED is off it means that there is a problem.

UART

Default USART/UART Configuration

USART1 is enabled in all configurations (see */defconfig). RX and TX are configured on pins PA10 and PA9, respectively. Then connect the RX pin of your USB/Serial adapter to TX pin (PA9) and the TX pin of your adapter to RX pin (PA10) of your board besides, of course, the GND pin.

“STMicro STM32F100RB generic” specific Configuration Options

  CONFIG_ARCH - Identifies the arch/ subdirectory.  This should
     be set to:

     CONFIG_ARCH=arm

  CONFIG_ARCH_family - For use in C code:

     CONFIG_ARCH_ARM=y

  CONFIG_ARCH_architecture - For use in C code:

     CONFIG_ARCH_CORTEXM3=y

  CONFIG_ARCH_CHIP - Identifies the arch/*/chip subdirectory

     CONFIG_ARCH_CHIP=stm32

  CONFIG_ARCH_CHIP_name - For use in C code to identify the exact
     chip:

     CONFIG_ARCH_CHIP_STM32F100RB=y

  CONFIG_ARCH_BOARD_STM32_CUSTOM_CLOCKCONFIG - Enables special STM32 clock
     configuration features.

     CONFIG_ARCH_BOARD_STM32_CUSTOM_CLOCKCONFIG=n

  CONFIG_ARCH_BOARD - Identifies the boards/ subdirectory and
     hence, the board that supports the particular chip or SoC.

     CONFIG_ARCH_BOARD=stm32vldiscovery

  CONFIG_ARCH_BOARD_name - For use in C code

     CONFIG_ARCH_BOARD_STM32VL_DISCOVERY=y

  CONFIG_ARCH_LOOPSPERMSEC - Must be calibrated for correct operation
     of delay loops

  CONFIG_ENDIAN_BIG - define if big endian (default is little
     endian)

  CONFIG_RAM_SIZE - Describes the installed DRAM (SRAM in this case):

     CONFIG_RAM_SIZE=8192 (8kB)

  CONFIG_RAM_START - The start address of installed DRAM

     CONFIG_RAM_START=0x20000000

  CONFIG_ARCH_LEDS - Use LED to show state. Unique to boards that have LED(s)

  CONFIG_ARCH_INTERRUPTSTACK - This architecture supports an interrupt
     stack. If defined, this symbol is the size of the interrupt
     stack in bytes.  If not defined, the user task stacks will be
     used during interrupt handling.

  CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions

Individual subsystems can be enabled::

     AHB
     ----
     CONFIG_STM32_CRC
     CONFIG_STM32_DMA1
     CONFIG_STM32_DMA2

     APB1
     ----
     CONFIG_STM32_TIM2
     CONFIG_STM32_TIM3
     CONFIG_STM32_TIM4
     CONFIG_STM32_TIM5
     CONFIG_STM32_TIM6
     CONFIG_STM32_TIM7
     CONFIG_STM32_TIM12
     CONFIG_STM32_TIM13
     CONFIG_STM32_TIM14
     CONFIG_STM32_RTC
     CONFIG_STM32_WWDG
     CONFIG_STM32_IWDG
     CONFIG_STM32_SPI2
     CONFIG_STM32_SPI3
     CONFIG_STM32_USART2
     CONFIG_STM32_USART3
     CONFIG_STM32_UART4
     CONFIG_STM32_UART5
     CONFIG_STM32_I2C1
     CONFIG_STM32_I2C2
     CONFIG_STM32_PWR -- Required for RTC
     CONFIG_STM32_BKP -- Required for RTC
     CONFIG_STM32_DAC1
     CONFIG_STM32_DAC2
     CONFIG_STM32_CEC

     APB2
     ----
     CONFIG_STM32_ADC1
     CONFIG_STM32_TIM1
     CONFIG_STM32_SPI1
     CONFIG_STM32_USART1
     CONFIG_STM32_TIM15
     CONFIG_STM32_TIM16
     CONFIG_STM32_TIM17

Timer devices may be used for different purposes.  One special purpose is
to generate modulated outputs for such things as motor control.  If CONFIG_STM32_TIMn
is defined (as above) then the following may also be defined to indicate that
the timer is intended to be used for pulsed output modulation, ADC conversion,
or DAC conversion. Note that ADC/DAC require two definition:  Not only do you have
to assign the timer (n) for used by the ADC or DAC, but then you also have to
configure which ADC or DAC (m) it is assigned to.

  CONFIG_STM32_TIMn_PWM   Reserve timer n for use by PWM, n=1,..,17
  CONFIG_STM32_TIMn_ADC   Reserve timer n for use by ADC, n=1,..,17
  CONFIG_STM32_TIMn_ADC1  Reserve timer n to trigger ADCm, n=1,..,17
  CONFIG_STM32_TIMn_DAC   Reserve timer n for use by DAC, n=1,..,17
  CONFIG_STM32_TIMn_DACm  Reserve timer n to trigger DACm, n=1,..,17, m=1,..,2

For each timer that is enabled for PWM usage, we need the following additional
configuration settings:

  CONFIG_STM32_TIMx_CHANNEL - Specifies the timer output channel {1,..,4}

NOTE: The STM32 timers are each capable of generating different signals on
each of the four channels with different duty cycles.  That capability is
not supported by this driver:  Only one output channel per timer.

JTAG Enable settings (by default full SWJ is enabled):

  CONFIG_STM32_JTAG_FULL_ENABLE - Enables full SWJ (JTAG-DP + SW-DP)
  CONFIG_STM32_JTAG_NOJNTRST_ENABLE - Enables full SWJ (JTAG-DP + SW-DP)
    but without JNTRST.
  CONFIG_STM32_JTAG_SW_ENABLE - Set JTAG-DP disabled and SW-DP enabled

STMicro STM32F100RB generic specific device driver settings

  CONFIG_U[S]ARTn_SERIAL_CONSOLE - selects the USARTn (n=1,2,3) or UART
         m (m=4,5) for the console and ttys0 (default is the USART1).
  CONFIG_U[S]ARTn_RXBUFSIZE - Characters are buffered as received.
     This specific the size of the receive buffer
  CONFIG_U[S]ARTn_TXBUFSIZE - Characters are buffered before
     being sent.  This specific the size of the transmit buffer
  CONFIG_U[S]ARTn_BAUD - The configure BAUD of the UART.  Must be
  CONFIG_U[S]ARTn_BITS - The number of bits.  Must be either 7 or 8.
  CONFIG_U[S]ARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity
  CONFIG_U[S]ARTn_2STOP - Two stop bits

Configurations

Each STMicro STM32F100RB generic configuration is maintained in a sub-directory and can be selected as follow:

tools/configure.sh stm32vldiscovery:<subdir>

Where <subdir> is one of the following:

nsh

Configures the NuttShell (nsh) located at apps/examples/nsh. The Configuration enables only the serial NSH interfaces.

Default toolchain:

CONFIG_ARM_TOOLCHAIN_GNU_EABI=y      : GNU EABI toolchain for Linux