Olimex STM32-E407
The Olimex STM32-E407 configuration is based on the configuration olimex-stm32-h407 and stm32f4discovery.
Configurations
Instantiating Configurations
Each Olimex-STM32-E407 configuration is maintained in a sub-directory and can be selected as follow:
tools/configure.sh [OPTIONS] olimex-stm32-e407:<subdir>
Typical options include -l for a Linux host platform or -c for Cygwin host platform. See ‘tools/configure.sh -h’ for other options. And <subdir> is one of the sub-directories listed below.
Compile Firmware
Once you’ve set the proper configuration, you just need to execute the next command:
make
If everything goes find, it should return the next two files:
nuttx.hex
nuttx.bin
You can return more kinds of files by setting on menuconfig.
Flashing the Board
You can flash this board in different ways, but the easiest way is using ARM-USB-TINY-H JTAG flasher device. Connect this device to the JTAG connector and type the next command:
openocd -f interface/ftdi/olimex-arm-usb-tiny-h.cfg -f target/stm32f4x.cfg -c init -c "reset halt" -c "flash write_image erase nuttx.bin 0x08000000"
Configuration Directories
nsh
Configures the NuttShell (nsh) located at apps/examples/nsh. This configuration enables a console on UART2. Support for builtin applications is enabled, but in the base configuration no builtin applications are selected.
usbnsh
Configures the NuttShell (nsh) located at apps/examples/nsh. This configuration enables a console on USB_OTG1. Support for builtin applications is enabled, but in the base configuration no builtin applications are selected.
netnsh
Configures the NuttShell (nsh) located at examples/nsh. This configuration is focused on network testing.
bmp180
This is a configuration example for the BMP180 barometer sensor. This sensor works with I2C, you need to do the next connections:
BMP180 VIN -> Board 3.3V
BMP180 GND -> Board GND
BMP180 SCL -> Board PB6 (Arduino header D1)
BMP180 SDA -> Board PB7 (Arduino header D0)
This example is configured to work with the USBNSH instead of UART NSH, so the console will be shown over the USB_OTG1 connector.
On the console, type “ls /dev ” and if the registration process goes fine, you should see a device called “press0”. Now execute the app BMP180 to see the ambient pressure value.
dac
This is a configuration example to use the DAC1 of the board. The DAC1 is attached to the PA4 pin (Arduino header D10).
This example is configured to work with the USBNSH instead of UART NSH, so the console will be shown over the USB_OTG1 connector.
On the console, type “ls /dev ” and if the registration process goes fine, you should see a device called “dac0”. Now execute the app dac put a value at the output.
ina219
This is a configuration example for the INA219 DC current sensor. This sensor works with I2C, you need to do the next connections:
INA219 VIN -> Board 3.3V
INA219 GND -> Board GND
INA219 SCL -> Board PB6 (Arduino header D1)
INA219 SDA -> Board PB7 (Arduino header D0)
This example is configured to work with the USBNSH instead of UART NSH, so the console will be shown over the USB_OTG1 connector.
On the console, type “ls /dev ” and if the registration process goes fine, you should see a device called “ina219”. Now execute the app ina219 to see the ambient pressure value.
timer
This configuration set the proper configuration to use the timer1 of the board. This example is configured to work with the USBNSH instead of UART NSH, so the console will be shown over the USB_OTG1 connector.
On the console, type “ls /dev ” and if the registration process goes fine, you should see a device called “timer1”.
mrf24j40-mac
This configuration set the proper configuration to set the 802.15.4 communication layer with the MRF24J40 radio. This radio works with SPI, you need to do the next connections:
MRF24J40 VCC -> Board 3.3V
MRF24J40 GND -> Board GND
MRF24J40 SCLK -> Board PA5 (Arduino header D13)
MRF24J40 MISO -> Board PA6 (Arduino header D12)
MRF24J40 MOSI -> Board PB5 (Arduino header D11)
MRF24J40 CS -> Board PA4 (Arduino header D10)
MRF24J40 INT -> Board PG12 (Arduino header D8)
This example is configured to work with the USBNSH instead of UART NSH, so the console will be shown over the USB_OTG1 connector.
Once you’re on the console, you need to check if the initialization process was fine. To do so, you need to type “ls /dev” and you should see a device call “ieee0”. At this point we need to set-up the network, follow the next steps:
This is an example of how to configure a coordinator:
i8sak /dev/ieee0 startpan cd:ab
i8sak set chan 11
i8sak set saddr 42:01
i8sak acceptassoc
This is an example of how to configure the endpoint:
i8sak /dev/ieee0
i8sak set chan 11
i8sak set panid cd:ab
i8sak set saddr 42:02
i8sak set ep_saddr 42:01
i8sak assoc
mrf24j40-6lowpan
This configuration set the proper configuration to use 6lowpan protocol with the MRF24J40 radio. This radio works with SPI, you need to do the next connections:
MRF24J40 VCC -> Board 3.3V
MRF24J40 GND -> Board GND
MRF24J40 SCLK -> Board PA5 (Arduino header D13)
MRF24J40 MISO -> Board PA6 (Arduino header D12)
MRF24J40 MOSI -> Board PB5 (Arduino header D11)
MRF24J40 CS -> Board PA4 (Arduino header D10)
MRF24J40 INT -> Board PG12 (Arduino header D8)
This example is configured to work with the USBNSH instead of UART NSH, so the console will be shown over the USB_OTG1 connector.
Once you’re on the console, you need to check if the initialization process was fine. To do so, you need to type “ls /dev” and you should see a device call “ieee0”. At this point we need to set-up the network, follow the next steps:
This is an example of how to configure a coordinator:
i8sak wpan0 startpan cd:ab
i8sak set chan 11
i8sak set saddr 42:01
i8sak acceptassoc
When the association was complete, you need to bring-up the network:
ifup wpan0
This is an example of how to configure the endpoint:
i8sak wpan0
i8sak set chan 11
i8sak set panid cd:ab
i8sak set saddr 42:02
i8sak set ep_saddr 42:01
i8sak assoc
When the association was complete, you need to bring-up the network:
ifup wpan0
If you execute the command “ifconfig”, you will be able to see the info of the WPAN0 interface and see the assigned IP. This interface can be use with an UDP or TCP server/client application.