サークルでポンコツステッパマウスを作っていたのですが、小型のステッピングモーターに嫌気が差したのでDC作ろうかなぁと思います。お金がないから今年は無理でしょうが。え?「ステッパ完璧にしてからやれ」??そうですね、平行してやります(無視)。
僕のマウスは例によって114514ことLPC1114を使っているのですが、DCとなると色々と機能的に厳しいので位相係数モードの付いたSTM32を使ってみたいと思います。ということで、
STM32を学習しようキャンペーン
です。また例によって開発環境をMacで揃えたい変態ですので、WinなんとかとかLinなんとかはちょっと触れることが出来ませんが、ご了承くださいね。
開発環境
Macだと一択です。System Workbench for STM32(以下SW4STM32) ですね。またEclipseか。書き込みはNucleoという名の ST-Link v2を使います。下半分はポイーしました。これでSW4STM32にそのまま書き込めます。そう、SWDデバッグを使うのです。なんとこれもLPC11U35を使えばそれでも書き込めるんですよね。まあそれはいいとして。
CubeMX
コード生成ツールです。これでやると結構簡単にペリフェラルがいじれるらしいのですが、Mbedが嫌いなのと同じ理由で 生きた心地がしない のでしばらくこれは無視してレジスタを直接いじることにします。
とはいっても完全自力は如何せんネットに情報が少ないので、あくまで参考資料として使います。
書き込み接続ピン
ST-Linkのピン配置は以下のようになってるっぽいです。
St-link part(left Nucleo) | signal |
---|---|
CN4 pin 2 | SWCLK |
CN4 pin 3 | GND |
CN4 pin 4 | SWDIO |
CN4 pin 5 | NRST |
JP1 left pin | +3V3_ST_LINK |
今回購入した石は STM32f303k8t6 なので、これについての話になりますが、以下のピンを接続します。
pin | function | description |
---|---|---|
1 | Vdd_1 | |
2 | OSC_IN | |
3 | OSC_OUT | |
4 | NRST | リセット端子。「N」はnegative?? |
5 | VDDA/VREF+ | アナログ用Vdd |
16 | Vss_2 | |
17 | Vdd_2 | |
19 | PA9/USART_TX1 | (書き込みに使用するっぽい) |
20 | PA10/USART_RX1 | (同上) |
23 | SWDAT | SWS デバッグ用データ入力 |
24 | SWCLK | SWD デバッグ用クロック入力 |
31 | BOOT0 | Hで書き込み、Lで動作 |
32 | Vss_1 |
抽象化レイヤー
基本的にレジスタ直いじりで行きたいのですが、慣れてきたらHALを使ってプログラミングしていこうと思います。よくネットで出回ってる従来のライブラリでは無いのでご注意を。マクロはどんどん使いますが、HALのですかねこれ。いずれにしろマクロは頼って、設定関数や設定関数用の構造体は使わないという縛りでやっていきたいと思います。
進捗の報告
とりあえずソースコードはある程度出来上がっているのですが、解説しつつ記事にするのがだるい一気にまとめるのは大変なので小分けにして公開しようと思います。
目標としては、マイクロマウスに必要な機能とDAC等をある程度使えるようにすることとしています。テスト勉強中なので、まあ夏休みになって合宿免許で暇になったら出していきたいと思います。今年の夏はスタートアップファイル・リンカスクリプトをそれなりに理解すること、量子力学を独学でやることを目標にしたいと思っています。