STM32F4 Discovery

This page is for the STM32F4 Discovery board with STM32F407VGT6, STM32F4 Disco is a familiar board with STM32F401VCT6, do not use this Files for the Disco board ! 
Autopilots
__TOC__
==Overview==
* STMicroelectronics STM32F4VGT6 Cortex M4 MCU, up to 168Mhz with floating point unit (FPU), 192 KB RAM, 1024 KB Flash
* on-board STLinkv2 with SWD header (capable of programming onboard or external MCU)
* on-board power regulator for the MCU (3V or 5V Input)
* 1 x user push button
* 4(5) x LED (orange, green, red, blue, green) 
* 4(6) x UART (UART1, UART2, UART3, (UART4, UART5), UART6)
* 1(3) x SPI (SPI1, (SPI2, SPI3))
* 2(3) x I2C (I2C1, I2C2, (I2C3))
* 6 x ADC inputs (one is used for BAT voltage)
* 1 x PPM input
* 1 x Spektrum input (with bind pin)
* 97 x 66 mm PCB
* 4 x status LED (USB red, USB green, power, USB OTG green, USB OTG red)
* LIS302DL MEMS 3 axis accelerometer on SPI1
== Pinout ==
The Discovery has a male 100 pin (2x25pin on both sides, also accessible on both sides of the pcb) pinout. 
LED
Pin #	Name 	Type	Description 	Color
PD13 	LED_3	Out 	above LIS302DL 	Orange
PD12 	LED_4	Out 	left of LIS302DL 	Green
PD14 	LED_5	Out 	right of LIS302DL 	Red
PD15 	LED_6	Out 	below LIS302DL 	Blue
PA9 	LED_9	Out 	same as USB power (VBUS, needs to be enabled in header file)	Green
 
