@@ -23,7 +23,8 @@ arguments that might need to be set in order to use either a non-standard slot
23
23
or a non-standard pin assignment. The exact subset of arguments supported will
24
24
vary from platform to platform.
25
25
26
- .. class :: SDCard(slot=1, width=1, cd=None, wp=None, sck=None, miso=None, mosi=None, cs=None, freq=20000000)
26
+ .. class :: SDCard(slot=1, width=1, cd=None, wp=None, sck=None, miso=None, mosi=None,
27
+ cs=None, cmd=None, data=None, freq=20000000)
27
28
28
29
This class provides access to SD or MMC storage cards using either
29
30
a dedicated SD/MMC interface hardware or through an SPI channel.
@@ -37,7 +38,8 @@ vary from platform to platform.
37
38
- *slot * selects which of the available interfaces to use. Leaving this
38
39
unset will select the default interface.
39
40
40
- - *width * selects the bus width for the SD/MMC interface.
41
+ - *width * selects the bus width for the SD/MMC interface. This many data
42
+ pins must be connected to the SD card.
41
43
42
44
- *cd * can be used to specify a card-detect pin.
43
45
@@ -51,7 +53,14 @@ vary from platform to platform.
51
53
52
54
- *cs * can be used to specify an SPI chip select pin.
53
55
54
- - *freq * selects the SD/MMC interface frequency in Hz (only supported on the ESP32).
56
+ The following additional parameters are only present on ESP32 port:
57
+
58
+ - *cmd * can be used to specify the SD CMD pin (ESP32-S3 only).
59
+
60
+ - *data * can be used to specify a list or tuple of SD data bus pins
61
+ (ESP32-S3 only).
62
+
63
+ - *freq * selects the SD/MMC interface frequency in Hz.
55
64
56
65
Implementation-specific details
57
66
-------------------------------
@@ -67,52 +76,106 @@ The standard PyBoard has just one slot. No arguments are necessary or supported.
67
76
ESP32
68
77
`````
69
78
70
- The ESP32 provides two channels of SD/MMC hardware and also supports
71
- access to SD Cards through either of the two SPI ports that are
72
- generally available to the user. As a result the *slot * argument can
73
- take a value between 0 and 3, inclusive. Slots 0 and 1 use the
74
- built-in SD/MMC hardware while slots 2 and 3 use the SPI ports. Slot 0
75
- supports 1, 4 or 8-bit wide access while slot 1 supports 1 or 4-bit
76
- access; the SPI slots only support 1-bit access.
77
-
78
- .. note :: Slot 0 is used to communicate with on-board flash memory
79
- on most ESP32 modules and so will be unavailable to the
80
- user.
81
-
82
- .. note :: Most ESP32 modules that provide an SD card slot using the
83
- dedicated hardware only wire up 1 data pin, so the default
84
- value for *width * is 1.
85
-
86
- The pins used by the dedicated SD/MMC hardware are fixed. The pins
87
- used by the SPI hardware can be reassigned.
88
-
89
- .. note :: If any of the SPI signals are remapped then all of the SPI
90
- signals will pass through a GPIO multiplexer unit which
91
- can limit the performance of high frequency signals. Since
92
- the normal operating speed for SD cards is 40MHz this can
93
- cause problems on some cards.
94
-
95
- The default (and preferred) pin assignment are as follows:
96
-
97
- ====== ====== ====== ====== ======
98
- Slot 0 1 2 3
99
- ------ ------ ------ ------ ------
100
- Signal Pin Pin Pin Pin
101
- ====== ====== ====== ====== ======
102
- sck 6 14 18 14
103
- cmd 11 15
104
- cs 5 15
105
- miso 19 12
106
- mosi 23 13
107
- D0 7 2
108
- D1 8 4
109
- D2 9 12
110
- D3 10 13
111
- D4 16
112
- D5 17
113
- D6 5
114
- D7 18
115
- ====== ====== ====== ====== ======
79
+ SD cards support access in both SD/MMC mode and the simpler (but slower) SPI
80
+ mode. ESP32 and ESP32-S3 chips can access SD cards using either mode. SPI mode
81
+ makes use of a `SPI ` host peripheral, which cannot concurrently be used for
82
+ something else.
83
+
84
+ The ``slot `` argument determines which mode is used. Different values are
85
+ available on different chips:
86
+
87
+ ====== ================= ============ ========================
88
+ Slot Supported chips Mode Supported data width
89
+ ====== ================= ============ ========================
90
+ 0 ESP32-S3 SD/MMC 1, 4, or 8 bits.
91
+ 1 ESP32, ESP32-S3 SD/MMC 1 or 4 bits.
92
+ 2 ESP32, ESP32-S3 `SPI ` (id=1) 1 bit.
93
+ 3 ESP32, ESP32-S3 `SPI ` (id=0) 1 bit.
94
+ ====== ================= ============ ========================
95
+
96
+ .. note :: On the original ESP32, SDMMC slot 0 is unavailable as its pins are
97
+ used to communicate with on-board flash memory.
98
+
99
+ .. note :: Most ESP32 modules that provide an SD card slot using the
100
+ dedicated hardware only wire up 1 data pin, so the default
101
+ value for ``width `` is 1.
102
+
103
+ Additional details depend on which ESP32 family chip is in use:
104
+
105
+ Original ESP32
106
+ ~~~~~~~~~~~~~~
107
+
108
+ Pin assignments in SD/MMC mode are fixed on the original ESP32. When accessing a
109
+ card in SPI mode, pins can be set to different values in the constructor.
110
+
111
+ The default pin assignments are as follows:
112
+
113
+ ====== ====== ====== ====== ============
114
+ Slot 1 2 3 Can be set
115
+ ------ ------ ------ ------ ------------
116
+ Signal Pin Pin Pin
117
+ ====== ====== ====== ====== ============
118
+ CLK 14 No
119
+ CMD 15 No
120
+ D0 2 No
121
+ D1 4 No
122
+ D2 12 No
123
+ D3 13 No
124
+ sck 18 14 Yes
125
+ cs 5 15 Yes
126
+ miso 19 12 Yes
127
+ mosi 23 13 Yes
128
+ ====== ====== ====== ====== ============
129
+
130
+ The ``cd `` and ``wp `` pins are not fixed in either mode and default to disabled, unless set.
131
+
132
+ ESP32-S3
133
+ ~~~~~~~~
134
+
135
+ The ESP32-S3 chip allows pins to be set to different values for both SD/MMC and
136
+ SPI mode access.
137
+
138
+ If not set, default pin assignments are as follows:
139
+
140
+ ======== ====== ====== ====== ======
141
+ Slot 0 1 2 3
142
+ -------- ------ ------ ------ ------
143
+ Signal Pin Pin Pin Pin
144
+ ======== ====== ====== ====== ======
145
+ CLK 14 14
146
+ CMD 15 15
147
+ D0 2 2
148
+ D1 4 4
149
+ D2 12 12
150
+ D3 13 13
151
+ D4 33*
152
+ D5 34*
153
+ D6 35*
154
+ D7 36*
155
+ sck 37* 14
156
+ cs 34* 13
157
+ miso 37* 2
158
+ mosi 35* 15
159
+ ======== ====== ====== ====== ======
160
+
161
+ .. note :: Slots 0 and 1 cannot both be in use at the same time.
162
+
163
+ .. note :: Pins marked with an asterisk * in the table must be changed from the
164
+ default if the ESP32-S3 board is configured for Octal SPI Flash or
165
+ PSRAM.
166
+
167
+ To access a card in SD/MMC mode, set ``slot `` parameter value 0 or 1 and
168
+ parameters ``sck `` (for CLK), ``cmd `` and ``data `` as needed to assign pins. If
169
+ the ``data `` argument is passed then it should be a list or tuple of data pins
170
+ or pin numbers with length equal to the ``width `` argument. For example::
171
+
172
+ sd = SDCard(slot=0, width=4, sck=8, cmd=9, data=(10, 11, 12, 13))
173
+
174
+ To access a card in SPI mode, set ``slot `` parameter value 2 or 3 and pass
175
+ parameters ``sck ``, ``cs ``, ``miso ``, ``mosi `` as needed to assign pins.
176
+
177
+ In either mode the ``cd `` and ``wp `` pins default to disabled, unless set in the
178
+ constructor.
116
179
117
180
cc3200
118
181
``````
0 commit comments