【CPU】STM32F103C8T6_Arduino用<次はmbed用>

クランクの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を使うためにブートローダーを書き込む

●私がやったArduino用手順

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をゼロにもどしておきます。
注意2:ArduinoIDEで書き込み失敗があるので注意
私の場合2回に1回は失敗しました。スケッチ書き込み直前にCPUのリセットボタンをおしてから書き込み操作を開始するとうまく書き込めます。
下記スクリーンショット参照

●以後
 詳細なページの一番下にSTM32F103C8T6の機能の解説がありますが、RTCも内蔵されていたり高機能ですので、使いこなせればArduinotとmbed両方対応できますので、アプリケーションによってサンプルプログラムの有無でArduinoとmbedを同じCPU基板で使い分けできるので便利だと思います

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です