お知らせ:この記事はJLCPCBの提供でお送りしています。

みなさんこんにちは。最近はマイコンを使った電子工作というと私もよく使うEspressifのESP32シリーズやRaspberry Pi Pico/RP2040が話題に上ることが多いかと思います。これらのマイコンはかなりパワフルで遊び甲斐がある一方、ESP32は入手しやすいモジュール形式だと意外とサイズが大きかったり、ADCがいまいちだったりします。RP2040も単品で手付けしようとすると0.4mmピッチQFNであることや、外付けFlashが必須なことなど、いろいろ悩ましいポイントもあります。

ササっとマイコンはワンチップで済ませたいとか、小物を作るのでフットプリントが小さい方がよい、でもそこそこ性能は必要という時だとSTM32シリーズをはじめとした Cortex-Mシリーズのコアを持ったマイコンがよく使われます。この分野ではNXPや前述のSTM32のSTマイクロのマイコンがメジャーですが、2015年ごろから登場した中国・北京のGigaDeviceをはじめとして、各種マイコンベンダーから”xx32Fxxx”という、STM32マイコンを強く意識した、いわば「ジェネリックARMマイコン」とでも呼ぶべきようなCortex-Mコアを搭載したマイコンが流通しています。

これらのCortex-Mマイコンは似た品番のSTM32マイコン(例えばSTM32F103→GD32F103 など)より最高動作周波数が高かったり、強く意識しているであろうSTM32マイコンの似た品番の品種にない機能が追加されていたりと、独特の進化を遂げています。また、STM32比で安かったりと、ドキュメントやサポートの体制を気にしないで使える1趣味の電子工作で扱うにはなかなか魅力的な存在となっています。今回はそんなジェネリックARMマイコンベンダーの一つ、ArteryのAT32マイコンを使ってみました。

今回はQFP48ピンパッケージのAT32F403ACGT7をチョイスし、お試し用の基板を作成しました。基板製造と小物RC部品の実装はJLCPCBで行ってもらい、マイコン、水晶、3端子レギュレータなどは手付けしました。私はJLCPCB Assembly Libraryでの在庫を確認せずにAliExpressで調達してしまいましたが、JLCPCB Assembly LibraryにもAT32F403ACGT7の在庫はあり、6月4日時点で$2以下と大変安価になっています。

ファームウェアを書きこむためのライターはAliExpressで”AT-Link“と検索するとヒットします。4000円くらいするので、マイコンを1個しか使わないのだとするとちょっと高いかもしれません。CMSIS-DAP対応のデバッガーを持っていれば、AT-Linkを買わずに使うこともできると思います。

AT32F403ACGT7のスペックを以下にざっくり書いておきます。

  • Cortex-M4F 最大240MHz動作
  • 96KB RAM+1024KB Flash(RAMは96KB+128KBに拡張可能)
  • 汎用タイマ、I2S、SDIO、USB Device搭載
  • ADC 12bit 3ch/DAC 12bit 2ch

ちょっと面白いのがメモリで、データシートによると以下の2構成に対応しているようです。

  • 96KB RAM + 256KB No Wait Flash + 768KB Non-Zero Wait Flash
  • (96+128)KB RAM + 128KB No Wait Flash + 896KB Non-Zero Wait Flash

おそらくこのマイコンの”No Wait Flash”はFlashメモリではなく、起動時にFlashメモリからデータがコピーされるキャッシュメモリのような領域を指しています。128KBの領域をキャッシュメモリとして使えば前者の構成となり、プログラムから自由に使えるRAMとして割り当てれば後者の構成となるというわけです。

この手のジェネリックARMマイコンでは、Flash以外の回路を搭載したメインのチップと、汎用品のSPI Flashを1チップに収めたSiP(System-in-Package)構成になっていることがあります。こうすることでFlashの容量を柔軟に変更できるようにしつつ、コストがかかるFlash混載プロセスを使わずにメインのチップを作れるというメリットがあります。(一方で消費電力や起動時間の増加というデメリットもあるはず…)このマイコンもそのようなSiP構成となっていて、起動時にキャッシュメモリ領域にデータをコピーしているのだと思います。本当に2チップのSiP構成になっているかは今度炙って中身のチップを取り出して確認してみる予定です。

その他、個人的には音モノを作るのに使おうと思っているので、12bitのDACが2系統ついているのはうれしいポイントです。試作基板でもDAC出力は2系統引き出しています。もちろんI2Sで外部にDACを接続してもいいのですが、ちょっとしたLo-Fiな小物を作るときにはDACが付いていると便利です。

開発環境もAT32 IDEというEclipseベースの(よくある)IDEが提供されていますし、GitHub上に公開されているライブラリに通り一遍のペリフェラルを制御するための関数やサンプルコードが揃っているため、悪くはないと思います。そんなわけでとりあえず練習がてらsin/cos信号をDACから出力するサンプルを改造して、サンプリング周波数を48kHzに固定した状態で動くようにしてみました。今後はsin/cos信号ではなく、マイコン内で合成した音を出したりして遊ぼうと考えています。

今回紹介したArteryや記事中で紹介したGigaDeviceなど、ジェネリックARMマイコンベンダーはたくさん出てきています。特色のあるものもないものもいろいろありますが、たまに遊んでみると面白いかもしれません。

  1. いや、もちろんサポート体制は整ってれば整ってるほどうれしいですが…
公開日:2023/06/05 最終更新日:2023/06/06