PCからUSB-UART変換でデータを送信し、そのデータをマイコンからSPIでフラッシュに書き込む、というのをやっている。
どうも書込みが間に合っていないようで、何の問題なのかはっきりしなかったので、ロジアナで解析してみた。
使っているのはAmazonで購入したUSB接続の格安ロジアナ。本当に便利で、もっと早く買っておけば良かったと後悔したくらい。
UARTやSPIの信号を解釈してデータ表示してくれる。SPIは6MHzのクロックで動かしていてもしっかりデータを見られるので、通常の使用なら全然問題ない。
あとは、処理の前後で適当なポートを変化させておいて、処理時間を見たりするのに使っている。
これはSPIの信号を見たところで、1バイトの送信後、だいぶ間隔があいてしまっているのがわかる。
結論としては、SPIの送信の合間にUARTの割込み処理がどんどん入ってしまい、SPIの送信が遅れていたということだった。
DMAの使い方の確認が面倒で、DMAを使わないままやっていたのが失敗。処理速度を過信していた。