色々な機能がてんこ盛りでArduino互換ということで鳴り物入りで登場したSONY Spresenseではあるが、非常に残念でならない所がある。
Arduinoとは完全互換でない所だ。

特に、ADCがそうだ。
元祖Arduinoであれば、アナログのどのチャンネルを使っても同じように使えるのだが、Spresenseの場合、アナログ入力A0~A3はサンプリングレートが約65Hz、A4/A5は約6kHzという残念な仕様。
高い周波数を使うようなFFTを作る場合には、Spresenseは使えないということだ。
しかも、メインボードの方が0.7Vレンジであるため、メインボード単体では、0.7V以上の電圧が入れられない(拡張ボードには、アッテネータが入っているから、5Vまで入れられるらしい)。

英文のドキュメントには、Spresense SDKを使えば高いADC性能を引き出すことができるとあるのだが、やっとの思いでSpresenseに構築したNUTTX環境を見てみると、認識しているADCのハードウェアは、hpadcとlpadcの2種類となっており、Spresense SDKでADC入力のサンプリングレートがチューニングできるのかと期待していたのだが、どうやら違うみたい。
ハードウェアの仕様の壁(特にサンプリングレート)を越えることができないようで、これだったらArduino IDEでも一緒。
態々、Spresense SDKにするまでもないのかな…。

Spresenseを使ってFFTを作りたければ、Arduino IDEの使用例でマルチコアを使ったFFTの実例があるのだけれど、単にLEDを光らす程度のお遊びで使う分には問題ないけれど、周波数確度としてはイマイチだった。入力も、ADCではなく、マイク入力から行うようになっているし。

他のArduino互換と謳っているボードもそうなのかしらん??