Arduino(10) Spi SRamとSDカードでデータ転送


 ArduinoでSpi SRamとSDカードのデータ転送をしました。
 Spi SRamを使うのは、高速化と使い勝手を調べることです。
 SDカードから読み出して転送するより、Spi SRamから読み出して転送する方が速いかです。


●Spi SRamとSDカードでデータ転送実験の概要

 今回の実験は、 以前HPに記録した、手配線のArduino基板にSpi SRamを追加して行いました。
 次の写真で、赤丸がSpi SRamです。

 転送時間測定は、次の2つでします。
   ・SDカード→Spi SRam
   ・Spi SRam→MCP23S08





●SDカードファイルクラスの疑問点 sd.available()

 SDカード用ファイルクラスを使ってスケッチしていて、分らない関数は、sd.available() です。
 「Arduino公式リファレンス」には、「読み取り可能なバイト数を返します」とあります。
 「読み取り可能なバイト数」とは?説明不足な言葉です。

 「Arduino公式リファレンス」には、別に、Serial.available()関数は「到着しているバイト数を返す」と説明が有ります。
 この説明なら、時間的要因も含まれているので、理解できます。

 そこで、sd.available()の実験をしました。実験結果を次に示します。

 ●赤い矢印は、次のコードの実行結果で、ファイルのバイト数を表示しています。

  Serial.println("Success to access SdCard");

  iMySdFileSize = mySdFile.size();
   Serial.print("Success SdCardFileSize :");
   Serial.println(iMySdFileSize,DEC);

 ●赤い矢印は、次のコードの実行結果で、sd.available()でバイト数を取得後読出ししています

 while(mySdFile.available()){

    iMySdFileAvailableSize = mySdFile.available();
      Serial.print("AvailableSize :");
      Serial.print(iMySdFileAvailableSize,DEC);

    WriteData = mySdFile.read(); //FlashDataを読み出し


 実験の結果、sd.available()は、残りのバイト数を返しています。






●SdCardのデータを SRAMに書込む(1024バイト)実験

 SDカードからデータを読出し、Spi SRamに1024バイト転送しました。
 写真の上の波形は、SRAMのチップセレクト、下の波形は、SDカードのチップセレクト波形です。
 波形から分ることは、まず、SDカードが動作してからSRAMが動作しています。そして、真中で再度SDカードが動作してます。
 これは、SDカードは、一回の動作で512バイト内部バッファに読込み小出しにしてるようです。

 下の写真は、拡大したもので、SDカードから読出しSpi SRamに書き込む動作は、50uS程掛っています。








●SRAMのデータを 外部に書込む(1024バイト)実験

 SRAMからデータを読出し、外部に1024バイト転送しました。
 写真の波形は、SRAMのチップセレクト波形です。
 波形は、途切れることなく一定の周期で動作しています。











●データ転送実験の結果

 実験の結果は、 SDカードとSRAMの動作速度はあまり変わらないことが判りました。
 マイコンを生で使うのに比べ、Arduino の速度が気になりました。
 



ホームへ戻る