==== STM32 Value line discovery ==== {{:boards:stm32vld.jpg?200}} The STM32 Value line discovery is an evaluation board for the ARM Cortex-M3 STM32F100 MCU. This board has an integrated [[:tools:stlink|STLink]] compatible interface which can be configured to allow the programming of either the board itself or to program an external device. As with all STM evaluation boards there is lengthy list of restrictions in place regarding what you can and can't do with an evaluation board. See [[http://www.st.com/st-web-ui/static/active/en/resource/legal/legal_agreement/license_agreement/EvaluationProductLicenseAgreement.pdf|this]] document. === Pinout === GND 1 STLINKv1 USB 28 GND NC 2 27 NC 3V3 3 26 5V VBAT 4 25 PB9 PC13 5 24 PB8 PC14 6 23 BOOT PC15 7 22 PB7 PD0 8 SWD CN3 21 PB6 PD1 9 VDD_TARGET x x 20 PB5 NRST 10 SWCLK x x 19 PB4 PC0 11 GND x x 18 PB3 PC1 12 SWDIO x x 17 PD2 PC2 13 16 PC12 PC3 14 15 PC11 PA0 15 14 PC10 PA1 16 13 PA15 PA2 17 12 PA14 PA3 18 11 PA13 PA4 19 JP1 STM32F100RBT6B 10 PA12 PA5 20 idd 9 PA11 PA6 21 8 PA10 RXD PA7 22 7 PA9 TXD PC4 23 6 PA8 PC5 24 5 PC9 PB0 25 4 PC8 PB1 26 PA0 RST 3 PC7 PB2 27 USER RESET 2 PC6 GND 28 1 GND GREEN LED BLUE LED PC9 PC8 1 2 3 4 5 6 PB10 PB11 PB12 PB13 PB14 PB15 CN3 is used to configure either internal or external programming. ===Issues=== This device is recognised as a mass storage device which doesn't actually work. On the RPi add the following to /boot/cmdline.txt and reboot. usb-storage.quirks=483:3744:i,483:374b:i,483:374e:i With ARMBIAN, update /boot/armbianEnv.txt and reboot. usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u,0x0483:0x3744:i,0x0483:0x374b:i,0x0483:0x374e:i Similar modprobe options are used if mass storage is a module. options usb-storage quirks=483:3744:i,483:374b:i,483:374e:i When the device is plugged in, something like this is logged: usb-storage 1-1.2.1:1.0: USB Mass Storage device detected usb-storage 1-1.2.1:1.0: device ignored This will stop mass storage using the device, however, it doesn't mean it will function correctly and will take a number of probes until it operates and may never work. A solution is as follows #! /bin/sh # # ON DEVICE ERROR # RUN THIS SCRIPT # UNPLUG STM32 VL Discovery # PLUG IN STM32 VL Discovery # CTRL-C # while test 1; do openocd -f "interface/stlink.cfg" -c "transport select hla_swd" -f "target/stm32f1x.cfg" sleep 0.1 done ===Clocks=== HSE 8000000 X2 ESA8.00000F20D25F HSI 8000000 LSE 32768 X3 MC306-G-06Q-32.768 LSI 40000 === LED demo === Install [[:tools:libopencm3|OpenCM3]]. == STLink == NB STLink no longer operates with this board's firmware. Install [[:tools:stlink|STLink]] programmer. Enter the OpenCM3 fancy blink example's sub-directory and program the chip. cd /embedded/arm-cortex/src/libopencm3-examples/examples/stm32/f1/stm32vl-discovery/fancyblink/ make PREFIX=/embedded/arm-cortex/gcc-arm-none-eabi-4_9-2015q1/bin/arm-none-eabi fancyblink.stlink-flash FLASH fancyblink.bin INFO src/stlink-common.c: Loading device parameters.... INFO src/stlink-common.c: Device connected is: F1 Medium/Low-density Value Line device, id 0x10016420 INFO src/stlink-common.c: SRAM size: 0x2000 bytes (8 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes INFO src/stlink-sg.c: Successfully opened a stlink v1 debugger INFO src/stlink-common.c: Attempting to write 1224 (0x4c8) bytes to stm32 address: 134217728 (0x8000000) Flash page at addr: 0x08000400 erased INFO src/stlink-common.c: Finished erasing 2 pages of 1024 (0x400) bytes INFO src/stlink-common.c: Starting Flash write for VL/F0/F3 core id INFO src/stlink-common.c: Successfully loaded flash loader in sram 1/1 pages written INFO src/stlink-common.c: Starting verification of write complete INFO src/stlink-common.c: Flash written and verified! jolly good! == STM32Flash == As an alternative to [[:tools:stlink|STLink]] install [[:tools:stm32flash|STM32Flash]] and program via the serial UART boot loader. STM32 CP2102 (NB Baite module has incorrect labels) ===== ====== 3V3 ---------- BOOT ---220R--- PA10 RX ---------- RXD (TX) PA9 TX ---------- TXD (RX) GND ---------- GND Press RESET to enter boot loader mode and use STM32Flash to program and execute the code. Repeat as necessary. stm32flash -b 115200 -w fancyblink.bin -v -g 0x0 /dev/ttyCP2102 stm32flash 0.4 http://stm32flash.googlecode.com/ Using Parser : Raw BINARY Interface serial_posix: 115200 8E1 Version : 0x22 Option 1 : 0x00 Option 2 : 0x00 Device ID : 0x0420 (Medium-density VL) - RAM : 8KiB (512b reserved by bootloader) - Flash : 128KiB (sector size: 4x1024) - Option RAM : 16b - System RAM : 2KiB Write to memory Erasing memory Wrote and verified address 0x080004c8 (100.00%) Done. Starting execution at address 0x08000000... done. === Resources === [[http://www.st.com/st-web-ui/static/active/en/resource/technical/document/user_manual/CD00267113.pdf|User manual]] [[https://www.st.com/resource/en/datasheet/stm32f100rb.pdf|MCU datasheet]] [[https://www.st.com/resource/en/reference_manual/rm0041-stm32f100xx-advanced-armbased-32bit-mcus-stmicroelectronics.pdf|MCU reference manual]] [[https://www.st.com/resource/en/errata_sheet/es093-stm32f100x4-stm32f100x6-stm32f100x8-and-stm32f100xb-low-and-mediumdensity-value-line-device-errata-stmicroelectronics.pdf|MCU errata]]