Skip to content
Tristan edited this page Dec 29, 2019 · 17 revisions

https://en.wikipedia.org/wiki/STM32#Part_number_decoding

STM32F103RCT6

The original Espruino's firmware (see https://www.espruino.com/Original#advanced-reflashing) can be flashed via the USART breakout near the USB connector.

See also https://github.com/espruino/Espruino/blob/master/boards/ESPRUINOBOARD.py for peripheral connections in case you'd want to replicate them.

devices = {
  'OSC' : { 'pin_in' :  'D0',
            'pin_out' : 'D1' },
  'OSC_RTC' : { 'pin_in' :  'C14',
                'pin_out' : 'C15' },
  'LED1' : { 'pin' : 'A13' },
  'LED2' : { 'pin' : 'A14' },
  'LED3' : { 'pin' : 'A15' },
  'BTN1' : { 'pin' : 'B12' },
  'USB' : { 'pin_disc' :  'C13',
            'pin_dm' : 'A11',
            'pin_dp' : 'A12' },
  'SD' :  { 'pin_cs' :  'D2',
            'pin_di' :  'B15',
            'pin_do' :  'B14',
            'pin_clk' :  'B13' },
  'BLUETOOTH' : { 'pin_tx' : 'A9',
                  'pin_rx' : 'A10' },
};

STM32F103C8T6

The board can also be programmed via TinyGo https://tinygo.org/microcontrollers/bluepill/

Bluepill pinout

Note that there are a number of bluepills that have cloned chips and incorrect resistors; it may be an ordeal to source dev boards that are of high quality. I'll put links here when I do find some that I'm comfortable enough to recommend.

ST-Link

STM32F411RET6 (ST Nucleo-F411RE)

The board can be programmed with Epsruino: http://www.espruino.com/ReferenceNUCLEOF401RE#firmware-updates

See also https://github.com/espruino/Espruino/blob/master/boards/NUCLEOF411RE.py for the pin definitions.

devices = {
  'OSC' : { 'pin_1' : 'H0', # MCO from ST-LINK fixed at 8 Mhz, boards rev MB1136 C-02
            'pin_2' : 'H1' },
  'OSC_RTC' : { 'pin_1' : 'C14', # MB1136 C-02 corresponds to a board configured with on-board 32kHz oscillator
                'pin_2' : 'C15' },
  'LED1' : { 'pin' : 'A5' },
  'BTN1' : { 'pin' : 'C13',
             'inverted' : True, # 1 when unpressed, 0 when pressed! (Espruino board is 1 when pressed)
             'pinstate': 'IN_PULLUP', # to specify INPUT, OUPUT PULL_UP PULL_DOWN..
           },
  'JTAG' : {
        'pin_MS' : 'A13',
        'pin_CK' : 'A14',
        'pin_DI' : 'A15'
          },
#  'USB' : { 'pin_otg_pwr' : 'C0',
#            'pin_dm' : 'A11',
#            'pin_dp' : 'A12',
#            'pin_vbus' : 'A9',
#            'pin_id' : 'A10', },
  'NUCLEO_A' : [ 'A0','A1','A4','B0','C1','C0' ],
  'NUCLEO_D' : [ 'A3','A2','A10','B3','B5','B4','B10','A8','A9','C7','B6','A7','A6','A5','B9','B8' ],
};

STM32F3Discovery