2015年12月23日 星期三

STM32 Usart Bootloader Test Code(MCU to MCU)

1. 目前大部份的MCU升級韌體的方式大都是透過Linux平台寫入Bin檔, 所以可能比較少人會特
    地去接觸這一塊, 因此本範例使用MCU去升級MCU程式的方式來示範STM32 Usart
    Bootloader該如何使用.

2. 基本上每一顆STM32 MCU的升級方式都有些不同, 因此必須要先透過Datasheet來了解有哪
    幾種升級的方式, 由於本範例是建立在透過STM32F401 Discovery Board去升級其它的STM32
    MCU, 因此我們可以先假設使用STM32F401去升級STM32F401, 從F401 Datasheet上看起來,
    Usart Bootloader只支援Usart1(PA9/PA10), Usart2(PD5/PD6).


3. Hardware Define:

  • Test Platform: stm32f401 discovery board
  • Usart Tx: PA2
  • Usart Rx: PA3
  • Boot0: PA15
  • Reset: PB5    
4. Mode of connection:
  • PA2 ->  Device_Usart_Rx(ex: PA10)
  • PA3 ->  Device_Usart_Tx(ex: PA9)
  • PA15 -> Device_Boot0
  • PB5 -> Devices_Reset     
5. Code flow:
  • Init: Usart2(pa2/pa3) & PA15(boot0) & PB5(reset)  & USB(vcp)  Initialize.

  • Usart Init:  
    • baud rate: 115200.
    • data length: 9bit
    • stop bit: 1bit
    • parity: even         


  • Main Flow:  等待USB(vcp)接收Binary file, 若接收完畢, 則開始將Binary file透過Usart2分                        段送出給Device.

    6. Boot Mode Example(Get Version):
    • 接下來選擇一個Usart Boot Mode的get version範例講解, 從程式上看起來相當地簡單,送出2個bytes, 接著接收5個bytes.
    • 為何要這樣送2bytes又接收5bytes呢? 主要是依照st所提供的文件來做好做滿, 如下圖是Get Version 的流程圖, 可以看到Host送出0x01 + 0xfe後,  並等待device是否有送出ack, 如果有的話, 則連續接收5bytes, 而這5bytes的定義則都定義好了.

    7. Test Flow:
    • 將硬體按照上面所述的與Device接好後, 則可以搭配tera term來接收binary file.

    • 需特別注意tera term在執行send file時候, 需記得勾選binary option.




    8. Test Code Download Link:


    9. Logic Analyzer Signal:

        LA (Please use Saleae Logic 1.2.5 Beta to Open)

    沒有留言:

    張貼留言