PIC24 32MHz で SDカードのリード速度
PICKIT2を作ったので、PIC24のSPIを使用してSDカードからデータを読み出して速度を測ってみました。
SPI CLOCK 250KHz
SPI CLOCK 500KHz
SPI CLOCK 1MHz
SPI CLOCK 2MHz
SPI CLOCK 4MHz
SPI CLOCK 8MHz
SPI CLOCK 16MHz の時はカードの初期化が正常終了しませんでした。本当なら初期化の時だけ 400KHzくらいに速度を落として、初期化後に速度を上げなきゃならないのですが、今回試したところ動作中にクロックの切り替えがうまくできませんでした。マニュアルを読んでもできないとは書いていないようなので、なにか手順を間違えているのかもしれません。
(2015年5月8日:SPIを一旦停止すればクロックの切り替えができましたが、250KHzで初期化後16MHzに切り替えてもカードのアクセスできませんでした。8MHzへの切り替えでは正常に動作しました。)
(2015年5月17日:使用しているPIC24ではSPIクロック16MHzは設定禁止でした。データシートに書いてあった。)
SPIが使えないH8Sで試した時は 99 kbyte/s くらいでしたが、PIC24のSPIを使うと 500 kbyte/s とたいへん高速に読み出しできました。
SPI CLOCK 250KHz
mount time : 80 ms
10240 byte read
1 byte block : 493 ms 20 kbyte/s
512 byte block : 384 ms 26 kbyte/s
1024 byte block : 384 ms 26 kbyte/s
2048 byte block : 380 ms 26 kbyte/s
close : 0 ms
SPI CLOCK 500KHz
mount time : 41 ms
10240 byte read
1 byte block : 304 ms 33 kbyte/s
512 byte block : 194 ms 52 kbyte/s
1024 byte block : 194 ms 52 kbyte/s
2048 byte block : 191 ms 53 kbyte/s
close : 0 ms
SPI CLOCK 1MHz
mount time : 22 ms
10240 byte read
1 byte block : 214 ms 47 kbyte/s
512 byte block : 105 ms 97 kbyte/s
1024 byte block : 104 ms 98 kbyte/s
2048 byte block : 102 ms 100 kbyte/s
close : 0 ms
SPI CLOCK 2MHz
mount time : 12 ms
10240 byte read
1 byte block : 169 ms 60 kbyte/s
512 byte block : 60 ms 170 kbyte/s
1024 byte block : 59 ms 173 kbyte/s
2048 byte block : 57 ms 179 kbyte/s
close : 0 ms
SPI CLOCK 4MHz
mount time : 7 ms
10240 byte read
1 byte block : 143 ms 71 kbyte/s
512 byte block : 34 ms 301 kbyte/s
1024 byte block : 33 ms 310 kbyte/s
2048 byte block : 31 ms 330 kbyte/s
close : 0 ms
SPI CLOCK 8MHz
mount time : 5 ms
10240 byte read
1 byte block : 131 ms 78 kbyte/s
512 byte block : 22 ms 465 kbyte/s
1024 byte block : 22 ms 465 kbyte/s
2048 byte block : 20 ms 512 kbyte/s
close : 0 ms
SPI CLOCK 16MHz の時はカードの初期化が正常終了しませんでした。本当なら初期化の時だけ 400KHzくらいに速度を落として、初期化後に速度を上げなきゃならないのですが、今回試したところ動作中にクロックの切り替えがうまくできませんでした。マニュアルを読んでもできないとは書いていないようなので、なにか手順を間違えているのかもしれません。
(2015年5月8日:SPIを一旦停止すればクロックの切り替えができましたが、250KHzで初期化後16MHzに切り替えてもカードのアクセスできませんでした。8MHzへの切り替えでは正常に動作しました。)
(2015年5月17日:使用しているPIC24ではSPIクロック16MHzは設定禁止でした。データシートに書いてあった。)
SPIが使えないH8Sで試した時は 99 kbyte/s くらいでしたが、PIC24のSPIを使うと 500 kbyte/s とたいへん高速に読み出しできました。