mirror of
https://github.com/apache/nuttx.git
synced 2026-06-02 01:21:26 +08:00
Documentation: migrate STM32F1
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,116 @@
|
|||||||
|
==============
|
||||||
|
ET-STM32 Stamp
|
||||||
|
==============
|
||||||
|
|
||||||
|
This README discusses issues/thoughts unique to NuttX configuration(s) for the
|
||||||
|
ET-STM32 Stamp board from Futurlec (https://www.futurlec.com/ET-STM32_Stamp.shtml).
|
||||||
|
|
||||||
|
Microprocessor: 32-bit ARM Cortex M3 at 72MHz STM32F103RET6
|
||||||
|
Memory: 512 KB Flash and 64 KB SRAM
|
||||||
|
I/O Pins Out: 48
|
||||||
|
ADCs: 16 (at 12-bit resolution)
|
||||||
|
DACs: 2 (at 12-bit resolution)
|
||||||
|
Peripherals: RTC, 4 timers, 2 I2Cs, 3 SPI ports, 1 on-board UART (upto 5 channels)
|
||||||
|
Other: Sleep, stop, and standby modes; serial wire debug and JTAG interfaces
|
||||||
|
|
||||||
|
Please see link below for board specific details:
|
||||||
|
|
||||||
|
https://www.futurlec.com/ET-STM32_Stamp_Technical.shtml
|
||||||
|
|
||||||
|
This configuration supports the ET-STM32 Stamp module.
|
||||||
|
|
||||||
|
Development Environment
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Either Linux (recommended), Mac or Cygwin on Windows can be used for the development
|
||||||
|
environment. The source has been built only using the GNU (Cortex M) toolchain.
|
||||||
|
Other toolchains will likely cause problems.
|
||||||
|
|
||||||
|
WSL (Windows Subsystem for Linux) was used to develop, compile and test the NuttX
|
||||||
|
build for the ET-STM32 Stamp platform.
|
||||||
|
|
||||||
|
Flashing/Programming
|
||||||
|
====================
|
||||||
|
|
||||||
|
Prerequisites:
|
||||||
|
|
||||||
|
1. The ET-STM32 Stamp module from Futurlec.
|
||||||
|
|
||||||
|
2. An RS232 connection cable such as the one in this link: (Part code: RS232CONN):
|
||||||
|
https://www.futurlec.com/DevBoardAccessories.shtml
|
||||||
|
|
||||||
|
It has a 4-pin connection header on one end and an RS-232 (DB9) female connector on
|
||||||
|
the other. The 4-pin connector can be directly plugged onto the Stamp module.
|
||||||
|
|
||||||
|
3. An RS232 to USB converter cable. Ensure that a suitable driver is installed for
|
||||||
|
the converter cable. When the cable is plugged in (for example), my PC lists the
|
||||||
|
assigned port with this name: "USB-SERIAL CH340 (COM2)".
|
||||||
|
|
||||||
|
Assuming Windows 10, navigate to: This PC -> Manage -> Device Manager -> Ports.
|
||||||
|
|
||||||
|
4. ST's Flash loader demonstrator tool. You can download it from here:
|
||||||
|
https://www.st.com/en/development-tools/flasher-stm32.html
|
||||||
|
|
||||||
|
To install the NuttX firmware (nuttx.bin) on the ET-STM32 Stamp:
|
||||||
|
|
||||||
|
1. First, power the Stamp module with a 3.3 VDC power supply. I made my own
|
||||||
|
Stamp module fixture using a 3.3 VDC switching regulator, a prototype PCB card
|
||||||
|
and some solder.
|
||||||
|
|
||||||
|
2. Insert the RS232CONN into the 4-pin on-board header. The other end should be
|
||||||
|
connected to the USB port of the PC using the RS232-USB converter.
|
||||||
|
|
||||||
|
3. Set the BOOT1 jumper on your board to the ISP position.
|
||||||
|
|
||||||
|
4. Press the BOOT0 switch. The green "BOOT0=1" LED should light up.
|
||||||
|
|
||||||
|
5. Reset the board by pressing on the RESET button.
|
||||||
|
|
||||||
|
6. Using the ST Flash loader demonstrator to download the NuttX binary image.
|
||||||
|
|
||||||
|
7. Wait until programming is completed and press "Finish". Toggle the
|
||||||
|
BOOT0 switch again. Reset the board.
|
||||||
|
|
||||||
|
You will now be presented with the NuttShell (NSH). Enjoy.
|
||||||
|
|
||||||
|
Configurations
|
||||||
|
==============
|
||||||
|
|
||||||
|
Information Common to All Configurations
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
The ET-STM32 Stamp configuration is maintained in a sub-directory and can be
|
||||||
|
selected as follow::
|
||||||
|
|
||||||
|
tools/configure.sh et-stm32-stamp:<subdir>
|
||||||
|
|
||||||
|
Before building, make sure the PATH environment variable includes the
|
||||||
|
correct path to the directory than holds your toolchain binaries.
|
||||||
|
|
||||||
|
And then build NuttX by simply typing the following. At the conclusion of
|
||||||
|
the make, the nuttx binary will reside in an ELF file called, simply, nuttx.::
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
The <subdir> that is provided above as an argument to the tools/configure.sh
|
||||||
|
must be in one of the following.
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
|
||||||
|
1. These configurations use the mconf-based configuration tool. To
|
||||||
|
change any of these configurations using that tool, you should:
|
||||||
|
|
||||||
|
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
||||||
|
see additional README.txt files in the NuttX tools repository.
|
||||||
|
|
||||||
|
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
||||||
|
reconfiguration process.
|
||||||
|
|
||||||
|
Configuration Sub-directories
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
nsh:
|
||||||
|
----
|
||||||
|
|
||||||
|
This configuration directory provide the basic NuttShell (NSH).
|
||||||
|
A serial console is provided on USART1.
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,214 @@
|
|||||||
|
=====
|
||||||
|
maple
|
||||||
|
=====
|
||||||
|
|
||||||
|
This README discusses issues unique to NuttX configurations for the
|
||||||
|
maple board from LeafLabs (http://leaflabs.com).
|
||||||
|
|
||||||
|
Microprocessor: 32-bit ARM Cortex M3 at 72MHz STM32F103RBT6 (STM32F103CBT6 for mini version)
|
||||||
|
Memory: 120 KB Flash and 20 KB SRAM
|
||||||
|
I/O Pins Out: 43 (34 for mini version)
|
||||||
|
ADCs: 9 (at 12-bit resolution)
|
||||||
|
Peripherals: 4 timers, 2 I2Cs, 2 SPI ports, 3 USARTs
|
||||||
|
Other: Sleep, stop, and standby modes; serial wire debug and JTAG interfaces
|
||||||
|
|
||||||
|
Please see below link for a list of maple devices and documentations.
|
||||||
|
|
||||||
|
http://leaflabs.com/devices
|
||||||
|
http://leaflabs.com/docs
|
||||||
|
|
||||||
|
This config supports Maple and Maple Mini.
|
||||||
|
|
||||||
|
Development Environment
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Either Linux (recommended), Mac or Cygwin on Windows can be used for the development
|
||||||
|
environment. The source has been built only using the GNU toolchain (see below).
|
||||||
|
Other toolchains will likely cause problems.
|
||||||
|
|
||||||
|
DFU
|
||||||
|
===
|
||||||
|
|
||||||
|
The linker files in these projects can be configured to indicate that you
|
||||||
|
will be loading code using STMicro built-in USB Device Firmware Upgrade (DFU)
|
||||||
|
loader or via some JTAG emulator. You can specify the DFU bootloader by
|
||||||
|
adding the following line::
|
||||||
|
|
||||||
|
CONFIG_STM32_DFU=y
|
||||||
|
|
||||||
|
to your .config file. Most of the configurations in this directory are set
|
||||||
|
up to use the DFU loader.
|
||||||
|
|
||||||
|
If CONFIG_STM32_DFU is defined, the code will not be positioned at the beginning
|
||||||
|
of FLASH (0x08000000) but will be offset to 0x08005000. This offset is needed
|
||||||
|
to make space for the DFU loader and 0x08005000 is where the DFU loader expects
|
||||||
|
to find new applications at boot time. If you need to change that origin for some
|
||||||
|
other bootloader, you will need to edit the file(s) ld.script.dfu for each
|
||||||
|
configuration. In LeafLabs case, we are using maple bootloader:
|
||||||
|
|
||||||
|
http://leaflabs.com/docs/bootloader.html
|
||||||
|
|
||||||
|
For Linux or Mac
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
While on Linux or Mac, we can use dfu-util to upload nuttx binary.
|
||||||
|
|
||||||
|
1. Make sure we have installed dfu-util. (From yum, apt-get or build from source.)
|
||||||
|
2. Start the DFU loader (bootloader) on the maple board. You do this by
|
||||||
|
resetting the board while holding the "Key" button. Windows should
|
||||||
|
recognize that the DFU loader has been installed.
|
||||||
|
3. Flash the nuttx.bin to the board use dfu-util. Here's an example::
|
||||||
|
|
||||||
|
$ dfu-util -a1 -d 1eaf:0003 -D nuttx.bin -R
|
||||||
|
|
||||||
|
For anything not clear, we can refer to LeafLabs official document:
|
||||||
|
|
||||||
|
http://leaflabs.com/docs/unix-toolchain.html
|
||||||
|
|
||||||
|
For Windows
|
||||||
|
------------
|
||||||
|
|
||||||
|
The DFU SE PC-based software is available from the STMicro website,
|
||||||
|
http://www.st.com. General usage instructions:
|
||||||
|
|
||||||
|
1. Connect the maple board to your computer using a USB
|
||||||
|
cable.
|
||||||
|
2. Start the DFU loader on the maple board. You do this by
|
||||||
|
resetting the board while holding the "Key" button. Windows should
|
||||||
|
recognize that the DFU loader has been installed.
|
||||||
|
3. Run the DFU SE program to load nuttx.bin into FLASH.
|
||||||
|
|
||||||
|
What if the DFU loader is not in FLASH? The loader code is available
|
||||||
|
inside of the Demo directory of the USBLib ZIP file that can be downloaded
|
||||||
|
from the STMicro Website. You can build it using RIDE (or other toolchains);
|
||||||
|
you will need a JTAG emulator to burn it into FLASH the first time.
|
||||||
|
|
||||||
|
In order to use STMicro's built-in DFU loader, you will have to get
|
||||||
|
the NuttX binary into a special format with a .dfu extension. The
|
||||||
|
DFU SE PC_based software installation includes a file "DFU File Manager"
|
||||||
|
conversion program that a file in Intel Hex format to the special DFU
|
||||||
|
format. When you successfully build NuttX, you will find a file called
|
||||||
|
nutt.hex in the top-level directory. That is the file that you should
|
||||||
|
provide to the DFU File Manager. You will end up with a file called
|
||||||
|
nuttx.dfu that you can use with the STMicro DFU SE program.
|
||||||
|
|
||||||
|
Configurations
|
||||||
|
==============
|
||||||
|
|
||||||
|
Information Common to All Configurations
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Each Maple configuration is maintained in a sub-directory and
|
||||||
|
can be selected as follow::
|
||||||
|
|
||||||
|
tools/configure.sh maple:<subdir>
|
||||||
|
|
||||||
|
Before building, make sure the PATH environment variable includes the
|
||||||
|
correct path to the directory than holds your toolchain binaries.
|
||||||
|
|
||||||
|
And then build NuttX by simply typing the following. At the conclusion of
|
||||||
|
the make, the nuttx binary will reside in an ELF file called, simply, nuttx.::
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
The <subdir> that is provided above as an argument to the tools/configure.sh
|
||||||
|
must be is one of the following.
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
|
||||||
|
1. These configurations use the mconf-based configuration tool. To
|
||||||
|
change any of these configurations using that tool, you should:
|
||||||
|
|
||||||
|
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
||||||
|
see additional README.txt files in the NuttX tools repository.
|
||||||
|
|
||||||
|
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
||||||
|
reconfiguration process.
|
||||||
|
|
||||||
|
Configuration Sub-directories
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
nsh
|
||||||
|
---
|
||||||
|
|
||||||
|
This configuration directory provide the basic NuttShell (NSH).
|
||||||
|
A serial console is provided on USART1.
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
|
||||||
|
1. Currently configured for the STM32F103CB. But this is easily reconfigured::
|
||||||
|
|
||||||
|
CONFIG_ARCH_CHIP_STM32F103RB=n
|
||||||
|
CONFIG_ARCH_CHIP_STM32F103CB=y
|
||||||
|
|
||||||
|
2. Support for the I2C tool has been disabled, but can be restored
|
||||||
|
with following configure options::
|
||||||
|
|
||||||
|
System Type -> Peripherals
|
||||||
|
CONFIG_STM32_I2C1=y
|
||||||
|
CONFIG_STM32_I2C2=y
|
||||||
|
CONFIG_STM32_I2CTIMEOSEC=1
|
||||||
|
CONFIG_STM32_I2CTIMEOMS=500
|
||||||
|
CONFIG_STM32_I2CTIMEOTICKS=500
|
||||||
|
|
||||||
|
Drivers
|
||||||
|
CONFIG_I2C=y
|
||||||
|
|
||||||
|
Applications -> System Add-Ons
|
||||||
|
CONFIG_SYSTEM_I2CTOOL=y
|
||||||
|
CONFIG_I2CTOOL_MINBUS=1
|
||||||
|
CONFIG_I2CTOOL_MAXBUS=2
|
||||||
|
CONFIG_I2CTOOL_MINADDR=0x0
|
||||||
|
CONFIG_I2CTOOL_MAXADDR=0xf0
|
||||||
|
CONFIG_I2CTOOL_MAXREGADDR=0xff
|
||||||
|
CONFIG_I2CTOOL_DEFFREQ=100000
|
||||||
|
|
||||||
|
nx
|
||||||
|
--
|
||||||
|
|
||||||
|
This configuration has been used to bring up the Sharp Memory LCD
|
||||||
|
on a custom board. This NX configuration was used for testing that
|
||||||
|
LCD. Debug output will appear on USART1.
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
1. Currently configured for the STM32F103CB. But this is easily reconfigured::
|
||||||
|
|
||||||
|
CONFIG_ARCH_CHIP_STM32F103RB=n
|
||||||
|
CONFIG_ARCH_CHIP_STM32F103CB=y
|
||||||
|
|
||||||
|
2. You won't be able to buy a Sharp Memory LCD to use with your
|
||||||
|
Maple. If you want one, you will have to make one yourself.
|
||||||
|
|
||||||
|
usbnsh
|
||||||
|
------
|
||||||
|
|
||||||
|
This is an alternative NuttShell (NSH) configuration that uses a USB
|
||||||
|
serial console for interaction.
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
1. Currently configured for the STM32F103CB. But this is easily reconfigured::
|
||||||
|
|
||||||
|
CONFIG_ARCH_CHIP_STM32F103RB=n
|
||||||
|
CONFIG_ARCH_CHIP_STM32F103CB=y
|
||||||
|
|
||||||
|
2. Support for the I2C tool has been disabled, but can be restored
|
||||||
|
with following configure options::
|
||||||
|
|
||||||
|
System Type -> Peripherals
|
||||||
|
CONFIG_STM32_I2C1=y
|
||||||
|
CONFIG_STM32_I2C2=y
|
||||||
|
CONFIG_STM32_I2CTIMEOSEC=1
|
||||||
|
CONFIG_STM32_I2CTIMEOMS=500
|
||||||
|
CONFIG_STM32_I2CTIMEOTICKS=500
|
||||||
|
|
||||||
|
Drivers
|
||||||
|
CONFIG_I2C=y
|
||||||
|
|
||||||
|
Applications -> System Add-Ons
|
||||||
|
CONFIG_SYSTEM_I2CTOOL=y
|
||||||
|
CONFIG_I2CTOOL_MINBUS=1
|
||||||
|
CONFIG_I2CTOOL_MAXBUS=2
|
||||||
|
CONFIG_I2CTOOL_MINADDR=0x0
|
||||||
|
CONFIG_I2CTOOL_MAXADDR=0xf0
|
||||||
|
CONFIG_I2CTOOL_MAXREGADDR=0xff
|
||||||
|
CONFIG_I2CTOOL_DEFFREQ=100000
|
||||||
+13
-32
@@ -1,46 +1,26 @@
|
|||||||
Nucleo-64 Boards
|
================
|
||||||
|
ST Nucleo F103RB
|
||||||
================
|
================
|
||||||
|
|
||||||
The Nucleo-F103RB is a member of the Nucleo-64 board family. The Nucleo-64
|
The Nucleo-F103RB is a member of the Nucleo-64 board family.
|
||||||
is a standard board for use with several STM32 parts in the LQFP64 package.
|
|
||||||
Variants include
|
|
||||||
|
|
||||||
Order code Targeted STM32
|
|
||||||
------------- --------------
|
|
||||||
NUCLEO-F030R8 STM32F030R8T6
|
|
||||||
NUCLEO-F070RB STM32F070RBT6
|
|
||||||
NUCLEO-F072RB STM32F072RBT6
|
|
||||||
NUCLEO-F091RC STM32F091RCT6
|
|
||||||
NUCLEO-F103RB STM32F103RBT6
|
|
||||||
NUCLEO-F302R8 STM32F302R8T6
|
|
||||||
NUCLEO-F303RE STM32F303RET6
|
|
||||||
NUCLEO-F334R8 STM32F334R8T6
|
|
||||||
NUCLEO-F401RE STM32F401RET6
|
|
||||||
NUCLEO-F410RB STM32F410RBT6
|
|
||||||
NUCLEO-F411RE STM32F411RET6
|
|
||||||
NUCLEO-F446RE STM32F446RET6
|
|
||||||
NUCLEO-L053R8 STM32L053R8T6
|
|
||||||
NUCLEO-L073RZ STM32L073RZT6
|
|
||||||
NUCLEO-L152RE STM32L152RET6
|
|
||||||
NUCLEO-L452RE STM32L452RET6
|
|
||||||
NUCLEO-L476RG STM32L476RGT6
|
|
||||||
|
|
||||||
Configurations
|
Configurations
|
||||||
==============
|
==============
|
||||||
|
|
||||||
ihm07m1_b16:
|
ihm07m1_b16:
|
||||||
------------
|
------------
|
||||||
|
|
||||||
These examples are dedicated for the X-NUCLEO-IHM07M1 expansion board
|
These examples are dedicated for the X-NUCLEO-IHM07M1 expansion board
|
||||||
based on L6230 DMOS driver for three-phase brushless DC motors.
|
based on L6230 DMOS driver for three-phase brushless DC motors.
|
||||||
|
|
||||||
X-NUCLEO-IHM07M1 must be configured to work with FOC and 3-shunt
|
X-NUCLEO-IHM07M1 must be configured to work with FOC and 3-shunt
|
||||||
resistors. See ST documentation for details.
|
resistors. See ST documentation for details.
|
||||||
|
|
||||||
Pin configuration for the X-NUCLEO-IHM07M1 (TIM1 configuration):
|
Pin configuration for the X-NUCLEO-IHM07M1 (TIM1 configuration):
|
||||||
|
|
||||||
|
============== ================ =================
|
||||||
Board Function Chip Function Chip Pin Number
|
Board Function Chip Function Chip Pin Number
|
||||||
------------- ---------------- -----------------
|
============== ================ =================
|
||||||
Phase U high TIM1_CH1 PA8
|
Phase U high TIM1_CH1 PA8
|
||||||
Phase U enable GPIO_PC10 PC10
|
Phase U enable GPIO_PC10 PC10
|
||||||
Phase V high TIM1_CH2 PA9
|
Phase V high TIM1_CH2 PA9
|
||||||
@@ -76,6 +56,7 @@ Configurations
|
|||||||
DEBUG2 GPIO PC6
|
DEBUG2 GPIO PC6
|
||||||
DEBUG3 GPIO PC5
|
DEBUG3 GPIO PC5
|
||||||
DEBUG4 GPIO PC8
|
DEBUG4 GPIO PC8
|
||||||
|
============== ================ =================
|
||||||
|
|
||||||
Current shunt resistance = 0.33
|
Current shunt resistance = 0.33
|
||||||
Current sense gain = -1.53 (inverted current)
|
Current sense gain = -1.53 (inverted current)
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
===============
|
||||||
|
olimexino-stm32
|
||||||
|
===============
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,456 @@
|
|||||||
|
==========
|
||||||
|
STM32 Tiny
|
||||||
|
==========
|
||||||
|
|
||||||
|
This README discusses issues unique to NuttX configurations for the
|
||||||
|
STM32 Tiny development board.
|
||||||
|
|
||||||
|
This board is available from several vendors on the net, and may
|
||||||
|
be sold under different names. It is based on a STM32 F103C8T6 MCU, and
|
||||||
|
is (always ?) bundled with a nRF24L01 wireless communication module.
|
||||||
|
|
||||||
|
Contents
|
||||||
|
========
|
||||||
|
|
||||||
|
- LEDs
|
||||||
|
- PWM
|
||||||
|
- UARTs
|
||||||
|
- Timer Inputs/Outputs
|
||||||
|
- STM32 Tiny -specific Configuration Options
|
||||||
|
- Configurations
|
||||||
|
|
||||||
|
LEDs
|
||||||
|
====
|
||||||
|
|
||||||
|
The STM32Tiny board has only one software controllable LED.
|
||||||
|
This LED can be used by the board port when CONFIG_ARCH_LEDS option is
|
||||||
|
enabled.
|
||||||
|
|
||||||
|
If enabled the LED is simply turned on when the board boots
|
||||||
|
successfully, and is blinking on panic / assertion failed.
|
||||||
|
|
||||||
|
PWM
|
||||||
|
===
|
||||||
|
|
||||||
|
The STM32 Tiny has no real on-board PWM devices, but the board can be
|
||||||
|
configured to output a pulse train using TIM3 CH2 on the GPIO line B.5
|
||||||
|
(connected to the LED).
|
||||||
|
Please note that the CONFIG_STM32_TIM3_PARTIAL_REMAP option must be enabled
|
||||||
|
in this case.
|
||||||
|
|
||||||
|
UARTs
|
||||||
|
=====
|
||||||
|
|
||||||
|
UART/USART PINS
|
||||||
|
---------------
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
USART1
|
||||||
|
RX PA10
|
||||||
|
TX PA9
|
||||||
|
USART2
|
||||||
|
CK PA4
|
||||||
|
CTS PA0*
|
||||||
|
RTS PA1
|
||||||
|
RX PA3
|
||||||
|
TX PA2
|
||||||
|
USART3
|
||||||
|
CK PB12*
|
||||||
|
CTS PB13*
|
||||||
|
RTS PB14*
|
||||||
|
RX PB11
|
||||||
|
TX PB10
|
||||||
|
|
||||||
|
* these IO lines are intended to be used by the wireless module on the board.
|
||||||
|
|
||||||
|
Default USART/UART Configuration
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
USART1 (RX & TX only) is available through the RS-232 port on the board. A MAX232 chip converts
|
||||||
|
voltage to RS-232 level. This serial port can be used to flash a firmware using the boot loader
|
||||||
|
integrated in the MCU.
|
||||||
|
|
||||||
|
Timer Inputs/Outputs
|
||||||
|
====================
|
||||||
|
|
||||||
|
TIM1
|
||||||
|
CH1 PA8
|
||||||
|
CH2 PA9*
|
||||||
|
CH3 PA10*
|
||||||
|
CH4 PA11*
|
||||||
|
TIM2
|
||||||
|
CH1 PA0*, PA15, PA5
|
||||||
|
CH2 PA1, PB3
|
||||||
|
CH3 PA2, PB10*
|
||||||
|
CH4 PA3, PB11
|
||||||
|
TIM3
|
||||||
|
CH1 PA6, PB4
|
||||||
|
CH2 PA7, PB5*
|
||||||
|
CH3 PB0
|
||||||
|
CH4 PB1*
|
||||||
|
TIM4
|
||||||
|
CH1 PB6*
|
||||||
|
CH2 PB7
|
||||||
|
CH3 PB8
|
||||||
|
CH4 PB9*
|
||||||
|
|
||||||
|
* Indicates pins that have other on-board functions and should be used only
|
||||||
|
with care (See board datasheet).
|
||||||
|
|
||||||
|
STM32 Tiny - 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_STM32F103C8=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=stm32_tiny
|
||||||
|
|
||||||
|
CONFIG_ARCH_BOARD_name - For use in C code
|
||||||
|
|
||||||
|
CONFIG_ARCH_BOARD_STM32_TINY=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=20480 (20Kb)
|
||||||
|
|
||||||
|
CONFIG_RAM_START - The start address of installed DRAM
|
||||||
|
|
||||||
|
CONFIG_RAM_START=0x20000000
|
||||||
|
|
||||||
|
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
|
||||||
|
have LEDs
|
||||||
|
|
||||||
|
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_BKPSRAM
|
||||||
|
|
||||||
|
APB1
|
||||||
|
----
|
||||||
|
CONFIG_STM32_TIM2
|
||||||
|
CONFIG_STM32_TIM3
|
||||||
|
CONFIG_STM32_TIM4
|
||||||
|
CONFIG_STM32_WWDG
|
||||||
|
CONFIG_STM32_IWDG
|
||||||
|
CONFIG_STM32_SPI2
|
||||||
|
CONFIG_STM32_USART2
|
||||||
|
CONFIG_STM32_USART3
|
||||||
|
CONFIG_STM32_I2C1
|
||||||
|
CONFIG_STM32_I2C2
|
||||||
|
CONFIG_STM32_CAN1
|
||||||
|
CONFIG_STM32_PWR -- Required for RTC
|
||||||
|
|
||||||
|
APB2
|
||||||
|
----
|
||||||
|
CONFIG_STM32_TIM1
|
||||||
|
CONFIG_STM32_USART1
|
||||||
|
CONFIG_STM32_ADC1
|
||||||
|
CONFIG_STM32_ADC2
|
||||||
|
CONFIG_STM32_SPI1
|
||||||
|
|
||||||
|
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 or ADC conversion.
|
||||||
|
Note that ADC require two definitions: Not only do you have
|
||||||
|
to assign the timer (n) for used by the ADC, but then you also have to
|
||||||
|
configure which ADC (m) it is assigned to.
|
||||||
|
|
||||||
|
CONFIG_STM32_TIMn_PWM Reserve timer n for use by PWM, n=1,..,14
|
||||||
|
CONFIG_STM32_TIMn_ADC Reserve timer n for use by ADC, n=1,..,14
|
||||||
|
CONFIG_STM32_TIMn_ADCm Reserve timer n to trigger ADCm, n=1,..,14, m=1,..,3
|
||||||
|
|
||||||
|
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 only SW-DP 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
|
||||||
|
|
||||||
|
STM32Tiny specific device driver settings
|
||||||
|
|
||||||
|
CONFIG_U[S]ARTn_SERIAL_CONSOLE - selects the USARTn (n=1,2,3)
|
||||||
|
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
|
||||||
|
|
||||||
|
STM32Tiny CAN Configuration
|
||||||
|
|
||||||
|
CONFIG_CAN - Enables CAN support (one or both of CONFIG_STM32_CAN1 or
|
||||||
|
CONFIG_STM32_CAN2 must also be defined)
|
||||||
|
CONFIG_CAN_EXTID - Enables support for the 29-bit extended ID. Default
|
||||||
|
Standard 11-bit IDs.
|
||||||
|
CONFIG_CAN_FIFOSIZE - The size of the circular buffer of CAN messages.
|
||||||
|
Default: 8
|
||||||
|
CONFIG_CAN_NPENDINGRTR - The size of the list of pending RTR requests.
|
||||||
|
Default: 4
|
||||||
|
CONFIG_CAN_LOOPBACK - A CAN driver may or may not support a loopback
|
||||||
|
mode for testing. The STM32 CAN driver does support loopback mode.
|
||||||
|
CONFIG_STM32_CAN1_BAUD - CAN1 BAUD rate. Required if CONFIG_STM32_CAN1
|
||||||
|
is defined.
|
||||||
|
CONFIG_STM32_CAN2_BAUD - CAN1 BAUD rate. Required if CONFIG_STM32_CAN2
|
||||||
|
is defined.
|
||||||
|
CONFIG_STM32_CAN_TSEG1 - The number of CAN time quanta in segment 1.
|
||||||
|
Default: 6
|
||||||
|
CONFIG_STM32_CAN_TSEG2 - the number of CAN time quanta in segment 2.
|
||||||
|
Default: 7
|
||||||
|
CONFIG_STM32_CAN_REGDEBUG - If CONFIG_DEBUG_FEATURES is set, this will generate an
|
||||||
|
dump of all CAN registers.
|
||||||
|
|
||||||
|
STM32Tiny SPI Configuration
|
||||||
|
|
||||||
|
CONFIG_STM32_SPI_INTERRUPTS - Select to enable interrupt driven SPI
|
||||||
|
support. Non-interrupt-driven, poll-waiting is recommended if the
|
||||||
|
interrupt rate would be to high in the interrupt driven case.
|
||||||
|
CONFIG_STM32_SPIx_DMA - Use DMA to improve SPIx transfer performance.
|
||||||
|
Cannot be used with CONFIG_STM32_SPI_INTERRUPT.
|
||||||
|
|
||||||
|
Configurations
|
||||||
|
==============
|
||||||
|
|
||||||
|
Each STM32Tiny configuration is maintained in a sub-directory and
|
||||||
|
can be selected as follow:
|
||||||
|
|
||||||
|
tools/configure.sh STM32Tiny:<subdir>
|
||||||
|
|
||||||
|
Where <subdir> is one of the following:
|
||||||
|
|
||||||
|
nsh
|
||||||
|
---
|
||||||
|
|
||||||
|
Configures the NuttShell (nsh) located at apps/examples/nsh. This
|
||||||
|
configuration enables a console on UART1. Support for
|
||||||
|
builtin applications is enabled, but in the base configuration no
|
||||||
|
builtin applications are selected (see NOTES below).
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
|
||||||
|
..
|
||||||
|
1. This configuration uses the mconf-based configuration tool. To
|
||||||
|
change this configuration using that tool, you should:
|
||||||
|
|
||||||
|
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
||||||
|
see additional README.txt files in the NuttX tools repository.
|
||||||
|
|
||||||
|
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
||||||
|
reconfiguration process.
|
||||||
|
|
||||||
|
2. By default, this configuration uses the ARM EABI toolchain
|
||||||
|
for Windows and builds under Cygwin (or probably MSYS). That
|
||||||
|
can easily be reconfigured, of course.
|
||||||
|
|
||||||
|
CONFIG_HOST_WINDOWS=y : Builds under Windows
|
||||||
|
CONFIG_WINDOWS_CYGWIN=y : Using Cygwin
|
||||||
|
CONFIG_ARM_TOOLCHAIN_GNU_EABI=y : GNU EABI toolchain for Windows
|
||||||
|
|
||||||
|
3. This example supports the PWM test (apps/examples/pwm) but this must
|
||||||
|
be manually enabled by selecting:
|
||||||
|
|
||||||
|
CONFIG_PWM=y : Enable the generic PWM infrastructure
|
||||||
|
CONFIG_STM32_TIM3=y : Enable TIM3
|
||||||
|
CONFIG_STM32_TIM3_PWM=y : Use TIM3 to generate PWM output
|
||||||
|
CONFIG_STM32_TIM3_PARTIAL_REMAP=y : Required to have the port B5 as timer PWM output (channel 2)
|
||||||
|
CONFIG_STM32_TIM3_CHANNEL=2
|
||||||
|
|
||||||
|
See also apps/examples/README.txt
|
||||||
|
|
||||||
|
Note that the only supported board configuration uses the board LED as PWM output.
|
||||||
|
|
||||||
|
Special PWM-only debug options:
|
||||||
|
|
||||||
|
CONFIG_DEBUG_PWM_INFO
|
||||||
|
|
||||||
|
7. USB Support (CDC/ACM device)
|
||||||
|
|
||||||
|
CONFIG_STM32_OTGFS=y : STM32 OTG FS support
|
||||||
|
CONFIG_USBDEV=y : USB device support must be enabled
|
||||||
|
CONFIG_CDCACM=y : The CDC/ACM driver must be built
|
||||||
|
CONFIG_NSH_BUILTIN_APPS=y : NSH built-in application support must be enabled
|
||||||
|
CONFIG_NSH_ARCHINIT=y : To perform USB initialization
|
||||||
|
|
||||||
|
8. Using the USB console.
|
||||||
|
|
||||||
|
The STM32Tiny NSH configuration can be set up to use a USB CDC/ACM
|
||||||
|
(or PL2303) USB console. The normal way that you would configure the
|
||||||
|
the USB console would be to change the .config file like this:
|
||||||
|
|
||||||
|
CONFIG_STM32_OTGFS=y : STM32 OTG FS support
|
||||||
|
CONFIG_USART2_SERIAL_CONSOLE=n : Disable the USART2 console
|
||||||
|
CONFIG_DEV_CONSOLE=n : Inhibit use of /dev/console by other logic
|
||||||
|
CONFIG_USBDEV=y : USB device support must be enabled
|
||||||
|
CONFIG_CDCACM=y : The CDC/ACM driver must be built
|
||||||
|
CONFIG_CDCACM_CONSOLE=y : Enable the CDC/ACM USB console.
|
||||||
|
|
||||||
|
NOTE: When you first start the USB console, you have hit ENTER a few
|
||||||
|
times before NSH starts. The logic does this to prevent sending USB data
|
||||||
|
before there is anything on the host side listening for USB serial input.
|
||||||
|
|
||||||
|
9. Here is an alternative USB console configuration. The following
|
||||||
|
configuration will also create a NSH USB console but this version
|
||||||
|
will use /dev/console. Instead, it will use the normal /dev/ttyACM0
|
||||||
|
USB serial device for the console:
|
||||||
|
|
||||||
|
CONFIG_STM32_OTGFS=y : STM32 OTG FS support
|
||||||
|
CONFIG_USART2_SERIAL_CONSOLE=y : Keep the USART2 console
|
||||||
|
CONFIG_DEV_CONSOLE=y : /dev/console exists (but NSH won't use it)
|
||||||
|
CONFIG_USBDEV=y : USB device support must be enabled
|
||||||
|
CONFIG_CDCACM=y : The CDC/ACM driver must be built
|
||||||
|
CONFIG_CDCACM_CONSOLE=n : Don't use the CDC/ACM USB console.
|
||||||
|
CONFIG_NSH_USBCONSOLE=y : Instead use some other USB device for the console
|
||||||
|
|
||||||
|
The particular USB device that is used is:
|
||||||
|
|
||||||
|
CONFIG_NSH_USBCONDEV="/dev/ttyACM0"
|
||||||
|
|
||||||
|
The advantage of this configuration is only that it is easier to
|
||||||
|
bet working. This alternative does has some side effects:
|
||||||
|
|
||||||
|
- When any other device other than /dev/console is used for a user
|
||||||
|
interface, linefeeds (\n) will not be expanded to carriage return /
|
||||||
|
linefeeds (\r\n). You will need to set your terminal program to account
|
||||||
|
for this.
|
||||||
|
|
||||||
|
- /dev/console still exists and still refers to the serial port. So
|
||||||
|
you can still use certain kinds of debug output (see include/debug.h, all
|
||||||
|
of the debug output from interrupt handlers will be lost.
|
||||||
|
|
||||||
|
- But don't enable USB debug output! Since USB is console is used for
|
||||||
|
USB debug output and you are using a USB console, there will be
|
||||||
|
infinite loops and deadlocks: Debug output generates USB debug
|
||||||
|
output which generatates USB debug output, etc. If you want USB
|
||||||
|
debug output, you should consider enabling USB trace
|
||||||
|
(CONFIG_USBDEV_TRACE) and perhaps the USB monitor (CONFIG_USBMONITOR).
|
||||||
|
|
||||||
|
See the usbnsh configuration below for more information on configuring
|
||||||
|
USB trace output and the USB monitor.
|
||||||
|
|
||||||
|
usbnsh
|
||||||
|
------
|
||||||
|
|
||||||
|
This is another NSH example. If differs from other 'nsh' configurations
|
||||||
|
in that this configurations uses a USB serial device for console I/O.
|
||||||
|
|
||||||
|
NOTES:
|
||||||
|
|
||||||
|
..
|
||||||
|
1. This configuration uses the mconf-based configuration tool. To
|
||||||
|
change this configuration using that tool, you should:
|
||||||
|
|
||||||
|
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
||||||
|
see additional README.txt files in the NuttX tools repository.
|
||||||
|
|
||||||
|
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
||||||
|
reconfiguration process.
|
||||||
|
|
||||||
|
2. By default, this configuration uses the ARM EABI toolchain
|
||||||
|
for Windows and builds under Cygwin (or probably MSYS). That
|
||||||
|
can easily be reconfigured, of course.
|
||||||
|
|
||||||
|
CONFIG_HOST_WINDOWS=y : Builds under Windows
|
||||||
|
CONFIG_WINDOWS_CYGWIN=y : Using Cygwin
|
||||||
|
CONFIG_ARM_TOOLCHAIN_GNU_EABI=y : GNU EABI toolchain for Windows
|
||||||
|
|
||||||
|
3. This configuration does have UART2 output enabled and set up as
|
||||||
|
the system logging device:
|
||||||
|
|
||||||
|
CONFIG_SYSLOG_CHAR=y : Use a character device for system logging
|
||||||
|
CONFIG_SYSLOG_DEVPATH="/dev/ttyS0" : UART2 will be /dev/ttyS0
|
||||||
|
|
||||||
|
However, there is nothing to generate SYSLOG output in the default
|
||||||
|
configuration so nothing should appear on UART2 unless you enable
|
||||||
|
some debug output or enable the USB monitor.
|
||||||
|
|
||||||
|
4. Enabling USB monitor SYSLOG output. If tracing is enabled, the USB
|
||||||
|
device will save encoded trace output in in-memory buffer; if the
|
||||||
|
USB monitor is enabled, that trace buffer will be periodically
|
||||||
|
emptied and dumped to the system logging device (UART2 in this
|
||||||
|
configuration):
|
||||||
|
|
||||||
|
CONFIG_USBDEV_TRACE=y : Enable USB trace feature
|
||||||
|
CONFIG_USBDEV_TRACE_NRECORDS=128 : Buffer 128 records in memory
|
||||||
|
CONFIG_NSH_USBDEV_TRACE=n : No builtin tracing from NSH
|
||||||
|
CONFIG_NSH_ARCHINIT=y : Automatically start the USB monitor
|
||||||
|
CONFIG_USBMONITOR=y : Enable the USB monitor daemon
|
||||||
|
CONFIG_USBMONITOR_STACKSIZE=2048 : USB monitor daemon stack size
|
||||||
|
CONFIG_USBMONITOR_PRIORITY=50 : USB monitor daemon priority
|
||||||
|
CONFIG_USBMONITOR_INTERVAL=2 : Dump trace data every 2 seconds
|
||||||
|
|
||||||
|
CONFIG_USBMONITOR_TRACEINIT=y : Enable TRACE output
|
||||||
|
CONFIG_USBMONITOR_TRACECLASS=y
|
||||||
|
CONFIG_USBMONITOR_TRACETRANSFERS=y
|
||||||
|
CONFIG_USBMONITOR_TRACECONTROLLER=y
|
||||||
|
CONFIG_USBMONITOR_TRACEINTERRUPTS=y
|
||||||
|
|
||||||
|
5. By default, this project assumes that you are *NOT* using the DFU
|
||||||
|
bootloader.
|
||||||
|
|
||||||
|
Using the Prolifics PL2303 Emulation
|
||||||
|
------------------------------------
|
||||||
|
You could also use the non-standard PL2303 serial device instead of
|
||||||
|
the standard CDC/ACM serial device by changing:
|
||||||
|
|
||||||
|
CONFIG_CDCACM=y : Disable the CDC/ACM serial device class
|
||||||
|
CONFIG_CDCACM_CONSOLE=y : The CDC/ACM serial device is NOT the console
|
||||||
|
CONFIG_PL2303=y : The Prolifics PL2303 emulation is enabled
|
||||||
|
CONFIG_PL2303_CONSOLE=y : The PL2303 serial device is the console
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
===============
|
||||||
|
STM32BUTTERFLY2
|
||||||
|
===============
|
||||||
File diff suppressed because it is too large
Load Diff
+15
-18
@@ -1,16 +1,10 @@
|
|||||||
README
|
===================
|
||||||
======
|
ST STM32VLDiscovery
|
||||||
|
===================
|
||||||
|
|
||||||
This README discusses issues unique to NuttX configurations for the STMicro
|
This README discusses issues unique to NuttX configurations for the STMicro
|
||||||
STM32VLDiscovery (Value Line Discovery) board.
|
STM32VLDiscovery (Value Line Discovery) board.
|
||||||
|
|
||||||
Contents
|
|
||||||
========
|
|
||||||
|
|
||||||
- LEDs
|
|
||||||
- UARTs
|
|
||||||
- "STMicro STM32F100RB generic" specific Configuration Options
|
|
||||||
- Configurations
|
|
||||||
|
|
||||||
LEDs
|
LEDs
|
||||||
====
|
====
|
||||||
@@ -20,7 +14,7 @@ You should configure the port and pin number in
|
|||||||
boards/arm/stm32/stm32vldiscovery/src/stm32vldiscovery.h. This LED is not used by
|
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 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
|
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:
|
to encode OS-related events as follows::
|
||||||
|
|
||||||
SYMBOL Meaning LED1*
|
SYMBOL Meaning LED1*
|
||||||
green
|
green
|
||||||
@@ -42,7 +36,7 @@ UART
|
|||||||
Default USART/UART Configuration
|
Default USART/UART Configuration
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
USART1 is enabled in all configurations (see */defconfig). RX and TX are
|
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
|
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
|
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.
|
RX pin (PA10) of your board besides, of course, the GND pin.
|
||||||
@@ -50,6 +44,8 @@ RX pin (PA10) of your board besides, of course, the GND pin.
|
|||||||
"STMicro STM32F100RB generic" specific Configuration Options
|
"STMicro STM32F100RB generic" specific Configuration Options
|
||||||
============================================================
|
============================================================
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
CONFIG_ARCH - Identifies the arch/ subdirectory. This should
|
CONFIG_ARCH - Identifies the arch/ subdirectory. This should
|
||||||
be set to:
|
be set to:
|
||||||
|
|
||||||
@@ -109,7 +105,7 @@ RX pin (PA10) of your board besides, of course, the GND pin.
|
|||||||
|
|
||||||
CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
|
CONFIG_ARCH_STACKDUMP - Do stack dumps after assertions
|
||||||
|
|
||||||
Individual subsystems can be enabled:
|
Individual subsystems can be enabled::
|
||||||
|
|
||||||
AHB
|
AHB
|
||||||
----
|
----
|
||||||
@@ -202,17 +198,18 @@ Configurations
|
|||||||
==============
|
==============
|
||||||
|
|
||||||
Each STMicro STM32F100RB generic configuration is maintained in a sub-directory
|
Each STMicro STM32F100RB generic configuration is maintained in a sub-directory
|
||||||
and can be selected as follow:
|
and can be selected as follow::
|
||||||
|
|
||||||
tools/configure.sh stm32vldiscovery:<subdir>
|
tools/configure.sh stm32vldiscovery:<subdir>
|
||||||
|
|
||||||
Where <subdir> is one of the following:
|
Where <subdir> is one of the following:
|
||||||
|
|
||||||
nsh:
|
nsh
|
||||||
---
|
---
|
||||||
Configures the NuttShell (nsh) located at apps/examples/nsh. The
|
|
||||||
Configuration enables only the serial NSH interfaces.
|
|
||||||
|
|
||||||
Default toolchain:
|
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
|
CONFIG_ARM_TOOLCHAIN_GNU_EABI=y : GNU EABI toolchain for Linux
|
||||||
+208
-189
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,22 @@
|
|||||||
|
==========
|
||||||
|
ST STM32F1
|
||||||
|
==========
|
||||||
|
|
||||||
|
Supported MCUs
|
||||||
|
==============
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
Peripheral Support
|
||||||
|
==================
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
Supported Boards
|
||||||
|
================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:glob:
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
boards/*/*
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,120 +0,0 @@
|
|||||||
README
|
|
||||||
======
|
|
||||||
|
|
||||||
This README discusses issues/thoughts unique to NuttX configuration(s) for the
|
|
||||||
ET-STM32 Stamp board from Futurlec (https://www.futurlec.com/ET-STM32_Stamp.shtml).
|
|
||||||
|
|
||||||
Microprocessor: 32-bit ARM Cortex M3 at 72MHz STM32F103RET6
|
|
||||||
Memory: 512 KB Flash and 64 KB SRAM
|
|
||||||
I/O Pins Out: 48
|
|
||||||
ADCs: 16 (at 12-bit resolution)
|
|
||||||
DACs: 2 (at 12-bit resolution)
|
|
||||||
Peripherals: RTC, 4 timers, 2 I2Cs, 3 SPI ports, 1 on-board UART (upto 5 channels)
|
|
||||||
Other: Sleep, stop, and standby modes; serial wire debug and JTAG interfaces
|
|
||||||
|
|
||||||
Please see link below for board specific details:
|
|
||||||
|
|
||||||
https://www.futurlec.com/ET-STM32_Stamp_Technical.shtml
|
|
||||||
|
|
||||||
This configuration supports the ET-STM32 Stamp module.
|
|
||||||
|
|
||||||
Contents
|
|
||||||
========
|
|
||||||
|
|
||||||
- Development Environment
|
|
||||||
- Flashing/Programming
|
|
||||||
- Configurations
|
|
||||||
|
|
||||||
Development Environment
|
|
||||||
=======================
|
|
||||||
|
|
||||||
Either Linux (recommended), Mac or Cygwin on Windows can be used for the development
|
|
||||||
environment. The source has been built only using the GNU (Cortex M) toolchain.
|
|
||||||
Other toolchains will likely cause problems.
|
|
||||||
|
|
||||||
WSL (Windows Subsystem for Linux) was used to develop, compile and test the NuttX
|
|
||||||
build for the ET-STM32 Stamp platform.
|
|
||||||
|
|
||||||
Flashing/Programming
|
|
||||||
====================
|
|
||||||
|
|
||||||
Prerequisites:
|
|
||||||
|
|
||||||
1. The ET-STM32 Stamp module from Futurlec.
|
|
||||||
|
|
||||||
2. An RS232 connection cable such as the one in this link: (Part code: RS232CONN):
|
|
||||||
https://www.futurlec.com/DevBoardAccessories.shtml
|
|
||||||
|
|
||||||
It has a 4-pin connection header on one end and an RS-232 (DB9) female connector on
|
|
||||||
the other. The 4-pin connector can be directly plugged onto the Stamp module.
|
|
||||||
|
|
||||||
3. An RS232 to USB converter cable. Ensure that a suitable driver is installed for
|
|
||||||
the converter cable. When the cable is plugged in (for example), my PC lists the
|
|
||||||
assigned port with this name: "USB-SERIAL CH340 (COM2)".
|
|
||||||
|
|
||||||
Assuming Windows 10, navigate to: This PC -> Manage -> Device Manager -> Ports.
|
|
||||||
|
|
||||||
4. ST's Flash loader demonstrator tool. You can download it from here:
|
|
||||||
https://www.st.com/en/development-tools/flasher-stm32.html
|
|
||||||
|
|
||||||
To install the NuttX firmware (nuttx.bin) on the ET-STM32 Stamp:
|
|
||||||
|
|
||||||
1. First, power the Stamp module with a 3.3 VDC power supply. I made my own
|
|
||||||
Stamp module fixture using a 3.3 VDC switching regulator, a prototype PCB card
|
|
||||||
and some solder.
|
|
||||||
|
|
||||||
2. Insert the RS232CONN into the 4-pin on-board header. The other end should be
|
|
||||||
connected to the USB port of the PC using the RS232-USB converter.
|
|
||||||
|
|
||||||
3. Set the BOOT1 jumper on your board to the ISP position.
|
|
||||||
|
|
||||||
4. Press the BOOT0 switch. The green "BOOT0=1" LED should light up.
|
|
||||||
|
|
||||||
5. Reset the board by pressing on the RESET button.
|
|
||||||
|
|
||||||
6. Using the ST Flash loader demonstrator to download the NuttX binary image.
|
|
||||||
|
|
||||||
7. Wait until programming is completed and press "Finish". Toggle the
|
|
||||||
BOOT0 switch again. Reset the board.
|
|
||||||
|
|
||||||
You will now be presented with the NuttShell (NSH). Enjoy.
|
|
||||||
|
|
||||||
Configurations
|
|
||||||
==============
|
|
||||||
|
|
||||||
Information Common to All Configurations
|
|
||||||
----------------------------------------
|
|
||||||
The ET-STM32 Stamp configuration is maintained in a sub-directory and can be
|
|
||||||
selected as follow:
|
|
||||||
|
|
||||||
tools/configure.sh et-stm32-stamp:<subdir>
|
|
||||||
|
|
||||||
Before building, make sure the PATH environment variable includes the
|
|
||||||
correct path to the directory than holds your toolchain binaries.
|
|
||||||
|
|
||||||
And then build NuttX by simply typing the following. At the conclusion of
|
|
||||||
the make, the nuttx binary will reside in an ELF file called, simply, nuttx.
|
|
||||||
|
|
||||||
make
|
|
||||||
|
|
||||||
The <subdir> that is provided above as an argument to the tools/configure.sh
|
|
||||||
must be in one of the following.
|
|
||||||
|
|
||||||
NOTES:
|
|
||||||
|
|
||||||
1. These configurations use the mconf-based configuration tool. To
|
|
||||||
change any of these configurations using that tool, you should:
|
|
||||||
|
|
||||||
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
|
||||||
see additional README.txt files in the NuttX tools repository.
|
|
||||||
|
|
||||||
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
|
||||||
reconfiguration process.
|
|
||||||
|
|
||||||
Configuration Sub-directories
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
nsh:
|
|
||||||
|
|
||||||
This configuration directory provide the basic NuttShell (NSH).
|
|
||||||
A serial console is provided on USART1.
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,218 +0,0 @@
|
|||||||
README
|
|
||||||
======
|
|
||||||
|
|
||||||
This README discusses issues unique to NuttX configurations for the
|
|
||||||
maple board from LeafLabs (http://leaflabs.com).
|
|
||||||
|
|
||||||
Microprocessor: 32-bit ARM Cortex M3 at 72MHz STM32F103RBT6 (STM32F103CBT6 for mini version)
|
|
||||||
Memory: 120 KB Flash and 20 KB SRAM
|
|
||||||
I/O Pins Out: 43 (34 for mini version)
|
|
||||||
ADCs: 9 (at 12-bit resolution)
|
|
||||||
Peripherals: 4 timers, 2 I2Cs, 2 SPI ports, 3 USARTs
|
|
||||||
Other: Sleep, stop, and standby modes; serial wire debug and JTAG interfaces
|
|
||||||
|
|
||||||
Please see below link for a list of maple devices and documentations.
|
|
||||||
|
|
||||||
http://leaflabs.com/devices
|
|
||||||
http://leaflabs.com/docs
|
|
||||||
|
|
||||||
This config supports Maple and Maple Mini.
|
|
||||||
|
|
||||||
Contents
|
|
||||||
========
|
|
||||||
|
|
||||||
- Development Environment
|
|
||||||
- DFU
|
|
||||||
- Configurations
|
|
||||||
|
|
||||||
Development Environment
|
|
||||||
=======================
|
|
||||||
|
|
||||||
Either Linux (recommended), Mac or Cygwin on Windows can be used for the development
|
|
||||||
environment. The source has been built only using the GNU toolchain (see below).
|
|
||||||
Other toolchains will likely cause problems.
|
|
||||||
|
|
||||||
DFU
|
|
||||||
===
|
|
||||||
|
|
||||||
The linker files in these projects can be configured to indicate that you
|
|
||||||
will be loading code using STMicro built-in USB Device Firmware Upgrade (DFU)
|
|
||||||
loader or via some JTAG emulator. You can specify the DFU bootloader by
|
|
||||||
adding the following line:
|
|
||||||
|
|
||||||
CONFIG_STM32_DFU=y
|
|
||||||
|
|
||||||
to your .config file. Most of the configurations in this directory are set
|
|
||||||
up to use the DFU loader.
|
|
||||||
|
|
||||||
If CONFIG_STM32_DFU is defined, the code will not be positioned at the beginning
|
|
||||||
of FLASH (0x08000000) but will be offset to 0x08005000. This offset is needed
|
|
||||||
to make space for the DFU loader and 0x08005000 is where the DFU loader expects
|
|
||||||
to find new applications at boot time. If you need to change that origin for some
|
|
||||||
other bootloader, you will need to edit the file(s) ld.script.dfu for each
|
|
||||||
configuration. In LeafLabs case, we are using maple bootloader:
|
|
||||||
|
|
||||||
http://leaflabs.com/docs/bootloader.html
|
|
||||||
|
|
||||||
For Linux or Mac:
|
|
||||||
----------------
|
|
||||||
|
|
||||||
While on Linux or Mac, we can use dfu-util to upload nuttx binary.
|
|
||||||
|
|
||||||
1. Make sure we have installed dfu-util. (From yum, apt-get or build from source.)
|
|
||||||
2. Start the DFU loader (bootloader) on the maple board. You do this by
|
|
||||||
resetting the board while holding the "Key" button. Windows should
|
|
||||||
recognize that the DFU loader has been installed.
|
|
||||||
3. Flash the nuttx.bin to the board use dfu-util. Here's an example:
|
|
||||||
|
|
||||||
$ dfu-util -a1 -d 1eaf:0003 -D nuttx.bin -R
|
|
||||||
|
|
||||||
For anything not clear, we can refer to LeafLabs official document:
|
|
||||||
|
|
||||||
http://leaflabs.com/docs/unix-toolchain.html
|
|
||||||
|
|
||||||
For Windows:
|
|
||||||
-----------
|
|
||||||
|
|
||||||
The DFU SE PC-based software is available from the STMicro website,
|
|
||||||
http://www.st.com. General usage instructions:
|
|
||||||
|
|
||||||
1. Connect the maple board to your computer using a USB
|
|
||||||
cable.
|
|
||||||
2. Start the DFU loader on the maple board. You do this by
|
|
||||||
resetting the board while holding the "Key" button. Windows should
|
|
||||||
recognize that the DFU loader has been installed.
|
|
||||||
3. Run the DFU SE program to load nuttx.bin into FLASH.
|
|
||||||
|
|
||||||
What if the DFU loader is not in FLASH? The loader code is available
|
|
||||||
inside of the Demo directory of the USBLib ZIP file that can be downloaded
|
|
||||||
from the STMicro Website. You can build it using RIDE (or other toolchains);
|
|
||||||
you will need a JTAG emulator to burn it into FLASH the first time.
|
|
||||||
|
|
||||||
In order to use STMicro's built-in DFU loader, you will have to get
|
|
||||||
the NuttX binary into a special format with a .dfu extension. The
|
|
||||||
DFU SE PC_based software installation includes a file "DFU File Manager"
|
|
||||||
conversion program that a file in Intel Hex format to the special DFU
|
|
||||||
format. When you successfully build NuttX, you will find a file called
|
|
||||||
nutt.hex in the top-level directory. That is the file that you should
|
|
||||||
provide to the DFU File Manager. You will end up with a file called
|
|
||||||
nuttx.dfu that you can use with the STMicro DFU SE program.
|
|
||||||
|
|
||||||
Configurations
|
|
||||||
==============
|
|
||||||
|
|
||||||
Information Common to All Configurations
|
|
||||||
----------------------------------------
|
|
||||||
Each Maple configuration is maintained in a sub-directory and
|
|
||||||
can be selected as follow:
|
|
||||||
|
|
||||||
tools/configure.sh maple:<subdir>
|
|
||||||
|
|
||||||
Before building, make sure the PATH environment variable includes the
|
|
||||||
correct path to the directory than holds your toolchain binaries.
|
|
||||||
|
|
||||||
And then build NuttX by simply typing the following. At the conclusion of
|
|
||||||
the make, the nuttx binary will reside in an ELF file called, simply, nuttx.
|
|
||||||
|
|
||||||
make
|
|
||||||
|
|
||||||
The <subdir> that is provided above as an argument to the tools/configure.sh
|
|
||||||
must be is one of the following.
|
|
||||||
|
|
||||||
NOTES:
|
|
||||||
|
|
||||||
1. These configurations use the mconf-based configuration tool. To
|
|
||||||
change any of these configurations using that tool, you should:
|
|
||||||
|
|
||||||
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
|
||||||
see additional README.txt files in the NuttX tools repository.
|
|
||||||
|
|
||||||
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
|
||||||
reconfiguration process.
|
|
||||||
|
|
||||||
Configuration Sub-directories
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
nsh:
|
|
||||||
|
|
||||||
This configuration directory provide the basic NuttShell (NSH).
|
|
||||||
A serial console is provided on USART1.
|
|
||||||
|
|
||||||
NOTES:
|
|
||||||
1. Currently configured for the STM32F103CB. But this is easily
|
|
||||||
reconfigured:
|
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP_STM32F103RB=n
|
|
||||||
CONFIG_ARCH_CHIP_STM32F103CB=y
|
|
||||||
|
|
||||||
2. Support for the I2C tool has been disabled, but can be restored
|
|
||||||
with following configure options:
|
|
||||||
|
|
||||||
System Type -> Peripherals
|
|
||||||
CONFIG_STM32_I2C1=y
|
|
||||||
CONFIG_STM32_I2C2=y
|
|
||||||
CONFIG_STM32_I2CTIMEOSEC=1
|
|
||||||
CONFIG_STM32_I2CTIMEOMS=500
|
|
||||||
CONFIG_STM32_I2CTIMEOTICKS=500
|
|
||||||
|
|
||||||
Drivers
|
|
||||||
CONFIG_I2C=y
|
|
||||||
|
|
||||||
Applications -> System Add-Ons
|
|
||||||
CONFIG_SYSTEM_I2CTOOL=y
|
|
||||||
CONFIG_I2CTOOL_MINBUS=1
|
|
||||||
CONFIG_I2CTOOL_MAXBUS=2
|
|
||||||
CONFIG_I2CTOOL_MINADDR=0x0
|
|
||||||
CONFIG_I2CTOOL_MAXADDR=0xf0
|
|
||||||
CONFIG_I2CTOOL_MAXREGADDR=0xff
|
|
||||||
CONFIG_I2CTOOL_DEFFREQ=100000
|
|
||||||
|
|
||||||
nx:
|
|
||||||
|
|
||||||
This configuration has been used to bring up the Sharp Memory LCD
|
|
||||||
on a custom board. This NX configuration was used for testing that
|
|
||||||
LCD. Debug output will appear on USART1.
|
|
||||||
|
|
||||||
NOTES:
|
|
||||||
1. Currently configured for the STM32F103CB. But this is easily
|
|
||||||
reconfigured:
|
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP_STM32F103RB=n
|
|
||||||
CONFIG_ARCH_CHIP_STM32F103CB=y
|
|
||||||
|
|
||||||
2. You won't be able to buy a Sharp Memory LCD to use with your
|
|
||||||
Maple. If you want one, you will have to make one yourself.
|
|
||||||
|
|
||||||
usbnsh:
|
|
||||||
|
|
||||||
This is an alternative NuttShell (NSH) configuration that uses a USB
|
|
||||||
serial console for interaction.
|
|
||||||
|
|
||||||
NOTES:
|
|
||||||
1. Currently configured for the STM32F103CB. But this is easily
|
|
||||||
reconfigured:
|
|
||||||
|
|
||||||
CONFIG_ARCH_CHIP_STM32F103RB=n
|
|
||||||
CONFIG_ARCH_CHIP_STM32F103CB=y
|
|
||||||
|
|
||||||
2. Support for the I2C tool has been disabled, but can be restored
|
|
||||||
with following configure options:
|
|
||||||
|
|
||||||
System Type -> Peripherals
|
|
||||||
CONFIG_STM32_I2C1=y
|
|
||||||
CONFIG_STM32_I2C2=y
|
|
||||||
CONFIG_STM32_I2CTIMEOSEC=1
|
|
||||||
CONFIG_STM32_I2CTIMEOMS=500
|
|
||||||
CONFIG_STM32_I2CTIMEOTICKS=500
|
|
||||||
|
|
||||||
Drivers
|
|
||||||
CONFIG_I2C=y
|
|
||||||
|
|
||||||
Applications -> System Add-Ons
|
|
||||||
CONFIG_SYSTEM_I2CTOOL=y
|
|
||||||
CONFIG_I2CTOOL_MINBUS=1
|
|
||||||
CONFIG_I2CTOOL_MAXBUS=2
|
|
||||||
CONFIG_I2CTOOL_MINADDR=0x0
|
|
||||||
CONFIG_I2CTOOL_MAXADDR=0xf0
|
|
||||||
CONFIG_I2CTOOL_MAXREGADDR=0xff
|
|
||||||
CONFIG_I2CTOOL_DEFFREQ=100000
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,447 +0,0 @@
|
|||||||
README
|
|
||||||
======
|
|
||||||
|
|
||||||
This README discusses issues unique to NuttX configurations for the
|
|
||||||
STM32 Tiny development board.
|
|
||||||
|
|
||||||
This board is available from several vendors on the net, and may
|
|
||||||
be sold under different names. It is based on a STM32 F103C8T6 MCU, and
|
|
||||||
is (always ?) bundled with a nRF24L01 wireless communication module.
|
|
||||||
|
|
||||||
Contents
|
|
||||||
========
|
|
||||||
|
|
||||||
- LEDs
|
|
||||||
- PWM
|
|
||||||
- UARTs
|
|
||||||
- Timer Inputs/Outputs
|
|
||||||
- STM32 Tiny -specific Configuration Options
|
|
||||||
- Configurations
|
|
||||||
|
|
||||||
LEDs
|
|
||||||
====
|
|
||||||
|
|
||||||
The STM32Tiny board has only one software controllable LED.
|
|
||||||
This LED can be used by the board port when CONFIG_ARCH_LEDS option is
|
|
||||||
enabled.
|
|
||||||
|
|
||||||
If enabled the LED is simply turned on when the board boots
|
|
||||||
successfully, and is blinking on panic / assertion failed.
|
|
||||||
|
|
||||||
PWM
|
|
||||||
===
|
|
||||||
|
|
||||||
The STM32 Tiny has no real on-board PWM devices, but the board can be
|
|
||||||
configured to output a pulse train using TIM3 CH2 on the GPIO line B.5
|
|
||||||
(connected to the LED).
|
|
||||||
Please note that the CONFIG_STM32_TIM3_PARTIAL_REMAP option must be enabled
|
|
||||||
in this case.
|
|
||||||
|
|
||||||
UARTs
|
|
||||||
=====
|
|
||||||
|
|
||||||
UART/USART PINS
|
|
||||||
---------------
|
|
||||||
|
|
||||||
USART1
|
|
||||||
RX PA10
|
|
||||||
TX PA9
|
|
||||||
USART2
|
|
||||||
CK PA4
|
|
||||||
CTS PA0*
|
|
||||||
RTS PA1
|
|
||||||
RX PA3
|
|
||||||
TX PA2
|
|
||||||
USART3
|
|
||||||
CK PB12*
|
|
||||||
CTS PB13*
|
|
||||||
RTS PB14*
|
|
||||||
RX PB11
|
|
||||||
TX PB10
|
|
||||||
|
|
||||||
* these IO lines are intended to be used by the wireless module on the board.
|
|
||||||
|
|
||||||
Default USART/UART Configuration
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
USART1 (RX & TX only) is available through the RS-232 port on the board. A MAX232 chip converts
|
|
||||||
voltage to RS-232 level. This serial port can be used to flash a firmware using the boot loader
|
|
||||||
integrated in the MCU.
|
|
||||||
|
|
||||||
Timer Inputs/Outputs
|
|
||||||
====================
|
|
||||||
|
|
||||||
TIM1
|
|
||||||
CH1 PA8
|
|
||||||
CH2 PA9*
|
|
||||||
CH3 PA10*
|
|
||||||
CH4 PA11*
|
|
||||||
TIM2
|
|
||||||
CH1 PA0*, PA15, PA5
|
|
||||||
CH2 PA1, PB3
|
|
||||||
CH3 PA2, PB10*
|
|
||||||
CH4 PA3, PB11
|
|
||||||
TIM3
|
|
||||||
CH1 PA6, PB4
|
|
||||||
CH2 PA7, PB5*
|
|
||||||
CH3 PB0
|
|
||||||
CH4 PB1*
|
|
||||||
TIM4
|
|
||||||
CH1 PB6*
|
|
||||||
CH2 PB7
|
|
||||||
CH3 PB8
|
|
||||||
CH4 PB9*
|
|
||||||
|
|
||||||
* Indicates pins that have other on-board functions and should be used only
|
|
||||||
with care (See board datasheet).
|
|
||||||
|
|
||||||
STM32 Tiny - 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_STM32F103C8=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=stm32_tiny
|
|
||||||
|
|
||||||
CONFIG_ARCH_BOARD_name - For use in C code
|
|
||||||
|
|
||||||
CONFIG_ARCH_BOARD_STM32_TINY=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=20480 (20Kb)
|
|
||||||
|
|
||||||
CONFIG_RAM_START - The start address of installed DRAM
|
|
||||||
|
|
||||||
CONFIG_RAM_START=0x20000000
|
|
||||||
|
|
||||||
CONFIG_ARCH_LEDS - Use LEDs to show state. Unique to boards that
|
|
||||||
have LEDs
|
|
||||||
|
|
||||||
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_BKPSRAM
|
|
||||||
|
|
||||||
APB1
|
|
||||||
----
|
|
||||||
CONFIG_STM32_TIM2
|
|
||||||
CONFIG_STM32_TIM3
|
|
||||||
CONFIG_STM32_TIM4
|
|
||||||
CONFIG_STM32_WWDG
|
|
||||||
CONFIG_STM32_IWDG
|
|
||||||
CONFIG_STM32_SPI2
|
|
||||||
CONFIG_STM32_USART2
|
|
||||||
CONFIG_STM32_USART3
|
|
||||||
CONFIG_STM32_I2C1
|
|
||||||
CONFIG_STM32_I2C2
|
|
||||||
CONFIG_STM32_CAN1
|
|
||||||
CONFIG_STM32_PWR -- Required for RTC
|
|
||||||
|
|
||||||
APB2
|
|
||||||
----
|
|
||||||
CONFIG_STM32_TIM1
|
|
||||||
CONFIG_STM32_USART1
|
|
||||||
CONFIG_STM32_ADC1
|
|
||||||
CONFIG_STM32_ADC2
|
|
||||||
CONFIG_STM32_SPI1
|
|
||||||
|
|
||||||
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 or ADC conversion.
|
|
||||||
Note that ADC require two definitions: Not only do you have
|
|
||||||
to assign the timer (n) for used by the ADC, but then you also have to
|
|
||||||
configure which ADC (m) it is assigned to.
|
|
||||||
|
|
||||||
CONFIG_STM32_TIMn_PWM Reserve timer n for use by PWM, n=1,..,14
|
|
||||||
CONFIG_STM32_TIMn_ADC Reserve timer n for use by ADC, n=1,..,14
|
|
||||||
CONFIG_STM32_TIMn_ADCm Reserve timer n to trigger ADCm, n=1,..,14, m=1,..,3
|
|
||||||
|
|
||||||
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 only SW-DP 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
|
|
||||||
|
|
||||||
STM32Tiny specific device driver settings
|
|
||||||
|
|
||||||
CONFIG_U[S]ARTn_SERIAL_CONSOLE - selects the USARTn (n=1,2,3)
|
|
||||||
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
|
|
||||||
|
|
||||||
STM32Tiny CAN Configuration
|
|
||||||
|
|
||||||
CONFIG_CAN - Enables CAN support (one or both of CONFIG_STM32_CAN1 or
|
|
||||||
CONFIG_STM32_CAN2 must also be defined)
|
|
||||||
CONFIG_CAN_EXTID - Enables support for the 29-bit extended ID. Default
|
|
||||||
Standard 11-bit IDs.
|
|
||||||
CONFIG_CAN_FIFOSIZE - The size of the circular buffer of CAN messages.
|
|
||||||
Default: 8
|
|
||||||
CONFIG_CAN_NPENDINGRTR - The size of the list of pending RTR requests.
|
|
||||||
Default: 4
|
|
||||||
CONFIG_CAN_LOOPBACK - A CAN driver may or may not support a loopback
|
|
||||||
mode for testing. The STM32 CAN driver does support loopback mode.
|
|
||||||
CONFIG_STM32_CAN1_BAUD - CAN1 BAUD rate. Required if CONFIG_STM32_CAN1
|
|
||||||
is defined.
|
|
||||||
CONFIG_STM32_CAN2_BAUD - CAN1 BAUD rate. Required if CONFIG_STM32_CAN2
|
|
||||||
is defined.
|
|
||||||
CONFIG_STM32_CAN_TSEG1 - The number of CAN time quanta in segment 1.
|
|
||||||
Default: 6
|
|
||||||
CONFIG_STM32_CAN_TSEG2 - the number of CAN time quanta in segment 2.
|
|
||||||
Default: 7
|
|
||||||
CONFIG_STM32_CAN_REGDEBUG - If CONFIG_DEBUG_FEATURES is set, this will generate an
|
|
||||||
dump of all CAN registers.
|
|
||||||
|
|
||||||
STM32Tiny SPI Configuration
|
|
||||||
|
|
||||||
CONFIG_STM32_SPI_INTERRUPTS - Select to enable interrupt driven SPI
|
|
||||||
support. Non-interrupt-driven, poll-waiting is recommended if the
|
|
||||||
interrupt rate would be to high in the interrupt driven case.
|
|
||||||
CONFIG_STM32_SPIx_DMA - Use DMA to improve SPIx transfer performance.
|
|
||||||
Cannot be used with CONFIG_STM32_SPI_INTERRUPT.
|
|
||||||
|
|
||||||
Configurations
|
|
||||||
==============
|
|
||||||
|
|
||||||
Each STM32Tiny configuration is maintained in a sub-directory and
|
|
||||||
can be selected as follow:
|
|
||||||
|
|
||||||
tools/configure.sh STM32Tiny:<subdir>
|
|
||||||
|
|
||||||
Where <subdir> is one of the following:
|
|
||||||
|
|
||||||
nsh:
|
|
||||||
---
|
|
||||||
Configures the NuttShell (nsh) located at apps/examples/nsh. This
|
|
||||||
configuration enables a console on UART1. Support for
|
|
||||||
builtin applications is enabled, but in the base configuration no
|
|
||||||
builtin applications are selected (see NOTES below).
|
|
||||||
|
|
||||||
NOTES:
|
|
||||||
|
|
||||||
1. This configuration uses the mconf-based configuration tool. To
|
|
||||||
change this configuration using that tool, you should:
|
|
||||||
|
|
||||||
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
|
||||||
see additional README.txt files in the NuttX tools repository.
|
|
||||||
|
|
||||||
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
|
||||||
reconfiguration process.
|
|
||||||
|
|
||||||
2. By default, this configuration uses the ARM EABI toolchain
|
|
||||||
for Windows and builds under Cygwin (or probably MSYS). That
|
|
||||||
can easily be reconfigured, of course.
|
|
||||||
|
|
||||||
CONFIG_HOST_WINDOWS=y : Builds under Windows
|
|
||||||
CONFIG_WINDOWS_CYGWIN=y : Using Cygwin
|
|
||||||
CONFIG_ARM_TOOLCHAIN_GNU_EABI=y : GNU EABI toolchain for Windows
|
|
||||||
|
|
||||||
3. This example supports the PWM test (apps/examples/pwm) but this must
|
|
||||||
be manually enabled by selecting:
|
|
||||||
|
|
||||||
CONFIG_PWM=y : Enable the generic PWM infrastructure
|
|
||||||
CONFIG_STM32_TIM3=y : Enable TIM3
|
|
||||||
CONFIG_STM32_TIM3_PWM=y : Use TIM3 to generate PWM output
|
|
||||||
CONFIG_STM32_TIM3_PARTIAL_REMAP=y : Required to have the port B5 as timer PWM output (channel 2)
|
|
||||||
CONFIG_STM32_TIM3_CHANNEL=2
|
|
||||||
|
|
||||||
See also apps/examples/README.txt
|
|
||||||
|
|
||||||
Note that the only supported board configuration uses the board LED as PWM output.
|
|
||||||
|
|
||||||
Special PWM-only debug options:
|
|
||||||
|
|
||||||
CONFIG_DEBUG_PWM_INFO
|
|
||||||
|
|
||||||
7. USB Support (CDC/ACM device)
|
|
||||||
|
|
||||||
CONFIG_STM32_OTGFS=y : STM32 OTG FS support
|
|
||||||
CONFIG_USBDEV=y : USB device support must be enabled
|
|
||||||
CONFIG_CDCACM=y : The CDC/ACM driver must be built
|
|
||||||
CONFIG_NSH_BUILTIN_APPS=y : NSH built-in application support must be enabled
|
|
||||||
CONFIG_NSH_ARCHINIT=y : To perform USB initialization
|
|
||||||
|
|
||||||
8. Using the USB console.
|
|
||||||
|
|
||||||
The STM32Tiny NSH configuration can be set up to use a USB CDC/ACM
|
|
||||||
(or PL2303) USB console. The normal way that you would configure the
|
|
||||||
the USB console would be to change the .config file like this:
|
|
||||||
|
|
||||||
CONFIG_STM32_OTGFS=y : STM32 OTG FS support
|
|
||||||
CONFIG_USART2_SERIAL_CONSOLE=n : Disable the USART2 console
|
|
||||||
CONFIG_DEV_CONSOLE=n : Inhibit use of /dev/console by other logic
|
|
||||||
CONFIG_USBDEV=y : USB device support must be enabled
|
|
||||||
CONFIG_CDCACM=y : The CDC/ACM driver must be built
|
|
||||||
CONFIG_CDCACM_CONSOLE=y : Enable the CDC/ACM USB console.
|
|
||||||
|
|
||||||
NOTE: When you first start the USB console, you have hit ENTER a few
|
|
||||||
times before NSH starts. The logic does this to prevent sending USB data
|
|
||||||
before there is anything on the host side listening for USB serial input.
|
|
||||||
|
|
||||||
9. Here is an alternative USB console configuration. The following
|
|
||||||
configuration will also create a NSH USB console but this version
|
|
||||||
will use /dev/console. Instead, it will use the normal /dev/ttyACM0
|
|
||||||
USB serial device for the console:
|
|
||||||
|
|
||||||
CONFIG_STM32_OTGFS=y : STM32 OTG FS support
|
|
||||||
CONFIG_USART2_SERIAL_CONSOLE=y : Keep the USART2 console
|
|
||||||
CONFIG_DEV_CONSOLE=y : /dev/console exists (but NSH won't use it)
|
|
||||||
CONFIG_USBDEV=y : USB device support must be enabled
|
|
||||||
CONFIG_CDCACM=y : The CDC/ACM driver must be built
|
|
||||||
CONFIG_CDCACM_CONSOLE=n : Don't use the CDC/ACM USB console.
|
|
||||||
CONFIG_NSH_USBCONSOLE=y : Instead use some other USB device for the console
|
|
||||||
|
|
||||||
The particular USB device that is used is:
|
|
||||||
|
|
||||||
CONFIG_NSH_USBCONDEV="/dev/ttyACM0"
|
|
||||||
|
|
||||||
The advantage of this configuration is only that it is easier to
|
|
||||||
bet working. This alternative does has some side effects:
|
|
||||||
|
|
||||||
- When any other device other than /dev/console is used for a user
|
|
||||||
interface, linefeeds (\n) will not be expanded to carriage return /
|
|
||||||
linefeeds (\r\n). You will need to set your terminal program to account
|
|
||||||
for this.
|
|
||||||
|
|
||||||
- /dev/console still exists and still refers to the serial port. So
|
|
||||||
you can still use certain kinds of debug output (see include/debug.h, all
|
|
||||||
of the debug output from interrupt handlers will be lost.
|
|
||||||
|
|
||||||
- But don't enable USB debug output! Since USB is console is used for
|
|
||||||
USB debug output and you are using a USB console, there will be
|
|
||||||
infinite loops and deadlocks: Debug output generates USB debug
|
|
||||||
output which generatates USB debug output, etc. If you want USB
|
|
||||||
debug output, you should consider enabling USB trace
|
|
||||||
(CONFIG_USBDEV_TRACE) and perhaps the USB monitor (CONFIG_USBMONITOR).
|
|
||||||
|
|
||||||
See the usbnsh configuration below for more information on configuring
|
|
||||||
USB trace output and the USB monitor.
|
|
||||||
|
|
||||||
usbnsh:
|
|
||||||
-------
|
|
||||||
|
|
||||||
This is another NSH example. If differs from other 'nsh' configurations
|
|
||||||
in that this configurations uses a USB serial device for console I/O.
|
|
||||||
|
|
||||||
NOTES:
|
|
||||||
|
|
||||||
1. This configuration uses the mconf-based configuration tool. To
|
|
||||||
change this configuration using that tool, you should:
|
|
||||||
|
|
||||||
a. Build and install the kconfig-mconf tool. See nuttx/README.txt
|
|
||||||
see additional README.txt files in the NuttX tools repository.
|
|
||||||
|
|
||||||
b. Execute 'make menuconfig' in nuttx/ in order to start the
|
|
||||||
reconfiguration process.
|
|
||||||
|
|
||||||
2. By default, this configuration uses the ARM EABI toolchain
|
|
||||||
for Windows and builds under Cygwin (or probably MSYS). That
|
|
||||||
can easily be reconfigured, of course.
|
|
||||||
|
|
||||||
CONFIG_HOST_WINDOWS=y : Builds under Windows
|
|
||||||
CONFIG_WINDOWS_CYGWIN=y : Using Cygwin
|
|
||||||
CONFIG_ARM_TOOLCHAIN_GNU_EABI=y : GNU EABI toolchain for Windows
|
|
||||||
|
|
||||||
3. This configuration does have UART2 output enabled and set up as
|
|
||||||
the system logging device:
|
|
||||||
|
|
||||||
CONFIG_SYSLOG_CHAR=y : Use a character device for system logging
|
|
||||||
CONFIG_SYSLOG_DEVPATH="/dev/ttyS0" : UART2 will be /dev/ttyS0
|
|
||||||
|
|
||||||
However, there is nothing to generate SYSLOG output in the default
|
|
||||||
configuration so nothing should appear on UART2 unless you enable
|
|
||||||
some debug output or enable the USB monitor.
|
|
||||||
|
|
||||||
4. Enabling USB monitor SYSLOG output. If tracing is enabled, the USB
|
|
||||||
device will save encoded trace output in in-memory buffer; if the
|
|
||||||
USB monitor is enabled, that trace buffer will be periodically
|
|
||||||
emptied and dumped to the system logging device (UART2 in this
|
|
||||||
configuration):
|
|
||||||
|
|
||||||
CONFIG_USBDEV_TRACE=y : Enable USB trace feature
|
|
||||||
CONFIG_USBDEV_TRACE_NRECORDS=128 : Buffer 128 records in memory
|
|
||||||
CONFIG_NSH_USBDEV_TRACE=n : No builtin tracing from NSH
|
|
||||||
CONFIG_NSH_ARCHINIT=y : Automatically start the USB monitor
|
|
||||||
CONFIG_USBMONITOR=y : Enable the USB monitor daemon
|
|
||||||
CONFIG_USBMONITOR_STACKSIZE=2048 : USB monitor daemon stack size
|
|
||||||
CONFIG_USBMONITOR_PRIORITY=50 : USB monitor daemon priority
|
|
||||||
CONFIG_USBMONITOR_INTERVAL=2 : Dump trace data every 2 seconds
|
|
||||||
|
|
||||||
CONFIG_USBMONITOR_TRACEINIT=y : Enable TRACE output
|
|
||||||
CONFIG_USBMONITOR_TRACECLASS=y
|
|
||||||
CONFIG_USBMONITOR_TRACETRANSFERS=y
|
|
||||||
CONFIG_USBMONITOR_TRACECONTROLLER=y
|
|
||||||
CONFIG_USBMONITOR_TRACEINTERRUPTS=y
|
|
||||||
|
|
||||||
5. By default, this project assumes that you are *NOT* using the DFU
|
|
||||||
bootloader.
|
|
||||||
|
|
||||||
Using the Prolifics PL2303 Emulation
|
|
||||||
------------------------------------
|
|
||||||
You could also use the non-standard PL2303 serial device instead of
|
|
||||||
the standard CDC/ACM serial device by changing:
|
|
||||||
|
|
||||||
CONFIG_CDCACM=y : Disable the CDC/ACM serial device class
|
|
||||||
CONFIG_CDCACM_CONSOLE=y : The CDC/ACM serial device is NOT the console
|
|
||||||
CONFIG_PL2303=y : The Prolifics PL2303 emulation is enabled
|
|
||||||
CONFIG_PL2303_CONSOLE=y : The PL2303 serial device is the console
|
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user