SNSへはこちら

STM32いじってます

サークルでポンコツステッパマウスを作っていたのですが、小型のステッピングモーターに嫌気が差したので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等をある程度使えるようにすることとしています。テスト勉強中なので、まあ夏休みになって合宿免許で暇になったら出していきたいと思います。今年の夏はスタートアップファイル・リンカスクリプトをそれなりに理解すること、量子力学を独学でやることを目標にしたいと思っています。