Teensy4.0ボードのmicrosdとのSDIO接続に関してはこちらの記事で紹介しましたが、比較用としてSPI接続についても報告します。
SPIインターフェイス
SDIOによるSDカードインターフェイスをサポートするTeensy4.0では、SPI接続でSDカードを接続して使用することはほとんどないと思いますが、もちろんSPI接続で使用することができます。SPI2と接続する場合は、Teensy4.0の裏面にあるSDIOインターフェイス用のピン配置そのままで使用することができますが、ここではブレッドボード上で接続が可能なSPI0を使用する場合を示します。
ブレッドボードでのSPIによるmicrosd接続 |
動作確認環境
SDIOの場合と同様にSdFatのベータ版を使用して、exFATファイルシステムのSDXCカードで動作確認を行います。 SPI接続を行う際の修正箇所は以下の通りです。SdFat/src/SdFatConfig.hの329行目付近
#define HAS_SDIO_CLASS 1 #endif // defined(__MK64FX512__) || defined(__MK66FX1M0__) #if defined(__IMXRT1062__) // #define HAS_SDIO_CLASS 1 // コメントアウト #define HAS_SDIO_CLASS 0 // 0で定義する #endif // defined(__IMXRT1062__)
SdInfoプロジェクト
SdInfoプロジェクトは修正なしに使用できます。このプロジェクトではSPIクロック周波数は16MHzに設定されています。benchプロジェクト
benchプロジェクトではSPIクロック周波数は50MHzに設定されていますが、今回のブレッドボード環境では一部カードを正常動作させることはできなかったので、45MHzに落として動作確認しました。 SdFat/examples/bench/bench.inoの10行目、28行目付近// SD_FAT_TYPE = 0 for SdFat/File as defined in SdFatConfig.h, // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT. // #define SD_FAT_TYPE 0 #define SD_FAT_TYPE 3 ~~~~~~~ // Try max SPI clock for an SD. Reduce SPI_CLOCK if errors occur. // #define SPI_CLOCK SD_SCK_MHZ(50) #define SPI_CLOCK SD_SCK_MHZ(45)
実行結果
SDIO接続の場合と同様に以下の3つのカードで動作確認をしました。- SanDisk microSDXC Ultra A1 64GB (UHS-I Speed-class 1)
- SanDisk microSDXC Ultra A1 512GB (UHS-I Speed-class 1)
- SanDisk microSDXC Extreme A2 1TB (UHS-I Speed-class 3)
SdInfoプロジェクト
SdInfoプロジェクトの実行結果については64GBカードの場合のみ示します。SdFat version: 2.0.3-beta.1 Assuming the SD is the only SPI device. Edit DISABLE_CS_PIN to disable an SPI device. Assuming the SD chip select pin is: 10 Edit SD_CS_PIN to change the SD chip select pin. type any character to start init time: 10 ms Card type: SDXC Manufacturer ID: 0X3 OEM ID: SD Product: SD64G Version: 8.5 Serial number: ********** Manufacturing date: ****** cardSize: 63864.57 MB (MB = 1,000,000 bytes) flashEraseSize: 128 blocks eraseSingleBlock: true OCR: 0XC0FF8000 SD Partition Table part,boot,bgnCHS[3],type,endCHS[3],start,length 1,0X0,0XA,0X9,0X2,0X7,0XFE,0XFF,0XFF,32768,124702720 2,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0,0 3,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0,0 4,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0X0,0,0 Scanning FAT, please wait. Volume is exFAT sectorsPerCluster: 256 clusterCount: 486992 freeClusterCount: 486948 fatStartSector: 49152 dataStartSector: 65536
benchプロジェクト
benchプロジェクトの実行結果を以下に示します。================================ (Sandisk SDXC microsd Ultra 64GB) ================================ write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 4313.79,10829,116,118 4351.33,2275,116,117 read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 4420.58,116,115,115 4420.58,116,115,115 ================================ (Sandisk SDXC microsd Ultra 512GB) ================================ write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 4343.77,6679,116,117 4358.92,2585,116,117 read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 4416.68,116,115,115 4424.50,116,115,115 ================================ (Sandisk SDXC microsd Extreme 1TB) ================================ write speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 4313.79,5754,116,118 4336.24,6617,116,117 read speed and latency speed,max,min,avg KB/Sec,usec,usec,usec 4420.58,116,115,115 4420.58,116,115,115
0 件のコメント:
コメントを投稿