はじめに
STLINKを使う話を何気なく投稿したところ、使い方がよくわからない・教えてほしいという声を複数耳にしたので、メモしておきます。何気なく使っていましたが、整理してみるとそこそこわかりにくい点もあったので、そのあたりわかるようにまとめていきます。
使おうと思ったきっかけ
いくつかありますので、箇条書きで書いていきます。
・秋月で売っている
digikey, mouserを使わないといけない部品に比べて心理的ハードルが小さい。いざというときに安心。大体こういった部品は壊れてほしくないときに限って壊れたりするので、入手性は馬鹿になりません。
・小型
ごっつい感じのケースとか無いのがいいですね。
・USBコネクタがタイプC
Nucleoパキッをやりたくない主要因がコネクタがminiBであることだったりするので、これは嬉しい。
Nucleoパキッをやりたくない主要因がコネクタがminiBであることだったりするので、これは嬉しい。
・Virtual COM
SWD以外にUARTも使える。いろいろ嬉しい。
・SWD書き込みが使える
これは頭痛が痛いとかと言っていること同じ。
使用例
まず使っているものの画像を以下に示します。
続けてマニュアルの一部を示します。
STLinkからはこのうち3, 4, 6, 7, 8, 10番の6ピンを出してあります。この中から必要なものを対象の回路に合わせて使うという感じです。
今回はこの6ピンに加えて変換ケーブルでSTM側のBootピンを10番かHi-Zかにできるようにスイッチをかまして7ピンをマウス側につないであります。マウス側ではBootピンはGNDにプルダウンされてるので、こうすることでブートモードを書き込みコネクタとつないだときのみ外部のスイッチで切り替えられるようになります。
7ピンのコネクタはハーフピッチピンソケット。EntranceもLightningもこれを使っています。サイズ感と断線の少なさ的にそこそこいいかなと思っています…が接触不良になることもなくはないです。やっぱり小さいコネクタはだめだわ
初見でわかりづらそうなところ
多分以下2つが分かりづらい気がします。
① T_VCCはターゲットとなるマイコンのVCC電圧を検出するためのピンであって、ここから電源は出ていない&ここをつないでいないと正しく動作しない
② T_VCP_RX, T_VCP_TX は「ターゲットの」RXDとTXDにつなげという意味なので、TXDとTXD、RXDとRXDをつなぐのが正しい
右のInput、Outputを見ればまあそうなんだろうなーと勘付きますが、読解というか空気を読む必要が若干あって紛らわしいですね。
あとNRSTはSoftware Resetで使う分には出さなくてOKです。これはほかのSTLinkもそうだった気がします(うろ覚え)。
少しハマったところ
windowsのCubeProgでは特に何もせずに動きましたが、手元のubuntu22.04では、はじめSTLinkが使えず、少しハマってしまいました。
エラーメッセージは下記。
libusb: error [get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/003/007, errno=13
libusb: error [get_usbfs_fd] libusb requires write access to USB device nodes
見たところSTLinkの認識自体はされていたので、ハードウェア的な問題ではないだろうと当たりをつけつつ、さらに見ていったところ手元のNucleo(STLink-V2)は問題なく認識されたので、ソフトがファームウェアに対応していないのだろうと推測。
ここからソフトを落としてきて
sudo dpkg -i <location>/stsw-link007/AllPlatforms/StlinkRulesFilesForLinux/st-stlink-udev-rules-<version>-linux-all.deb
で、無事使えるようになりました。ヨカッタ。
あと、STLinkの話というと少し違いますが、最近今更になってCubeProgのCUIがあることに気づきました…。なんで今までGUI使ってたんだ…。
終わりに
あんまり言われるまで気にしていませんでしたが、言われてみると書けるネタは結構ありましたね。
使い方にクセのあるものをあまり気にせずに使えるのは悪いことではない気がしますが、不便さに気づかないのはそれも考えようかなと思ったりする、今日この頃です。
0 件のコメント:
コメントを投稿