2018年7月25日水曜日

STM32F3

 最近暑いですね。暑いと言っても30℃前後ですが、ずーっと北海道に住んでる身としてはつらい。部屋で座ってるだけでも汗が出てきます。

 今回、オペアンプが1回路欲しい基板があったので、試しにSTM32F3を買ってみました。秋月で扱ってる唯一のF3チップである、STM32F303K8Tです。1個400円くらいです。変換基盤も合わせると500円位しますが。
 32ピンQFPで、0.8mmピッチなのではんだ付けもしやすいです。

 このチップは72MHzまで(HSIは64MHzまで)ですが、Cortex-M4コアを持ち、FPUも内蔵しているようです。オペアンプやコンパレータ、タッチセンサのようなアナログ回路もいろいろ載せています。



 QFPのはんだ付けは何年ぶりかなーという感じです。久しぶりすぎてコツとか忘れてます。
 0.5mmピッチだとガーッとハンダ盛って吸い取り線で抜いたりしてましたが、0.8mmピッチならコテを滑らすだけで綺麗に抜けていきますね。楽でいい。

 電源周りはデータシートに書いてあるとおりに作りました。
 VDDの0.1uFとVDDAの0.01uF、リセットの遅延の0.1uFを変換基盤の上に実装、VDDの4.7uFとVDDAの1uFはユニ基板側に実装しています。VDDAとVDDの間には470Ωのチップインダクタを入れてみました。
 また、BOOT0とその横にあるPB7を短絡し、47kでプルダウンし、タクトスイッチでVDDに引っ張り、BOOT0とUSER SWを兼用しています。

 32pinパッケージではBOOT1ピンがありません。大型のパッケージではBOOT0がHの場合に、BOOT1がLならシステムメモリから、BOOT1がHならRAMから起動する、といった感じになっていたと思いますが、それができません。BOOT0がHの場合は毎回ブートローダが起動するようです。
 そもそもマイコンの電源が切れたらRAMに入ってるプログラムは消えるので、毎回何らかの手段でRAMに転送する必要があります。ブートローダでRAMに転送するなら、ブートローダからRAMに飛ぶコマンドを叩けばいいし、Flashからのプログラムで起動するならそこからRAMに飛べばいい、ということなのでしょう。

 テスト基板にはFT232の6pinコネクタがあり、電源はここから5Vを得て3.3Vに変換しています。STM32F303K8にはUSB Phyが無いので、USBブートローダを使用できません。ということで、以前F1用に作ったUART経由のブートローダでプログラムを書き込んでいます。
 F1の場合はイレースを0x43コマンドで行いますが、F3にはこれがないので、0x44コマンドを追加しました。

 とりあえず、CubeMXでクロックの設定(HSIの8MHzから64MHzを作る)と、ユーザースイッチやユーザーLEDの設定を行い、RTOSは使用せず、メインループの中でLEDをトグルし、ユーザースイッチの状態に応じてforループの回数を変えてディレイする、という処理にしてみました。
 何の問題もなく、気味が悪いくらいあっさりと動作しました。


 ということで、これからFreeRTOSを走らせて、それからオペアンプやらの動作確認に移ろうと思います。

0 件のコメント:

コメントを投稿