UART1
Pin #	Name 	Type	Description
PB6 	UART1 TX	Out 	UART1 Serial Output, 4k7 pullup for I2C
PB7 	UART1 RX	In 	UART1 Serial Input
UART2
Pin #	Name 	Type	Description
PD5 	UART2 TX	Out 	UART2 Serial Output (usb otg power management fault output open drain)
PD6 	UART2 RX	In 	UART2 Serial Input, also used for Spektrum input
UART3
Pin #	Name 	Type	Description
PD8 	UART3 TX	Out 	UART3 Serial Output
PD9 	UART3 RX	In 	UART3 Serial Input
UART4 (Can NOT be used if SPI_3 is active!)
Pin #	Name 	Type	Description
PC10 	UART4 TX	Out 	UART4 Serial Output
PC11 	UART4 RX	In 	UART4 Serial Input
UART5 (Can NOT be used if SPI_3 is active!)
Pin #	Name 	Type	Description
PC12 	UART5 TX	Out 	UART5 Serial Output
PD2 	UART5 RX	In 	UART5 Serial Input
UART6
Pin #	Name 	Type	Description
PC6 	UART6 TX	Out 	UART6 Serial Output
PC7 	UART6 RX	In 	UART6 Serial Input
SPI1 (for onboard LIS302DL)
Pin #	Name 	Type	Description
PA5 	SPI1 SCK 	I/O 	SPI1 Serial clock
PA6 	SPI1 MISO	I/O 	SPI1 Master In Slave Out
PA7 	SPI1 MOSI	I/O 	SPI1 Master Out Slave In
PE3 	SPI SS2 	I/O 	SPI1 Select Slave2
SPI1
Pin #	Name 	Type	Description
PB3 	SPI1 SCK 	I/O 	SPI1 Serial clock
PB4 	SPI1 MISO	I/O 	SPI1 Master In Slave Out
PB5 	SPI1 MOSI	I/O 	SPI1 Master Out Slave In
PE2 	SPI SS0 	I/O 	SPI1 Select Slave0
SPI2 (Can NOT be used if PWM10 & PWM11 is active!)
Pin #	Name 	Type	Description
PB13 	SPI2 SCK 	I/O 	SPI2 Serial clock
PB14 	SPI2 MISO	I/O 	SPI2 Master In Slave Out
PB15 	SPI2 MOSI	I/O 	SPI2 Master Out Slave In
PE7 	SPI SS1 	I/O 	SPI2 Select Slave1
SPI3 (Can NOT be used if UART4 & UART5 is active!)
Pin #	Name 	Type	Description
PC10 	SPI3 SCK 	I/O 	SPI3 Serial clock
PC11 	SPI3 MISO	I/O 	SPI3 Master In Slave Out
PC12 	SPI3 MOSI	I/O 	SPI3 Master Out Slave In
PE3 	SPI SS2 	I/O 	SPI3 Select Slave2 (also used for LIS302DL (SPI1) Slave Select)
I2C1
Pin #	Name 	Type	Description
PB8 	I2C1 SCL	I/O 	I2C1 Serial Clock
PB9 	I2C1 SDA	I/O 	I2C1 Serial Data
I2C2
Pin #	Name 	Type	Description
PB10 	I2C2 SCL	I/O 	I2C2 Serial Clock (also used for MP45DT02 MEMS MIC clock in)
PB11 	I2C2 SDA	I/O 	I2C2 Serial Data
I2C3 (Can NOT be used if Spektrum bind / PPM input is active!)
Pin #	Name 	Type	Description
PA8 	I2C3 SCL	I/O 	I2C3 Serial Clock
PC9 	I2C3 SDA	I/O 	I2C3 Serial Data
Note: is disabled in header file, PA8 is used as Spektrum bind pin, PC9 is used as PPM (not Spektrum) input
ADC
Pin #	Name 	Type	Description
PB1 	AUX1 	I/O 	ADC_1
PC5 	AUX2 	I/O 	ADC_2
PC4 	AUX3 	I/O 	ADC_3
PA4 	AUX4/BAT	I/O 	ADC_4, is used for BAT voltage
PC1 	AUX5 	I/O 	ADC_5
PC2 	AUX6 	I/O 	ADC_6
PWM
Pin #	Name 	Type	Description
PE9 	PWM0 	Out 	Servo 1
PE11 	PWM1 	Out 	Servo 2
PE13 	PWM2 	Out 	Servo 3
PE14 	PWM3 	Out 	Servo 4
PE5 	PWM4 	Out 	Servo 5
PE6 	PWM5 	Out 	Servo 6
PA3 	PWM6 	Out 	Servo 7
PA2 	PWM7 	Out 	Servo 8
PA1 	PWM8 	Out 	Servo 9
PA0 	PWM9 	Out 	Servo 10
PB14 	PWM10	Out 	Servo 11, Can not be used if SPI2 is active
PB15 	PWM11	Out 	Servo 12, Can not be used if SPI2 is active
PPM
Pin #	Name	Type	Description
PC9 	PPM 	In 	PPM input (remember, you need 100 Ohm serial termination in order to use this)
Spektrum
Pin #	Name	Type	Description
PA8 	Bind	Out 	Spektrum bind pin
PA10 	PPM 	IN 	Spektrum PPM in
=== Jumper ===
Jumper
Pin #	Name	Type 	Description
JP1 	JP1 	Switch	MCU Current can be measured here
CN3 	CN3 	Switch	closed: STLinkV2 is connected to onboard MCU, open: is not connectec to onboard, only external header
Soolder Jumper
Pin #	Name	Type 	Description
SB17 	SB17	Switch	Bypass for JP1, close this for security ! (if JP1 gets loose there is no power supply for the mcu)
==Daughterboard==
Currently we have two different breakout/baughter boards.
=== SMD & Molex ===
Another option with Molex connectors, levelshifters for I2C and SPI, as well as connectors for Spektrum satellites and a can phy would be:
Currently under testing, eagle files are coming, when its completely finished and airworthy :-)
=== THT ===
Target for this board is to be a ultra low cost THT daughterboard which should provide as many functions as possible. Also it should be as simple as possible (hence no SMD Components were used).
Notes 
* Tall screw terminals can touch the THT solder joints from the discovery board. No electrical but a mechanical contact can appear. Don't force both pcb's all the way together (leave a small gap).
* Only mount the components needed.
* If IR_Sensors are used used, maybe the diodes shouldn't be mounted and the voltage divider should be changed.
* If you use the 22k/2.2k voltage divider for the BAT input, you need to change the VoltageOfAdc see Airframe_Configuration#Battery.
Servo Power options 
* External power source (to power servos with a higher voltage or an other voltage regulator, only GND stays connected).
* Power servos from the 5V rail, solder the two solder bridges near the three row header.
The servo rail also powers the RC receiver directly (PPM and Spektrum), take care of that if this rail runs on a higher voltage than 5V!
Servo and 5V net share the same GND!
IMU mounting options 
* Drotek 10 DOF can be soldered on the appropriate footprint. (phi, theta and psi need to be 180 degree offset)
* Other IMUs (e.g. MPU6050 breakout) can be soldered on the prototyling area. Use wires to connect it to the Droteks I2C2 pins e.g..
*Mount IMU elsewhere and connect it with cables.
BAT voltage
If you use the 22k/2.2k Resistor divider, you will need to redefine the values for the ADC conversation.
Also see Airframe_Configuration#Battery.
==Firmware Flashing==
FLASH_MODE=STLINK is set as default
STM32F4 Discovery can mainly be programmed in two different ways:
===STLINK===
* with onboard STLinkV2 over SWD
* required hardware: usb to mini USB cable
* required software: st_flash and st_util from Texane
* more information: STLink page
===DFU-UTIL===
* with the MCU native (embedded in rom) DFU USB bootloader over the micro USB AB connector
* required hardware: USB to micro and USB to mini usb cable 
* required external software: dfu-util 
* push MCU in DFU mode: connect mini(for power) and micro USB to PC, connect pin BOOT0 with 3V, press reset button(LED LD7 should light up now), disconnect BOOT0
* more information: DFU page
=Supplier=
THe STM discovery boards look all quite alike. To make sure you get the right board here a direct [link at Farnell]
Whatever supplier yo choose make sure it is a STM32F407 ,mind the 07 in the end, board.
Category:Autopilots