1. はじめに
STMicroelectronics社が販売しているマイコンボード「Nucleo」シリーズの中でも、「NUCLEO-32ボード」は小型でブレッドボードに刺して使うことができ、簡単な実験等には便利なものとなっている。
STMicroelectronics社が提供するSTM32CubeIDEと組み合わせて使用すればデバックも容易に行える。
筆者は、デバック機能の中でもADCの入力値など変化する値をグラフとして表示する「SWVデータトレースタイムライングラフ」は特に便利と感じている。
ただし、この「SWV」は基本的に「NUCLEO-32ボード」では使用できない(例外としてNUCLEO-G431KBはSWVを使える)。
今回は「NUCLEO-32ボード」シリーズのNUCLEO-F303K8を例に、ハードウェアの改造とSTM32CubeIDEの設定を行ってSWVを使用できるようにする。
2. 必要なもの
・SWVしたい「NUCLEO-32ボード」
・はんだごて
・はんだ
・はんだ吸い取り線
・フラックス
・ピンセット
・撚線(の中から1本取り出して使う。1本の太さは0.3mm程度が良い)
・それなりのセンスとはんだ技術
3. 解説(飛ばしても良い)
まず前提として、SWVにはSWCLKとSWDIOはもちろんだがSWOも必要である。それぞれの意味は以下。
略称 | 意味 |
---|---|
SWV | Serial Wire Viewer |
SWCLK | Serial Wire Clock |
SWDIO | Serial Wire Debug Input/Output |
SWO | Serial Wire Output |
ここでNUCLEO-F303K8のDocument内のSTM32 Nucleo-32 boards (MB1180)の32~34ページの「NUCLEO-32」シリーズの回路図を確認する。
ここで注目すべきは「SWO」の出力端に✖マークが付いている事である。
SWVを動かすにはメインのマイコンからST-Linkを動かしているマイコンへSWOが繋がっていなければならない。
脱線するが比較としてNUCLEO-G431KBの資料内のMB1430-G431KB-A02 Board Schematicから回路図を確認してみる。
SWOがメインマイコンとST-Linkを動かしているマイコン間で接続されている。
話を戻して、SWOを出力できるPinをNUCLEO-F303K8に載っているマイコンSTM32F303K8のDocument内のProduct Specifications資料で確認する。
39ページ目にSWOを使用できるPinが記載されている。
Pin名は「PB3」、Pin番号は「26」となっている。
マイコンボードNUCLEO-F303K8でこの「PB3」を確認すると
LD3(ユーザがデバックに使えるLED)に接続されている。
ST-Linkを動かしているマイコン側も確認すると
何も接続されていない。
つまり、
・ジャンパーSB15取り外し
・メインマイコンの26番PinとST-Linkを動かしているマイコン31番Pinを接続
すればSWVが使えるようになる(LD3は使えなくなるが)。
4.ハードウェア改造
① SB15を取り外す(右側の赤枠内ジャンパ)
② U5の31PinとSB15が付いていたパターン部を結線(それぞれ矢印部)
5. STM32CubeIDEの設定
Pin設定画面にて
System Core → SYS → Debug → Serial WireをTrace Asynchronous Swに変更する。
後はSWVの設定を行えば使うことができる。
SWVのやり方は他記事が多数あるのでここでは省く。
6. 動作確認
ここでは簡易に100ms毎にタイマー割り込みをかけてAD値を取得する。
可変抵抗にて3.3Vを分圧し、その電圧をAD値で読み、SWVのトレースグラフにて確認してみる。
可変抵抗のつまみを変化させた分が、AD値の変化としてグラフ上で視覚的に見て取れる。
7. おわりに
「NUCLEO-32ボード」シリーズでSWVをしている記事やコミュニティを国内外問わず見かけなかったため、備忘録の意も含めここに残す。
はんだ作業は自己責任にて行うこと。はんだ技術がない者に関しては「NUCLEO-64ボード」若しくはNUCLEO-G431KBを大人しく使うことをおすすめする。
Digikeyで最安のNUCLEO-G031K8とNUCLEO-G431KBでは300円程度しか差がない。壊すリスクを負ってまで「NUCLEO-32」シリーズでSWVをする価値はあまり無いだろう。