ST-Link

(2017.6.24 作成) 

 STマイクロさんのマイコンSTM32にSystem workbenchなどのIDEを使用して開発したり、すでに出来上がっているプログラムを書き込んだりするためにST-Linkというライタ/デバッガを使用します。

 本家ST-Microさんも出されていますが、Amazonさんで調べてみると右のように驚きの価格で販売されています。

 ただ、このサイトで多く用いているDiscovery基板やNucleo基板はその一部がST-Linkとして動作するように作られているので、あえて購入する必要はありません。


 例えばNucleo基板の場合、デフォルトだと①のジャンパがショートされており、ST-Linkはターゲットマイコンに接続されていますが、①のジャンパを外すことで②のピンヘッダを使用して別のマイコンに接続することができます。

 この構造はDiscovery基板でも採用されているため、DiscoveryかNucleoを購入すれば1000円ちょっとでST-Linkを入手することができます。

 このST-Linkにもいくつかバージョンがあって現時点では以下のようなものがあるのですが、IDE経由でデバッグを行う際にはあまり違いがないように思います。

 大きな違いとしてはOpenOCDというデバッグ機能が使えるかどうかのようなのですが、正直に言って理解できていません。

  • V1: OpenOCDが使えない? VL Discovery基板で使用されている。
  • V2: OpenOCDが使える。F3 Discovery基板などで使われる。
  • V2-1: mbedが使える。Nucleo基板で使われる。

です。

中華 ST-Link V2

 Discovery基板やNucleo基板を使用して開発している際にはあまり問題ないのですが、安価なSTM32F103C8T6基板を使用する場合や自作基板を使用する場合には別途ST-Linkを準備する必要があります。上記Discovery基板などを使うのも手なのですが、右のような安価なST-Linkを使うこともできます。

 

 ただ、この中華ST-Linkですが、安いだけあって以下のような問題がありますので使用時はご注意ください。


期待する動作

 まず本家ST-Microさんが販売されているF3Discovery基板を用いてF103C8T6 (Blue Pill)に接続した場合のSWCLKとRSTの波形を以下に示します。 データ転送が始まる前にハードウェアリセットが入っていることがわかります。

中華 ST-Linkの動作

 一方、同じように中華ST-Linkを接続した場合の波形を下に示します。そもそもリセット線を接続するケーブルは添付されていないのですが、自分で接続したとしても残念ながらリセット動作は行われません。

 ST-LinkがV1からV2へ変わるときにピン配が変わったようなのですが、それに対応していないのでは?と推測しています。

リセットが機能しない影響

 以上のように中華ST-Linkを使用した場合はハードウェアリセットが機能しないので、System workbenchを用いてSTM32F103C8T6基板を開発する際には右のような

 "Error erasing flash with vFlashErase packet"

というエラーが発生します。

 対処法ですが、System workbenchの場合 Debug configurationから写真のMode Setupを開きデフォルトの

"Connect under reset"から"Software system reset"に変更してください。

 

もしかしたら古いバージョンのIDEの場合このメニューがないかもしれません。

 ハードウェアリセットが使えないため、低消費電力モードでのデバッグができないなどの不具合があるかもしれません。しかしこの中華ST-Linkは筐体も小さく、安いので多少の問題はあってもおすすめです。