Nucleoボードをぶった切って書き込みとUART通信した
手を滑らせて秋月で買ったNucleo Board(F411)をST-LINK部分とSTM32の部分に分割してしまったのでその状態で書き込み(デバッグ)とUART通信した話についてです.
手が滑った… pic.twitter.com/r3LyrP7fCP
— KT33 (@KT33Mice) 2019年2月10日
はじめに
この記事では割らない状態で書き込みとUART通信が出来ている前提で話を進めていきます.
まだの方は
などを参考に頑張ってみてください.
環境
OS | Windows10 |
IDE | TrueSTUDIO |
デバッグ構成 | J-LINK(SWD) |
Nucleo | STM32F411RE |
外部電源 | 9V乾電池 |
分割
うっかり机の上から落としたくらいでは割れないので頑張って切ります.
今回は部室のバンドソーでカットしました.
諸々の処理
Nucleoのデータシートからデバッグ用のピンはCN4であり,その割り振りは以下の通りです.
ここで6pinのSWOは使用していない(理解してないので使えない) ので無視すると以下のようになります.
Pin | ボードのPin | 名称 |
1 | CN7-16 | 3.3V |
2 | CN7-15 | PA14 |
3 | CN7-20 | GND |
4 | CN7-13 | PA13 |
5 | CN-14 | RESET |
(ただし,3.3V,GNDはボード内の同じ機能の他のピンでも問題ないはずです)
また,Nucleoボードはついてるジャンパや0Ω抵抗のありなし(Solder brige)を変更することで配線や機能を変更することが出来ます.
今回は大きく分けて3つの変更が必要なのでまとめていきます.
1つ目
ST-LINKのボードに載っているCN2のジャンパ2つを取り外す.
これによってCN4のSWDのピンが有効になるっぽい(?)
2つ目
JP5のジャンパがpin1とpin2にセットされているのでこれをpin2とpin3にずらし,外部電源(VIN or E5V)の入力を有効にする.
今回は9Vの電池を使っているのでCN7の22,24pin(GNDとVIN)に電池を接続しました.
3つ目
これはUSART2で使用している信号線をCN10の35,37ピンまでつなぐのに必要な処理です.
ボードを分割しているときには意味がないような気もしますが,SB13,14は開放するべき,との記載があるので一応0Ω抵抗を外しておきました.
また,USART2の信号線としてCN3のTX,RXピンとCN10の35,37ピンを接続します.
TXとRXがクロスするように接続しなければいけないので注意してください.
実行
上に記したように接続したら,今までできていたのと同じようにデバッグを実行したら書き込みができると思います.
またUSART2も繋いでいればこちらも使えるのでprintf文なんかが使えるようになっていると思います.
注意
CubeMXでは今回使用したNucleoボードのUSART2はデフォルトで有効になっており,このボーレートは115200Bits/sに設定されています.
そのためこれを弄っていないならTera Termなりターミナルなりの設定もこれに合わせてあげる必要があります.
ここでトラブルが生じました.
分割する前は115200のまま通信が出来たのですが,分割した後,ケーブルを使って接続するとこの設定では早すぎるのか通信できなくなってしまいました.
この設定を9600くらいにすると通信できたので,まあきっとそういうことなんだろうな,と思います.
やっと出来た pic.twitter.com/vSPpNbf7tQ
— KT33 (@KT33Mice) 2019年2月12日
その他
以下適当なことです.
CN4の1pinはターゲットデバイスの電圧で今回は3.3Vです.
またST-LINKも同様に3.3Vで駆動しているのでこれを活用してみようと思います.
ST-LINKのボードに存在するJP1の左側(USB-miniの端子じゃないほう)のピンが3.3Vなのでこれを繋ぐ.
→問題なく動く
またCN4の5pinがNRSTでSTM32のRESETと繋いでいますがこれも外してみる
→なんか知らんけど動く
こうするとマイコン本体との接続にはGND,SWCLK,SWDIO,TX(USART)の4本で事足ります(←ほんとにぃ~?)
(※USARTは一方向しか使わないので1本にできる)
正直このNRSTの扱い(マイコンの書き込みの仕組み)に関してはちゃんと理解できてないので,何かあれば気軽にご指摘お願いします....