各種STM32マイコン用開発ボードのNucleoシリーズにはデバッガ機能が搭載されており、別途デバッガを購入しなくてもすぐに開発が始められます。
このNucleoボードのデバッガ機能は、他基板の開発/デバッグにも使う事が出来ます。
Nucleoをデバッガ(ST-Link/V2)として使用する方法をご紹介します。
- これからSTM32を使ったボードのソフト開発を行う方
- STM32ソフト開発環境を安価に用意したい方
- 使っていないNucleoボードをお持ちの方
STM32 Nucleoとは?
STM32 Nucleoとは、STマイクロ社製のマイコンSTM32/STM8シリーズの初期開発・評価用として販売されている基板です。
通常、マイコン開発には開発ボードとは別にデバッガの購入が必要です。しかしNucleoシリーズにはデバッガ機能が付いているので、Nucleoを購入するだけで直ぐにマイコンソフト開発がスタート出来ます。
種類がたくさんあってどれを買おうか悩んでしまいますが、スイッチサイエンスさんのサイトに見易い比較表が有りました。Nucleo – スイッチサイエンス (switch-science.com)
さらに、STマイクロ社のウェブサイトにもボードの一覧表があります。Nucleoボード|8/32bit汎用マイコン (stmcu.jp)
購入の際に参考にしてみて下さい。値段は大体1,500~5,000円くらいです。
デバッガに使えるNucleoの条件
デバッガ(ST-Link/V2)として別基板の開発に使えるようにできるのは、64ピン以上のSTM32が使われているNucleoになります。
64ピン以上のNucleoでは、デバッガ部分を切り離せるように基板にスリットが入っています。このスリットでデバッガ機能だけを切り離して別ボードに接続すれば、デバッガ(ST-Link/V2)として使用できるのです。

32ピンのNucleoボードでは、マイコンとデバッガ機能部分の切り離しが出来ないです。マイコンを取り外したり、デバッガ機能とマイコン間のパターンカットとかすればデバッガにできなくも無いですが、結構大変になりますのでお勧めしません。
デバッガ(ST-Link/V2)として使用する手順
基板分割
下の写真の位置で基板を分割します。
私はニッパーで切りましたが、カッターで切り込みを入れて手割りすることも出来ると思います。
基板分割するときに、デバッグ信号や電源/GNDパターンも一緒に分割します。分割した後は、バリでパターンがショートしていないか、確認しておきましょう。

CN2のジャンパーを2つとも取り外す
下の赤枠部分のジャンパーを2個、取り外します。
このジャンパーを外すことで、Nucleo → ST-Linkデバッガに回路動作が切り替わります。

基板との接続ケーブルを用意する
デバッグする基板との接続にはピンヘッダーのCN4を使います。ピン配列及び接続先は下表です。

CN4の1ピンは●シルクのついているピン(裏面から見ると、四角いパッド)になります。私はここに、ピンソケットとケーブルで下のようなものを作りました。

これでデバッガとして使用する準備は整いました。
動作確認
それでは動作確認をしてみましょう。
デバッガとターゲットボードを接続したら、STM32CubeIDEでプロジェクトを作成します。
MXのデバッグ設定で、デバッグをSerialWireに設定します。これでデバッガとターゲットボードの接続設定は完了です。コード生成をしてしまいましょう。

コード生成が終わったら、ビルドしてデバッグを開始します。コンソールWindowに下のように表示されたら接続成功です。

ボードに関する情報や改造内容については、STマイクロの資料でも読み取る事が出来ます。リンクを貼っておきますのでこちらも確認してみてください。
補足事項
ここまでの内容で、Nucleoをデバッガ(ST-Link/V2)として使うことは可能になりました。
ここでは、使い勝手向上の為にいくつか補足しておきます。
ケースに収める
分割した基板を裸のまま使い続けるのも不安なので、適当なケースに収めるとなお良いです。私は秋月で売っているケースにケーブル用の穴を空けて収めました。

私は今のところこれで満足して使ってますが、不要なピンヘッダーを取り外して基板の余分なところをカットすれば、もっと小さなケースに収めることも出来ます。
基板の電源電圧を読み取れるようにする
OpenOCDを使ってもデバッグ出来るか確認したところ、ターゲットボードに電源入っていないと言われて接続出来ませんでした。
改めてCubeIDEでの接続時のログをよく見てみると、ボード電圧がほとんど0Vになっています。当然、基板には電源を正しく投入しています。
そもそも、なんでCubeIDEでは接続出来ているの??というレベルですね。

Nucleoの回路図と基板をよーく確認したところ、CN4の1ピンのターゲットボードの電源接続ピンの先、R9が未実装になっていました。
R9のその先(AIN_1)はデバッガのマイコンのADCピンに接続されているのですが、ここにターゲット基板の電圧が供給されていことが原因のようです。(基板分割前は、+3V3がマイコン電圧として供給されていました。)


R23のチップ抵抗をR9に付け替えることで、ST-Linkでターゲット電圧が把握できるようになりました。(細かいことを言えば、ダイオードD1のVfドロップだけ電圧は実際より低く見えています。)

これで、OpenOCDでターゲットボードに接続することが出来るようになりました。
その他のHowto記事
STM32のソフト開発に関するHowtoは他にも記事があります。こちらも参考にしてください。
コメント