はじめに
前回、M5stackのSDカードへの書き込み確認を実施しました。今日は、書き込み速度について計測してみます。
準備
SDカードは、前回書き込めることが確認できた2種類を使用します。FAT32フォーマットをしておきます。WWW情報を調べると書き込みに20ms程度必要だという記事がありました。参考リンクを読みながらArdurinoソースを活用し書き込み時間を測定します。
書き込み時間測定
M5stackのSDカードへの書き込み時間を計測します。以下のように10byteづつ時間とデータを書き込んであとから書き込み時間を計算してグラフにします。
count,time,diff
0,4237,0
1,4338,101
2,4438,100
3,4538,100
4,4638,100
5,4738,100
- タイプスタンプを取得
- 書き込みデータを作成(10byte)
- SD_write (fileへappend)
- delay
- 1.を繰り返す
というプログラムをarduinoで記述して、計測データを取得しました。取得したデータは、VScode+jyupiter拡張機能、python+pandas+matplotlibを使って処理してグラフを作成しました。
★書き込みパラメータ
カウンター値、タイムスタンプ、差分の10byte程度の文字列をSDカードへwrite
ディレイ時間(2,3,10,50,100ms)と変えて、それぞれ10,000ポイント程度計測
測定結果
測定時間は書き込み処理以外の時間も含まれていますが、ざっくりの参考値です。横軸が書き込みのカウント回数、縦軸が処理時間です。上のグラフは、書き込み処理後にdelayを2,5,10,50,100ms挿入したときのグラフです。下のグラフをdeleyを0msにした時のグラフです。
delay時間を変化させても10byteほどの書き込みには影響はないようです。ただし、不定期に処理時間が遅延する場合があり、フィルター処理等をしていると影響があるかもしれません。delay無しで2-3msの書き込み時間ということがわかりました。書き込み時間10msとしても10byte程度であれば1秒間に100回は書き込めます。
ただし、他の処理を含めてプログラム全体をよく検討する必要があります。使用したマイコンはesp32なので、デュアルコアを使いこなして処理を分割できると不定期に発生する長い処理時間を回避できるかもしれません。
今日のまとめ
M5stackのSDへの書き込み時間を測定しました。10byte程度の書き込みだと1秒間に100回以上は書き込めることが確認できました。
参考リンク
【PowerMeter2020】M5StackのSD遅い<20msec周期でも遅延発生>