前回、デバッガ&ライタST-LINKの話を行いました。
次は、自作STM32F446汎用基板の書込みと動作確認を行っていきます。
これから確認しながら行うため自作汎用基板の回路図を再掲載

ハードウェアをセッティング
今回は、Nucleoに標準搭載されているST-LINKを使って書込みしてみます。
- Nucleoの基板の、CN2のジャンパを外す
 - NucleoのCN4(SWD)と自作汎用基板のJ3(SWD)をピンソケットケーブルで接続
 - NucleoとパソコンをUSBminiケーブルで接続
 - 自作汎用基板とパソコンをAE-FT234X経由で接続(5V,GND,Tx,Rx)
 

STM32CubeMXのセット
自作汎用基板のピン設定をSTM32CubeMXで行っていきます。
- 8MHzの共振子を接続
 - 32.768kHzの水晶振動子を接続
 - SWDの接続
 - USARTの引き出し
 - USB_OTGの引き出し
 - プログラマブルLEDの名前をD2に
 - スイッチの名前をSW1に
 
プロジェクト新規作成
前に作ったNucleoプロジェクトをClose Allした後、新しくProjectを画像の手順で作成します。

実装したマイコンの型番は、STM32F446RCT6なので、以下のように入力してマイコンを選択します。

名前を入力して、Finishを押します。

STM32CubeMXの画面になります。

Pinout & Configuration
GPIO_Output&GPIO_Input
簡単なところから始めると、PA5はLEDに繋がっているので、outputに切り替えていきます。
PA5のピン領域で左クリック、GPIO_Outputを選択。

切り替わりました。

名前をシルクに合わせてD2に変更していきます。
PA5の場所で右クリック、Enter User Laberを選択。

D2を入力してEnterキーを押す。

変更完了です。

同じようにPC13のピンも、GPIO_Inputに設定してSW1に変更。

周波数設定
次は、クロック入力周りの、8MHzの共振子と、32.768kHzの水晶振動子を設定していきます。
System CoreのRCCを選択して、HSEとLSEを両方共Crystalを選択すると、ピン領域が緑色に変わり設定されます。

周波数の入力は、隣のタブであるをクリック。
画像のように、左側のInput frequencyのLSEのところに”32.768″を、HSEのところに”8″を入力します。

真ん中の更新アイコンを押すと、周辺回路で使用する周波数が自動で変更されます。

ST-LINK(SWD)
ST-LINK経由による書込やデバッグが行えるようにするには、
System CoreのSYSをクリックして、DebugにSerial Wireを選択すると、下記のようにPA13、PA14、PB3,のピン領域が変更されます。

USART&USB OTG
通信周りである、USARTとUSB_OTGをセットしていきます。
Connectivityをクリックして、USART3をクリック。Asynchronous(非同期)を選択します。

USB_OTG_FSをクリックして、OTG/Dual_Role_Deviceを選択します。

これでSTM32CubeMXの設定は完了したので、保存します。

そうすると、コードを生成するか聞かれるのでYesボンタをクリックします。

生成コード確認と書込
main.cを開いて、91〜93行目に自動でコードが生成されているのを確認したら、
D2のLEDを点滅させるプログラムを入力して、コンパイル&ST-LINK経由で書き込みしてみます。

無事、1Hzの周期でLEDが点滅してくれました。

次は、UARTとUSB経由での書込みを行ってみます。
