STM32で最小構成のマイコンボードを作る(UART書き込み)

結構当たり前っちゃ当たり前な記事なんですが、リクエストがあったので書きます。Nucleoとかを触ったことがない人は、一旦そっちを触ってSTM32マイコンに慣れてから手を出すことをお勧めします。
この記事で扱うこと
たのロボ!とかで使っていたメイン基板のマイコン周りの配線をパクることができるようになります。
とりあえず動かしたい人向け回路図
これ作れば動きます。(動作実績あり)
F303K8版の回路図です。部品はマイコン以外は全て秋月で揃えることができます。電源等は別途用意してください。(といってもレギュレータとか付けるだけですが。)
SVG画像なので、右クリックとかして拡大してご覧いただくのがおすすめです。拡大しても綺麗です。
空いているピンは入出力ピンとして使用できます。対応するマイコンのNucleoのピン配置を参照するのが確実です。
PA15についているLEDは都合の良い他のピンにしてもらっても構いません。デバッグできるLEDが1つもついてないと、初めて扱う時に「パソコンとの通信がうまくいってないのか」「そもそもプログラムが動作していないのか」が分からずに頭抱える羽目になるので、1つは付けることをお勧めします。
F446等でも使いたい人へ
CH340Eに接続するUARTをPA9,PA10にすること、VCAP1(30)とGNDの間に4.7μFのコンデンサを挟むことに注意してください。他は上の回路図と同じです。
迷ったらたのロボ!の回路図やPCB見てください↓無責任基板とか色々. Contribute to TanoRoboRCJ/Hardware development by creating an account on GitHub.
配線で気をつけること
- USB端子・CH340E・STM32マイコンはできるだけ近い位置に配置し、配線する。(雑に配線して書き込めなくなったらマイコンボード全て台無しになるよ。)
- マイコンの至近に0.1μFのコンデンサを配置する。(バイパスコンデンサ・パスコンと呼ばれるものです。)
これ以外は特にないと思います。F446のような大き目のマイコンだと、GNDと+3V3が隣り合ってるピンが複数あると思うので、そこにもパスコンをつけてあげましょう。
書き込み環境構築
今回は最も簡単なPlatformIOで書き込む方法を紹介します。今回は最も簡単なVSCodeとPlatformIOの組み合わせを紹介します。CubeIDEとか高度なツール使える人はこんな記事読んでないと思うので
(すでにPlatformIOとVSCodeの環境構築が済んでいる前提で進めます。VSCodeインストールして、拡張機能からPlatformIOをインストールするだけです。詳細はたくさん情報あるのでググってください。)
New Projectから、Nucleoとしてプロジェクトを作成します。F446の場合は、この他にgenericSTM32F446REも選択可能です。
プロジェクトフォルダ内のplatformio.iniを開き、upload_protocol = serial
を追加して書き込み方法を指定します。←ここ重要
プロジェクトの環境構築はこれで完了です。
書き込み
上の回路図のSW2を+3V3側にした状態で電源を入れる or SW1を押してリセットをかけます。これで書き込みモードになります。この状態でUSBをパソコンに接続すれば、PlatformIOからUploadすることができます。
書き込みが完了したら、SW2を反対に倒し、BOOT0がGNDにプルダウンされるようにします。この状態で基板の電源を入れ直す or SW1を押してリセットをかけるとプログラムが走り出します。
これらのスイッチは、書き込みのたびに操作するので、操作しやすい位置につけておきましょう!!たのロボ!のロボットは側面のすぐ触れる位置につけてあります。
書き込めない時の沼ハマポイント
何回も試しても書き込めない時は、~/.platformio/packages/tool-stm32duino/stm32flash
のstm32flashが古いことが原因のことが多いです。こちらの記事参考にしてください。(雑な記事でごめんなさい…)状況 PlatformIOのSTM32でUART書き込みができない。MacやLinuxで発生するっぽい。 Auto-detected: /dev/cu.usbserial-1420 Uploading .pio/build/genericSTM32F446RE/firmw...
おめでとう
動いたらおめでとうございます。
締めの言葉
動かなかったらごめんなさい。
Comments