STM32

機械研でよく使用されるSTM32について皆で情報共有できるページにしましょう。 古い内容はSTM32_oldに移行しました。

CONTENTS

STM32とは

 STM32シリーズはSTMicroelectronics社が製造する32bitマイコンのことである。特徴としてはARMのCortex Mシリーズを搭載していること、mbedという抽象度の高い開発環境でサポートされていることなどがあげられる。
 AVRではクロックが足りないとき(速いものでは200MHz近いものがある)や、メモリが足りないとき、IOがたくさん欲しいときに使用すると良い。と言うか性能的にはほぼすべての点でこちらの方が上である。考慮すべきは価格と開発環境であろう。
 F1シリーズは安価な割にネイティブでUSBがついてる。

開発ボード

Nucleo

 STMicroelectronics純正の開発ボード。秋月でも売っている。安くても1000円は優に超えるがそれで高いという人は中華Arduino互換機に侵されている。高い……
 Nucleoと一口に言っているが、載っているSTM32は様々である。端的に言えば高いやつほどいいのが載っている。
 Nucleo-32,Nucleo-64,Nucleo-144という言い方の場合はピン数を示している。

Development Board

 その名の通りの開発ボードだが、Nucleoに比べていろいろ周辺回路が増えている。STMicroeletronicsの意向で周辺回路の質のわりに異様に安いらしい。
 SDRAMがくっついていることが多いので、その点では使いやすいか。

Blue Pill

 Maple Miniという開発ボードの互換品。STM32F103C8T6が載っている。こいつに載っているやつは大体なぜかフラッシュメモリ128kBである。本当にSTM32なのだろうか……
 mbedすることもできるが、STM32duinoでサポートされているのでArduinoで開発できる。
 最大の利点はその安さでAliexpressで2ドルほどである。(2017年12月現在)
 USBについている抵抗値が間違っているという設計ミスが直されないまま量産されているので場合によっては付け替え必須。
 仲間にBlack PillとRed Pillがいるらしい。

書き込み装置

ST-link

 STM純正の書き込み装置。Nucleoのパキっと切り離せる部分がこれである。STM32F102が載っている。
 実はすでにこれはリバースエンジニアリングされていて、Aliexpressから2ドルくらい(2017年12月現在)でコピー品を買うことができるし、作りたければ自分で作ることができるらしい。
http://startbit.jp/2014/05/07/st-linkv2-%E3%82%92%E8%87%AA%E4%BD%9C%E3%81%99%E3%82%8B%E3%80%82%E5%AE%89%E3%81%8F%E3%81%A6%E5%B0%8F%E3%81%95%E3%81%84%EF%BC%81/

JTAG

 STM32はJTAGでの書き込みにも対応している。
 JTAGも自作することはできるらしい。

USB

 USBインターフェースを持つものに限るが、ブートローダーを書き込んでおけばUSBからも書き込みすることができる。

周辺回路

ピン配置

チップによってはまぎらわしいくぼみがあり,データシートを見てもの1番ピンの位置がわからないものがあるようです.次の写真のようにいかにもピンインジケータっぽい方が1番ピンです.文字の向きも参考にはなると思いますが,全てのチップで同じ向きに文字が印刷されている保証はありません.

stm32.jpg

最小回路構成

AN2586 (getting started) を読めば必要な回路構成がわかる.
といっても実際のところ,bootモード選択用スイッチを除けば,コンデンサをつけるだけである.

以下の回路について,

開発環境構築(hal library)

とりあえず以下のサイトが参考になった。
http://birdhouse.hateblo.jp/entry/2016/07/28/151525

いくつか注意点
・CubeMXはサイト下部からダウンロードするのではなくサイトの真ん中あたりにあるDescriptionにSTM32CubeMX Eclipse plug in for STM32 と書いているものをダウンロードする。
・OpenOCDの設定時にST-Link v2で書き込む場合は
f interface/stlink-v2.cfg
を書き加える。
・mbedを使用するとTIM5がつぶされてエンコーダを読めるタイマーの数が減る。