h_nari @ 熊本市のブログ。電子工作、プログラミング、ゲーム、TV、 政治、インターネットなどに日々の思い付きを、 うだうだ~と書いていきたい。
このブログにはコメント欄を設けておりません。 記事への御意見、ご質問はtwitter @h_nari宛に お願い致します。


アーカイブ


アマゾン・ベストセラー

メタ情報
RSS
Login

Seeeduino XIAO考

HDDサンダーをマイコンで定速制御してやろうと 基板を製作、プログラムを作っている。 マイコンは先日購入した Seeeduino XIAOを使用しているのだが、 気が付いた点が幾つかあるので 紹介する。

  • ユーザプログラムが暴走するとプログラムが書き込めなくなる。
  • プログラムを書き込むとリセットされるので、PCにUSBが 外されましたとか接続されましたとか表示されうるさい。
  • CPUはMicrochip(Atmel)の SAMD21G18。CPUはARM Cortex-M0+ だが、周辺I/Oの癖が強い。アドレス空間をケチっていて8bit CPUっぽい。

プログラムの書き込みはUSB経由で行うが、USBの機能は CPUが提供、ArduinoのフレームワークからUSBの処理ルーチンが 呼び出されるので、ユーザプログラム中でプログラムが止まる (無限ループに入るとか)するとUSBが止まり、プログラムが 書き込めなくなる。この対策としてXIAOには基板にリセット端子が あり、 チョンチョンと2回ショートしてやると、ユーザプログラム が呼び出されない書き込み専用モードでたちあがり プログラムの書き込みが可能になる。 このモードの検出のためだと思われるが、 電源投入後、ユーザプログラムが起動するまで2秒程度待たされる。 組み込み機器を作る場合、この待ち時間はチョット嫌だ。

HDDモータの出力をPWMで制御するのだが、 analogWrite()だとPWMの周波数が 735Hzで DRV11873の仕様(7~100kHz)に合わないので 変更する必要があり、SAMD21の Datasheetを調べた。 なんとか目的は達成することができたが、 SAMD21の制御レジスタが狭苦しい。 制御レジスタの値で内部レジスタを選択し 値を書き込む感じ? 内部レジスタに書き込めるけど読み出せないとか。 内部レジスタを表に出して、直接読み書きさせてくれよと思う。

ということで、 開発中のボードは仕方ないが 次からは別のCPUにしようかと思っている。

Seeeduino XIAOの良い点も上げる。

  • 安い。 秋月で580円
  • 小さい。 20x17.5mm。
  • 基板端面もメッキされているので、基板に直接はんだ付け可能。
  • Arduinoで開発できる

Arduinoで開発できると、 開発環境がすぐに手に入るし、 ライブラリ、サンプルプログラムも大量に入手できる。 プログラムの公開もしやすい。

XIAOの良い点もカバーできる代わりのものが無いかと AliExpressを物色したところ STM32F103C8T6ボードを発見。 200円ぐらい。 STM32F103なので Cortex-M3でFlash32K/RAM10K。 Arduinoは Arduino_STM32 が使えるようだ。 基板がXIAOより大きいという問題があるが、 基板に組み込みたければ直接チップを 乗せれば良い。LQFP48ピンなのでハンダ付けも楽。 チップもAliExpressなら 100円/個ぐらいで買える。

ちなみにdigikeyだと 500円/個ぐらいする。 STmicroのCPUは中国で安い。 あまり安いので中国製コンパチチップ GD32F103のリマーク偽造品ではないかと疑うが、 GD32F103の方が 若干高い

ということで、次はSTM32F103にしよう。 しかし、作った装置を手軽にPCにつないで遊びたい時には WiFi/HTTPで通信できるESP32が便利。 ESP32 devkitと共に注文しておこう。