評価ボードではなく、マイコンを単品で購入した時に、プログラムの書き込み方をまとめてみました。下の写真は、KinetisマイコンMK64FN1M0VLL12です。FRDM-K64Fに使われているマイコンです。
単品で買うとこんな感じで梱包されてきます。今回は、このいわゆるblank MCUにプログラムを書き込みし、Lチカを動作させたいと思います。
プログラムはSWD (serial wire debug) というARMがつくったデバッグインターフェース経由で書き込みます。プログラマー自体は前の記事で紹介したPEmicro のMultilink universal FXを使用します。
まずピンにアクセス・・・
WaveShare-Socketという所から、QFP100ピンのマイコンチップ用のアダプタが売っています。これだと、ハンダ付けせずに各ピンにアクセスできるので、便利です。
値段はたしか8000円ぐらいと高めです。そのかわり、動作確認後に基板に実装できるので、マイコン自体が無駄になりません。
そんなの高すぎるよって方は、秋月からDIP化用の変更基板が売っています。ただ、これはハンダづけが必要ですが、たしか150円ぐらいでした。
見た目これをハンダするの?と最初は圧倒されますが、QFPとかのマイコンからリードが出ているパッケージは結構ハンダがしやすいです。自分でも、意外と簡単につけられました。
ただ、QFNというリード線なしのICはさすがに難しいので、やめたほうがいいかもしれません。
上の絵も、最初のトライですが、それなりになってます。ちゃんと導通テストも通りました。
書き込み用の回路を作成する
下はMK64FN1M0VLL12を搭載した評価ボードのシステム図です。メインマイコンには10pinのSWDにつながっていて、これにPEmicroのプログラマをつなげ、書き込みをします。
以前、FRDM-K64FにPEmicro経由でプログラムを書いた時と同じ方法です。そのときはこんな感じでつなげてました。
左下がマイコンのSWOコネクタ、右下がPEMicroのコネクタ。
マイコン側のSWOコネクタ PEmultilinkFX側のコネクタ
前回は、この二つをケーブルでつないでましたが、今回は1ピンずつ繋げていきます。
最初、ピン間同士をこのまま、つないでいたんですが、うまく通信できませんでした。NXPに問い合わせしましたが、#2ピンのSWD_DIOは電源でプルアップしないといけないようです。自分の場合はこれで、書き込み処理が始まるようになりました。
ただ、その後、書き込み中にRuntime 216というエラーが頻発しました。
このエラーは、MCUXpressoとPEmicroのファームウェアの相性の問題で発生することもあるようですが、最新バージョンでトライしても、再発する場合は、リセットの端子電圧を確認するとよいかもしれません。
どうも、ソフトダウンロード中にリセットがLowになると、このメッセージが表示されるみたいです。
下は参考です。一応これで書けたってことで、回路を記憶しておきます。
下は実際の作業風景。線が多いのは、電源とGNDのせいです。黄色いのはリセットボタンです。書くだけなら不要ですが、一応つけています。
サンプルプログラムの動作
プログラムを書き込めるようになったので、SDKのサンプルコード”frdmk64f_led_blinky”を書き込んで実行してみます。
が、いつまでたってもLEDは光らないので、どうした?と思ってしらべてみたら、外部のクロックを使います的な処理の所で、スタックしてました。
/* Wait for CLKST clock status bits to show clock source is ext ref clk */
while ((MCG->S & (MCG_S_IREFST_MASK | MCG_S_CLKST_MASK)) !=
(MCG_S_IREFST(kMCG_FllSrcExternal) | MCG_S_CLKST(kMCG_ClkOutStatExt)))
{
}
FRDM-K64Fは外部クロックがついてますが、マイコン単体では当然ないので、外部のオシレータは使用しませんとプログラム上で、明示しておく必要がありました。
設定は簡単で、もはやコードを書く必要すらありません。
ツールバーから Open Clocksを選択して、
番号の順に設定していくだけです。MSGモードをFEI (FLL Engaged internal)にして、OSCのブロックを右クリックして、Disableにします。
そして、最後にコードをアップデートして終了です。これでクロックの初期化で処理がとまることはなくなります。
下のように無事Lチカが成功しました。
以外に簡単にできました。MCU単体を扱うのって意外にハードルが低いので、あとは自分なりにカスタマイズしていけば、楽しい時間が過ごせます。
バンザイ ブランク MCU ♡