class SDCard -- SD メモリカード

SD カードは、リムーバブルストレージメディアの最も一般的な小型フォームファクターの1つです。SD カードにはさまざまなサイズと物理的なフォームファクターがあります。MMC カードは SD カードと同様のリムバーブルストレージデバイスであり、eMMC デバイスは 電気的には MMC カードと同様のストレージデバイスですが、他のシステムに組み込むように設計されています。3つの形式はすべて、ホストシステムとの通信に共通のプロトコルを使っていて、高レベルのサポートはすべて同じです。このプロトコルの MicroPython でのサポートは、 machine.SDCard という単一のクラスに実装しています。

SD と MMC の双方のインターフェイスは、さまざまなバス幅でのアクセスをサポートしています。1ビット幅のインターフェイスでアクセスする場合、SPI プロトコルを使用してアクセスできます。MicroPython ハードウェアプラットフォームにより、さまざまな幅とピン構成をサポートしていますが、ほとんどのプラットフォームでは、ハードウェアに適した標準構成があります。一般に、パラメータを渡さずに SDCard オブジェクトを構築すると、使っているハードウェアのデフォルトのカードスロットのインターフェイスが初期化されます。以下にリストされている引数は、非標準スロットまたは非標準のピン割り当てのいずれかを使うのに設定が必要な共通の引数を表しています。サポートする引数の厳密なサブセットは、プラットフォームごとに異なります。

class machine.SDCard(slot=1, width=1, cd=None, wp=None, sck=None, miso=None, mosi=None, cs=None)

このクラスは、専用の SD/MMC インターフェイスハードウェアか、SPI チャネルを介しての、SD または MMC ストレージカードへのアクセスを提供します。このクラスは uos.AbstractBlockDev で定義されたブロックプロトコルを実装しています。これにより、SD カードのマウントが次のように簡単になります。

uos.mount(machine.SDCard(), "/sd")

このコンストラクタは次のパラメーターを取ります。

  • slot は、使用可能なインターフェースのどれを使用するかを選択します。この指定を省略すると、デフォルトのインターフェースが選択されます。
  • width は、SD/MMCインターフェイスのバス幅を選択します。
  • cd でカード検出ピンを指定できます。
  • wp で書き込み保護ピンを指定できます。
  • sck で SPI クロックピンを指定できます。
  • miso で SPI miso ピンを指定できます。
  • miso で SPI mosi ピンを指定できます。
  • cs で SPI チップ選択ピンを指定できます。

ハードウェア固有の詳細

異なるハードウェア上の SDCard クラスの実装は、上記のオプションのさまざまなサブセットをサポートします。

PyBoard

標準の PyBoard にはスロットが1つしかありません。引数は不要またはサポートされていません。

ESP32

ESP32 は SD/MMC ハードウェアの2つのチャネルを提供し、ユーザーが通常利用できる2つの SPI ポートのいずれかを介したSDカードへのアクセスもサポートします。結果として、 slot 引数は 0 から 3 までの値を取ることができます。スロット 0 と 1 は組み込みの SD/MMCハードウェアを使い、スロット 2 と 3 は SPI ポートを使います。スロット 0 は 1, 4, 8ビット幅のアクセスをサポートし、スロット1 は 1 または 4ビットアクセスをサポートします。SPIスロットは1ビットアクセスのみをサポートします。

注釈

スロット 0 は、ほとんどの ESP32 モジュールではオンボードのフラッシュメモリとの通信に使っているため、ユーザーは使用できません。

注釈

専用ハードウェアを使って SD カードスロットを提供するほとんどの ESP32 モジュールは、1データピンのみを配線しているため width のデフォルト値は1です。

専用の SD/MMC ハードウェアで使われているピンは固定されています。SPI ハードウェアで使うピンは再割り当てできます。

注釈

SPI 信号のいずれかが再マッピングされると、すべての SPI 信号が GPIO マルチプレクサユニットを通過するため、高周波信号のパフォーマンスが制限される可能性があります。SDカードの通常の動作速度は 40MHz であるため、一部のカードで問題が発生する場合があります。

デフォルト(および推奨)のピン割り当ては次のとおりです。

スロット 0 1 2 3
Signal ピン ピン ピン ピン
sck 6 14 18 14
cmd 11 15    
cs     5 15
miso     19 12
mosi     23 13
D0 7 2    
D1 8 4    
D2 9 12    
D3 10 13    
D4 16      
D5 17      
D6 5      
D7 18      

cc3200

pins 引数にタプルを渡すことにより、SPI アクセスに使うピンを指定できます。

注記: 現在の cc3200 SDカードの実装では machine.SDCard ではなく、machine.SD のほうを使います。