STM32 Nucleoをデバッガ ST-Linkとして使う方法

Nucleo-Debugソフト

各種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)として使用できるのです。

Nucleo-Debug部
64ピンのNucleoボード。赤枠部分がデバッガ機能

32ピンのNucleoボードでは、マイコンとデバッガ機能部分の切り離しが出来ないです。マイコンを取り外したり、デバッガ機能とマイコン間のパターンカットとかすればデバッガにできなくも無いですが、結構大変になりますのでお勧めしません。

この記事では”Nucleo-F446RE”を使う場合での説明となります。

64ピン以上であれば他のNucleoでも出来る内容ですが、未確認&改造内容に多少の差分があるかも知れない事、ご了承ください。

デバッガ(ST-Link/V2)として使用する手順

基板分割

下の写真の位置で基板を分割します。

私はニッパーで切りましたが、カッターで切り込みを入れて手割りすることも出来ると思います。

基板分割するときに、デバッグ信号や電源/GNDパターンも一緒に分割します。分割した後は、バリでパターンがショートしていないか、確認しておきましょう。

Nucleo分割写真
ニッパで基板分割

CN2のジャンパーを2つとも取り外す

下の赤枠部分のジャンパーを2個、取り外します。

このジャンパーを外すことで、Nucleo → ST-Linkデバッガに回路動作が切り替わります

回路動作切り替えジャンパー
赤枠が回路動作切り替えジャンパー。これを外す

基板との接続ケーブルを用意する

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

Nucleo_CN4ピン配列図
CN4ピン配列図(UM1724 STM32 Nucleo-64 boards (MB1136) 14.0より引用)

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

ケーブル取り付け図
CN4にケーブル取り付け

これでデバッガとして使用する準備は整いました。

動作確認

それでは動作確認をしてみましょう。

デバッガとターゲットボードを接続したら、STM32CubeIDEでプロジェクトを作成します。

MXのデバッグ設定で、デバッグをSerialWireに設定します。これでデバッガとターゲットボードの接続設定は完了です。コード生成をしてしまいましょう。

STM32CubeMX_デバッグ設定画面
DebugはSerialWireに設定

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

ボード接続確認コンソール
繋がった!!

ボードに関する情報や改造内容については、STマイクロの資料でも読み取る事が出来ます。リンクを貼っておきますのでこちらも確認してみてください。

UM1724 STM32 Nucleo-64 boards (MB1136) 14.0

補足事項

ここまでの内容で、Nucleoをデバッガ(ST-Link/V2)として使うことは可能になりました。

ここでは、使い勝手向上の為にいくつか補足しておきます。

ケースに収める

分割した基板を裸のまま使い続けるのも不安なので、適当なケースに収めるとなお良いです。私は秋月で売っているケースにケーブル用の穴を空けて収めました。

収納ケースに収めたNucleoデバッガ
収納ケースに収めると使いやすい

私は今のところこれで満足して使ってますが、不要なピンヘッダーを取り外して基板の余分なところをカットすれば、もっと小さなケースに収めることも出来ます。

基板の電源電圧を読み取れるようにする

OpenOCDを使ってもデバッグ出来るか確認したところ、ターゲットボードに電源入っていないと言われて接続出来ませんでした。

改めてCubeIDEでの接続時のログをよく見てみると、ボード電圧がほとんど0Vになっています。当然、基板には電源を正しく投入しています。

そもそも、なんでCubeIDEでは接続出来ているの??というレベルですね。

ボード接続ログテキスト①
ボード接続ログ。電圧がほぼ0V

Nucleoの回路図と基板をよーく確認したところ、CN4の1ピンのターゲットボードの電源接続ピンの先、R9が未実装になっていました。

R9のその先(AIN_1)はデバッガのマイコンのADCピンに接続されているのですが、ここにターゲット基板の電圧が供給されていことが原因のようです。(基板分割前は、+3V3がマイコン電圧として供給されていました。)

実装変更図①
部品未実装→実装に変更する
実装変更図②
基板分割したので+3V3は未接続。R23抵抗をR9に付け替え

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

ボード接続ログテキスト②
ボード接続ログ。電圧が正しく取得出来ている

これで、OpenOCDでターゲットボードに接続することが出来るようになりました。

その他のHowto記事

STM32のソフト開発に関するHowtoは他にも記事があります。こちらも参考にしてください。

PCとUSBで接続してシリアル通信する方法

割り込みを使う方法

Flashメモリに読み書きする方法

コメント