STM32G0シリーズを使った電子機器を作ろうとしています。 とりあえずのスタートとして、STM32duinoを使って動作確認を実施しようと思いました。
nucleoから切り出したST-Link v2.1とSTM32G0をSWDで接続して書き込みを試みました。 しかし、まっさらな状態からやる場合、Arduino IDE + STM32duino + STM32CubeProgrammerでは書き込めませんでした。
その時のエラー文の例は以下です。
Failed to execute MI command
いろいろ試した結果、どうやら最初に書き込まれているファームウェアではSWDが無効になっている*1ことが原因のようでした。
対策として、STM32CubeIDEでSWDを有効にしたファームウェアを作成し、書き込んだところ、以降ArduinoIDEから呼び出したSTM32CubeProgrammerで書き込めるようになりました。
ざっくり手順は以下。
- STM32CubeIDEをインストールする
- 該当マイコンをターゲットとしたプロジェクトを作成する
- iocファイルを選択して、マイコンの設定に移動する
- Pinout&Configurationタブの
Categories > SYS > Debug
をSerial Wire
にする - 保存してコードを再生成する
- Runで書き込む
参考記事
*1:もしくは何も書き込まれていない?