SWDは3線、GNDを除くと2線だけでデバッグができるインターフェースで す。SWDを使うと、接続の手間が省け、また、ターゲットマイコンのピンを消費しなくて済みます。もっとも、JTAGコネクタが予め実装されているマイコ ンボードであれば、「手間」の部分のメリットはあまり感じられないでしょう。すると、ピンの消費を減らせることが中心的なメリットとなるわけですが、この メリットが生きるのが、STBee Miniをターゲットマイコンとして使う場合だと思います。
ところが、STBee MiniはSWDで使用するピンが、USB Disconnect等に接続されている関係で、そのままではSWDデバッグができません。また通常はSWDピンを無効化しています。そこで、SWDデ バッグを行うためには、以下のような準備が必要になります。
SWDピンの有効化
本書の開発環境では、STBee Miniのプログラムをコンパイルすると、JTAG/SWD関係のピンを、GPIOや周辺回路用のピンとして使用されるように設定されます。この状態では、JTAG/SWDピンからデバッグアクセスがあったとしても、マイコンはそれに反応しません。
これを制御しているのは、JTAGピンのリマップ機能ですが、本書の環境では、lib\Platform\xxx.hとして配置されているマイコンボード毎の設定ファイル冒頭部分の、
#define JTAG_Disabled_SWD_Enabled |
といった記載です。この部分に定義に応じて、lib\Platform\boardinit.c内のRemap_JTAG関数がリマップを実行しています。
実際にこれを変更する場合には、lib\Platform\STBee_mini.hの冒頭部分の、
#define JTAG_SWD_Disabled |
となっている部分を、
#define JTAG_Disabled_SWD_Enabled |
と書き換えて下さい。これを前提にプログラムをビルドします。どんなプログラムでもかまいませんが、test_obled_toggleあたりが簡単でよいでしょう。ビルドの際は、all_cleanを実行してバイナリを完全に消去してから行って下さい。
通常通りDFUを使って書き込めばこれで準備完了です。外観上の変化はありませんが、SWDピンへのアクセスに反応する状態に変化しています。
配線の変更
STBee Miniは、SWDデバッグに使用するためのピンであるPA13がオンボードLEDに、PA14がUSB_DISCONNECTとして使用されています。SWDアクセスと干渉する恐れがありますので、変更する必要があります。
配線の変更はいろいろな方法がありますが、私は以下の方法をとりました。なお、私が実験した限りでは、PA13はそのままでも特に支障はありませんでしたので、そのままとしています。
・PA13 LED1 → 変更無し
・PA14 USB_DISCONNECT → 配線カット
・PA15 LED2 → LED2への配線カット・USB_DISCONNECTとして使用するためD+ラインに接続
実際には以下の通り配線を変更しています。
まず基板裏面の、下記写真の丸で囲まれた部分のパターンをカットします。ここはPA14からD+へのラインです。このラインであればどの位置で切っても構いません。アートナイフや大きめのカッターナイフを使うと切りやすいでしょう。
次に基板表面の下記の丸で囲まれた部分をカットします。これはPA15からLED2へのラインです。
次にPA15とD+のラインを接続するため、下記の写真のビアホールをポリウレタン銅線などで接続します。
これで変更完了となります。ST-LINKやVersaloon等を使用して、書き込みができるかどうか試してみて下さい。