STM32F103 Microcontroller

From ScienceZero
Revision as of 07:55, 25 October 2010 by Bjoern (Talk | contribs) (Created page with ' *** Documents and files *** http://www.st.com/mcu/familiesdocs-110.html *** Power *** Sleep mode (Cortex-M3 core stopped, peripherals kept running) Stop mode (all clocks are…')

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
      • Documents and files ***
http://www.st.com/mcu/familiesdocs-110.html
      • Power ***
Sleep mode (Cortex-M3 core stopped, peripherals kept running)
Stop mode (all clocks are stopped)
Standby mode (1.8V domain powered-off)


      • Clocks ***
HSI (8 MHz internal RC oscillator)
HSE (8 MHz external crystal oscillator)
LSI (40 kHz internal RC - watchdog, RTCCLK)
LSE (32768 Hz external crystal (RTCCLK))
PLLCLK  - Output from PLL, 8-64 MHz in 4 MHz steps, 72-128 MHz in 8 MHz steps
SYSCLK  - PLLCLK, HSI or HSE
AHBCLK  - SYSCLK / AHB prescaler (this clock has no name in the datasheet, except AHB peripheral clock)
PCLK1   - AHBCLK / APB1 prescaler - APB1 bus (max 36 MHz)
PCLK2   - AHBCLK / APB2 prescaler - APB2 bus (max 72 MHz)
USBCLK  - PLLCLK / USB prescaler
I2SCLK  - SYSCLK
SDIOCLK - AHBCLK
FSMCCLK - AHBCLK
FCLK    - AHBCLK
ADCCLK  - AHBCLK / (APB2 prescaler * ADC prescaler)
MCO pin (PA8) <-- SYSCLK, HSI, HSE, PLLCLK divided by 2
When the HSI is the PLL clock input, maximum system clock frequency is 64 MHz.
The SDIO AHB interface is clocked with a fixed frequency equal to AHBCLK / 2.
If the APB prescaler is 1, the timers are set to the same frequency else 2x the frequency


      • Flash ***
 0-24 MHz - zero wait state
24-48 MHz - one wait state
48-72 MHz - two wait states
The prefetch buffer must be switched on/off only when SYSCLOCK is lower than 24 MHz.


      • Pins ***
PA9  ----------> ICL3232
PA10 <--|100R|-- ICL3232
PB2  - Boot1 22 kOhm to +3.3 V or Gnd
PC14 - 32 kHz crystal
PC15 - 32 kHz crystal
PD0  - 8 MHz crystal
PD1  - 8 MHz crystal
The JTAG pins are in input PU/PD after reset:
 PA15: JTDI in PU
 PA14: JTCK in PD
 PA13: JTMS in PU
 PB4: NJTRST in PU


      • Peripherials ***
64 kB SRAM, 512 kB FLASH
3 x 12 bit A/D converters
2 x 12 bit D/A converters
5 x USART
2 x Advanced-control timers (TIM1 and TIM8) can each be seen as a three-phase PWM multiplexed on 6 channels.
4 x General purpose timer TIM2, TIM3, TIM4 and TIM5 - 16-bit auto-reload up/down counter, a 16-bit prescaler and feature 4 independent channels each for input capture/output compare, PWM or onepulse mode output. This gives up to 16 input captures / output compares / PWMs 
2 x Basic timer TIM6 and TIM7 - These timers are mainly used for DAC trigger generation. They can also be used as a generic 16-bit time base.
3 x SPI
2 x I2S (multiplexed on SPI pins)
2 × I2C
1 x SD card interface 1/4/8 bit
1 x USB full speed
1 x CAN network interface
1 x CRC (cyclic redundancy check) calculation unit
1 x 24 bit systick timer
1 x RTC (real-time clock) and backup registers
2 x DMA controller, 5 + 7 channels
1 x Temperature sensor


      • A/D converters ***
VREFINT is connected to ADC1_IN17
Temperature sensor is connected to ADC1_IN16


      • Flash uploader ***

Command line parameters for STMFlashLoader.exe:

   -c  --pn 3 --br 115200 --db 8 --sb 1 --to 1000 -i "STM32_High-density_512K" -e --all -d --fn "#H" --v


      • Important things to remember ***

Registers need a clock to latch the data, so enable all the the upstream clocks before trying to configure a peripheral


      • Pinout ***

Default Function1 Function2 Function3 Function4


 PA0 - WKUP        USART2_CTS  ADC0       TIM2_CH1_ETR
 PA1 - USART2_RTS  ADC1        TIM2_CH2
 PA2 - USART2_TX   ADC2        TIM2_CH3
 PA3 - USART2_RX   ADC3        TIM2_CH4
 PA4 - SPI1_NSS    USART2_CK   ADC4
 PA5 - SPI1_SCK    ADC5
 PA6 - SPI1_MISO   ADC6        TIM3_CH1
 PA7 - SPI1_MOSI   ADC7        TIM3_CH2
 PA8 - USART1_CK   TIM1_CH1    MCO
 PA9 - USART1_TX   TIM1_CH2
PA10 - USART1_RX   TIM1_CH3
PA11 - USART1_CTS  CANRX       TIM1_CH4   USBDM
PA12 - USART1_RTS  CANTX       TIM1_ETR   USBDP
PA13 - JTMS        SWDIO
PA14 - JTCK        SWCLK
PA15 - JTDI        TIM2_CH1    SPI1_NSS
 PB0 - ADC8        TIM3_CH3
 PB1 - ADC9        TIM3_CH4
 PB2 - BOOT1
 PB3 - JTDO        TIM2_CH2    SPI1_SCK 
 PB4 - JNTRST      TIM3_CH1    SPI1_MISO
 PB5 - I2C1_SMBAI  TIM3_CH2    SPI1_MOSI
 PB6 - I2C1_SCL    TIM4_CH1    USART1_TX
 PB7 - I2C1_SDA    TIM4_CH2    USART1_RX
 PB8 - TIM4_CH3    I2C1_SCL    CANRX
 PB9 - TIM4_CH4    I2C1_SDA    CANTX
PB10 - I2C2_SCL    USART3_TX   TIM2_CH3
PB11 - I2C2_SDA    USART3_RX   TIM2_CH4
PB12 - SPI2_NSS    I2C2_SMBAI  USART3_CK  TIM1_BKIN
PB13 - SPI2_SCK    USART3_CTS  TIM1_CH1N
PB14 - SPI2_MISO   USART3_RTS  TIM1_CH2N
PB15 - SPI2_MOSI   TIM1_CH3N
 PC0 - ADC10 
 PC1 - ADC11 
 PC2 - ADC12 
 PC3 - ADC13 
 PC4 - ADC14 
 PC5 - ADC15 
 PC6 - TIM3_CH1 
 PC7 - TIM3_CH2 
 PC8 - TIM3_CH3 
 PC9 - TIM3_CH4 
PC10 - USART3_TX 
PC11 - USART3_RX 
PC12 - USART3_CK 
PC13 - TAMPER-RTC 
PC14 - OSC32_IN 
PC15 - OSC32_OUT 
 PD0 - OSC_IN 
 PD1 - OSC_OUT 
 PD2 - TIM3_ETR