STM32程式轉移方法

前言

使用ST MCU做開發的應用越來越多,ST也針對不同MCU不斷翻新在相同類別MCU上不斷演進,就出現同系列MCU程式移植問題,如果是嶄新的程式區塊搬移是相對簡單的,但如果是非常龐大模組功能不變全部移植要怎操作?這邊提供其中一種方式作為同類別轉換(L412KB 改成L432KCU6)參考

Porting 同系列 MCU

這邊因客戶需求想把專案直接轉移到不同MCU上這邊提供2種方式移植,起先有發現使用CubeIDE被鎖定所以無法直接改動

這邊因為同為L4系列只是不同款MCU因此作了以下幾步驟

到這邊stm32l412xx.h替換成stm32l432xx.h所build出來的,將bin檔燒進STM32L432進行測試可能會出現以下錯誤資訊
讀到的MCU version與期望的不符,接著MCU利用SPI向後端獲取ACK有錯誤
WARNING: MCU version mismatch (expected:00.02.06, got:D01.00.00)
ERROR: received wrong ACK type (0xFF)
ERROR: failed to read REQ_MULTIPLE_SPI ack
ERROR: failed to start the gateway

這邊參考開源軟體Semtech code for STM32L412 => https://github.com/Lora-net/sx1302_spi_usb_bridge

先測試生成原本的STM32L12K8U6,燒錄看看,MCU_VERSION 是否是 D01.00.00, 是否也會回傳ACK
可以動的L412K8U6,是否有改成RELEASE MODE,是否有正常的root@IG502L:/# chip_id -u -d /dev/ttyACM0 LOG 可以參考?

Flash配置可以用以下方是修改(但建議限同類型這樣轉移)

Porting 不同系列 MCU使用智能雲

這邊參考網路由F103移植到L496並follow以下大步驟操作

  1. Create the STM32CubeMX project file(這邊先生成要移植的MCU專案)
  2. Import the Gizwits configuration template
  3. Special processing (only for the STM32 L series low-power platforms, skip this step for other platforms)
  4. Generate code
  5. Compile and configure the project
  6. Port code
  7. Modify the code

這邊針對幾個步驟特別拉出來說明因,像第二步CubeMX可以導入原先不同MCU的參數
STM32L496ZGT6平台導入STM32F103平台的配置參數,再針對不同特殊功能自行到內部設定

再來就會使用到第三方軟體Gizwits IoT Cloud把生成檔案移植到新專案上
you need to port the relevant protocol source code (i.e. the three directories in the automatically generated STM32F103 project mentioned above: Gizwits, Hal, Utils).

然後這邊第六步就是去修改部分引用檔案EX:#include“stm32f1xx_hal.h”替換為L496ZGT平台的#include“stm32l4xx_it.h”

Leave a Comment

Your email address will not be published. Required fields are marked *

Shopping Cart