STM32MF103C8T6BluePillの接続例は、Arduinoがほとんどなのですが、mbed接続例も1個だけありました。Arduinoで接続するのに半日くらいかかったのですが、mbedは1時間程度で完了できました。Nucleo64ボードを持っていたので、ST-LINKV2-1で即接続できてプログラム走らせることができました。
※2019年12月1日記
9月よりつかっていたSTM32F103C8T6は、欠陥CPUであることがわかりました。決して使わないようにしたほうが身のためです。
何がおかしいかというとクロックがばらついていて、まともにうごきません、データサンプリングは危ないです
オシロでみながら周期がでているかみればいかにでたらめかわかります。通常のCPUで20ppm程度の精度ですが、このCPUのクロックは数百ppmとんでもないクロック時間にばらつきをもってます。
失敗作なので、売ってはいけないはずですが、中華メーカーが大量にゴミ価格で仕入れて、安くうっているのではないでしょうか。粗悪品CPUは、世の中に害毒を及ぼしますので注意です。
関連記事
●参考にさせていただいた記事
ゾルタン・フダック様の記事ですが、日本語PDF化ファイル。
丁寧な解説記事で感謝です。
https://os.mbed.com/users/hudakz/code/STM32F103C8T6_Hello/
●手順
①ST-LINKの準備
手持ちのNucleo64ボードは、F446REなので
基板上部のST-LINK部だけ機能させるために、2個のジャンパを除去しておきます。
②結線
BluePillには、SWDピンが突き出てますので、そこと
ST-LINKのCN4のSWDピンを接続します。
こちらの記事のScreenShotです。
ここで注意なのは、BluePillへの電源は、NUCLEOの3.3Vから別途いれてあげないといけない点です。SWDコネクタのVddは電源になれないそうです。
Nucleo64ボードのマニュアルの詳細ピン仕様あります。
実際の配線写真
●通電してUSBドライブとして認識されて接続完成です。
これだけの結線で、Arduinoで行っていたBootジャンパーやソフトのインストールは何もしなくても完成します。USB仮想ドライブ(NucleoF446RE)として認識されますのでコンパイルしてbinファイルをコピペすればプログラム書き込み完了となります。
●プログラムのモニターでUSBシリアル取付け
プログラムを書き込んだら、ST-LINKをはずして
USBシリアルを接続します。今回の配線では
TX:PA_9,RX:PA_10,電源:5Vピンへ,GND:GNDピン
秋月のAE-TTL-23http://akizukidenshi.com/catalog/g/gK-09951/2モジュールを使ってますが、これは信号線だけ3.3V5Vの選択がDIPでできますが、
電源は5V供給になってますので、USBシリアルコネクタの電源は、CPUの5Vピンへ入れます。
●HelloWorld、blinkプログラムで動作確認
オンラインコンパイラで、BLINKとUSBシリアル送信プログラムを作りました。ターゲットCPUボードは,仕様がにているNucleoF103RBを指定します。
約0.2秒のLOOP時間精度も測定しましたが、
201780.3usec±56.4usec(0.03%3Σ)と
精度は良かったです。
=>短時間の評価でよかったと判断したのが間違いの始まりで3か月後にとんでもなくクロックがばらついているのに気づいて3か月がバーになりました。
甘い実験評価は、一生の時間を無駄にしますので、皆さんも仕事、研究以外趣味でも適当な実験評価は、人生の時間を無駄にしますので注意です。
3
●以後
基板にSTM32F103C8T6がmbedで便利に使えることが判ったので、クランク基板はmbedでプログラムを組みます。ついでに、このBluerPillの多機能性を活用しようと思います。RTCでクランクデータにタイムスタンプをつけえようと思います。