クランクのCPU基板作り直すついでん、ATMEGA328P8MHzをやめて、STM32F103C8T6(BluePill)をアマゾンから仕入れました。
価格は1個300円台と格安ですが、CPUは、Cortex-M3 72MHzと高性能なCPUです。しかし、安くて高性能には裏があって、プログラムを書き込むために、BootLoaderを書き込んだり、STLINKと接続したりと手間がかかりました。
■ご注意
この格安CPU、稀にみる極悪不良製品であることがわかりました。STMの失敗作です。
クロックが、クリスタルでなく、MEMSで作られていて精度が数百ppmと通常のCPUが
20ppmですので、5~数十倍悪くて、ADCなどするとサンプリング周期がめちゃくちゃになります。外部クロックをいれてやらないとまともな動作はしません。詳細記事はこちらにあります。
私は、安いので10個も買ってしまって、安物買いの銭失いそのものでした。
【パワーメーター2019】位相ズレCPUクロックバラツキ怪しい<STM32F103C8T6が怪しい>
【CPU】STM32F103C8T6はmbedなら楽ちん<ST-LINK接続>
①Arduinoとして使う
WEB検索のほとんどは、Arduinoとして使う方法を解説されてます。最も詳しかったのは、このページです、作者様に感謝です。
https://ht-deko.com/arduino/stm32f103c8t6.html#03_03
このページには、すべてのBootLoader書き込み手段とTIPSが書かれてますが、どれを使ったらいいかわからなくなったので、別途、一番シンプルな書き込み方法を探したらこのページがありました。作者様に感謝です。
Mac & Blue PillでSTM32duinoを使うためにブートローダーを書き込む
1、USBシリアルモジュールの配線 | ①USBシリアルモジュールのTX=>CPUのRX RX=>CPUのTXにつなぐ =>TXRX信号電圧レベルは3.3VTTLです。 ②電源は、5Vなら5Vピンへ 3.3Vなら3.3Vピンへ接続する |
2、必要なTOOLとのDOWNLOADとArduinoIDEの設定 | ③BootLoaderファイル generic_boot20_pc13.bin https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/binaries/generic_boot20_pc13.bin?raw=true④書き込みTool STM32 Flash loader demonstratorを使います。 STマイクロのHPにありますが、Downloadするには、会員登録が必要です。他の方法より簡単です。https://www.st.com/ja/development-tools/flasher-stm32.html⑤ArduinoIDEでSTM32へプログラムを書き込めるようにするための作業 これはこちらのページの解説をみながらやりました https://ht-deko.com/arduino/stm32f103c8t6.html#03_031、ボードマネージャの追加 Arduino SAM Boards (32-bits ARM Cortex-M3)を インストール 2、Arduino_STM32 を導入 ここからDownLoadして解凍して https://github.com/rogerclarkmelbourne/Arduino_STM32 Arduino IDE インストールフォルダ>\hardware フォルダに Arduino_STM32 サブフォルダを作っていれておくこれで、ソフトの設定は終わり |
3、BootLoader書き込み | ⑥CPU上にDIPスイッチをISP書き込みに変更します。(上記参考ページでは、Boot1をずらすと書いてありますが、誤りでBoot0をずらします) Boot0とBoot1のジャンプは初期にゼロ(Flash書き込み)になっているところをBoot0のジャンパを1へずらす(ISP書き込み) ⑦STM32 Flash loader demonstratorを立ち上げ Bootファイルを書き込みます。 この作業は、上記シンプルなページをみながらでも 詳細なページでは、一番下に Flash loader demonstrator 記事があります。書き込めたかどうかはCPUでは何の反応がありませんのでArduinoIDEで書き込み行います。 |
4、Arduino IDEでスケッチの書き込み | スケッチの書き込み方法は3つありますが、ここでは 上記BootLoader書き込みで使ったUSBシリアル配線そのままを使います。 詳細なページのこちらをみながらやってできました。 スケッチの書き込み (シリアル経由)注意1:スケッチ書き込みはISPモードでジャンパBoot0を1にずらしておきます。助っ人書き込みが終わったらはジャンパBoot0をゼロにもどしておきます。 |
●以後
詳細なページの一番下にSTM32F103C8T6の機能の解説がありますが、RTCも内蔵されていたり高機能ですので、使いこなせればArduinotとmbed両方対応できますので、アプリケーションによってサンプルプログラムの有無でArduinoとmbedを同じCPU基板で使い分けできるので便利だと思います。