@@ -12,7 +12,7 @@ http://www.arduino.cc/en/Reference/SD
12
12
13
13
## Dependency
14
14
15
- This library is based on FatFs, a generic FAT file system module for small embedded systems.
15
+ This library is based on FatFs, a generic FAT file system module for small embedded systems.
16
16
[ http://elm-chan.org/fsw/ff ] ( http://elm-chan.org/fsw/ff/00index_e.html )
17
17
18
18
The FatFs has been ported as Arduino library [ here] ( https://github.com/stm32duino/FatFs ) .
@@ -31,11 +31,105 @@ User can provide his own defined options by adding his configuration in a file n
31
31
### SD
32
32
33
33
Some default definitions can be overridden using:
34
- * board ` variant.h `
35
- * ` build_opt.h ` : see [ Customize build options] ( https://github.com/stm32duino/wiki/wiki/Customize-build-options-using-build_opt.h )
36
-
37
- * ` hal_conf_extra.h ` : see [ HAL configuration] ( https://github.com/stm32duino/wiki/wiki/HAL-configuration )
38
-
34
+ * board ` variant*.h `
35
+ * ` build_opt.h ` : see [ Customize build options] ( https://github.com/stm32duino/Arduino_Core_STM32/wiki/Customize-build-options-using-build_opt.h )
36
+
37
+ * ` hal_conf_extra.h ` : see [ HAL configuration] ( https://github.com/stm32duino/Arduino_Core_STM32/wiki/HAL-configuration )
38
+
39
+ #### SDIO/SDMMC pins definition
40
+
41
+ Since STM32 core v2.6.0, the ` PinMap_SD[] ` array defined in the ` PeripheralPins*.c ` has been split per signals:
42
+ ``` C
43
+ PinMap_SD_CK[]
44
+ PinMap_SD_DATA0[]
45
+ PinMap_SD_DATA1[]
46
+ PinMap_SD_DATA2[]
47
+ PinMap_SD_DATA3[]
48
+ PinMap_SD_DATA4[]
49
+ PinMap_SD_DATA5[]
50
+ PinMap_SD_DATA6[]
51
+ PinMap_SD_DATA7[]
52
+ /* Only for SDMMC */
53
+ PinMap_SD_CKIN[]
54
+ PinMap_SD_CDIR[]
55
+ PinMap_SD_D0DIR[]
56
+ PinMap_SD_D123DIR[]
57
+ ```
58
+
59
+ This allows to define the SDIO/SDMMC pins to use instead of using all the pins defined in the old array.
60
+ By default, if no pins are explicitly defined, the first one from each array is used.
61
+
62
+ * To redefine the default one, use the following macros:
63
+
64
+ * ` SDX_D0 `
65
+ * ` SDX_D1 `
66
+ * ` SDX_D2 `
67
+ * ` SDX_D3 `
68
+ * ` SDX_CMD `
69
+ * ` SDX_CK `
70
+
71
+ * Only for ` SDMMC ` :
72
+ * ` SDX_CKIN `
73
+ * ` SDX_CDIR `
74
+ * ` SDX_D0DIR `
75
+ * ` SDX_D123DIR `
76
+
77
+ * or redefine the default one before call of ` begin() ` of ` SDClass ` or ` init() ` of ` Sd2Card ` , use the following methods:
78
+
79
+ * ` setDx(uint32_t data0, uint32_t data1, uint32_t data2, uint32_t data3) `
80
+ * ` setCK(uint32_t ck) `
81
+ * ` setCK(PinName ck) `
82
+ * ` setCMD(uint32_t cmd) `
83
+ * ` setCMD(PinName cmd) `
84
+
85
+ * Only for ` SDMMC ` :
86
+ * ` setCKIN(uint32_t ckin) `
87
+ * ` setCKIN(PinName ckin) `
88
+ * ` setCDIR(uint32_t cdir) `
89
+ * ` setCDIR(PinName cdir) `
90
+ * ` setDxDIR(uint32_t d0dir, uint32_t d123dir) `
91
+ * ` setDxDIR(PinName d0dir, PinName d123dir) `
92
+
93
+ * Code snippet:*
94
+ ``` C++
95
+ Sd2Card card;
96
+ card.setDx(PE12, PE13, PE14, PE15);
97
+ card.setCMD(PB_14); // using PinName
98
+ card.setCK(PB15);
99
+ card.init();
100
+ ```
101
+ or
102
+ ``` C++
103
+ SD.setDx(PE12, PE13, PE14, PE15);
104
+ SD.setCMD(PB14);
105
+ SD.setCK(PB_15); // using PinName
106
+ SD.begin();
107
+ ```
108
+
109
+ * or using the ` begin() ` of ` SDClass ` or ` init() ` of ` Sd2Card ` methods:
110
+
111
+ * For ` SDIO ` :
112
+ * ` SDClass ` :
113
+ * ` begin(uint32_t data0, uint32_t data1, uint32_t data2, uint32_t data3, uint32_t ck, uint32_t cmd) `
114
+ * ` begin(uint32_t detect = SD_DETECT_NONE, uint32_t data0 = SDX_D0, uint32_t data1 = SDX_D1, uint32_t data2 = SDX_D2, uint32_t data3 = SDX_D3, uint32_t ck = SDX_CK, uint32_t cmd = SDX_CMD, uint32_t ckin = SDX_CKIN, uint32_t cdir = SDX_CDIR, uint32_t d0dir = SDX_D0DIR, uint32_t d123dir = SDX_D123DIR); `
115
+ * ` Sd2Card ` :
116
+ * ` init(uint32_t data0, uint32_t data1, uint32_t data2, uint32_t data3, uint32_t ck, uint32_t cmd) `
117
+ * ` init(uint32_t detect = SD_DETECT_NONE, uint32_t data0 = SDX_D0, uint32_t data1 = SDX_D1, uint32_t data2 = SDX_D2, uint32_t data3 = SDX_D3, uint32_t ck = SDX_CK, uint32_t cmd = SDX_CMD); `
118
+
119
+ * For ` SDMMC ` :
120
+ * ` SDClass ` :
121
+ * ` begin(uint32_t data0, uint32_t data1, uint32_t data2, uint32_t data3, uint32_t ck, uint32_t cmd, uint32_t ckin, uint32_t cdir, uint32_t d0dir, uint32_t d123dir); `
122
+ * ` begin(uint32_t detect = SD_DETECT_NONE, uint32_t data0 = SDX_D0, uint32_t data1 = SDX_D1, uint32_t data2 = SDX_D2, uint32_t data3 = SDX_D3, uint32_t ck = SDX_CK, uint32_t cmd = SDX_CMD, uint32_t ckin = SDX_CKIN, uint32_t cdir = SDX_CDIR, uint32_t d0dir = SDX_D0DIR, uint32_t d123dir = SDX_D123DIR); `
123
+ *
124
+ * * ` Sd2Card ` :
125
+ * ` init(uint32_t data0 = SDX_D0, uint32_t data1 = SDX_D1, uint32_t data2 = SDX_D2, uint32_t data3 = SDX_D3, uint32_t ck = SDX_CK, uint32_t cmd = SDX_CMD, uint32_t ckin = SDX_CKIN, uint32_t cdir = SDX_CDIR, uint32_t d0dir = SDX_D0DIR, uint32_t d123dir = SDX_D123DIR) `
126
+ * ` init(uint32_t detect = SD_DETECT_NONE, uint32_t data0 = SDX_D0, uint32_t data1 = SDX_D1, uint32_t data2 = SDX_D2, uint32_t data3 = SDX_D3, uint32_t ck = SDX_CK, uint32_t cmd = SDX_CMD, uint32_t ckin = SDX_CKIN, uint32_t cdir = SDX_CDIR, uint32_t d0dir = SDX_D0DIR, uint32_t d123dir = SDX_D123DIR); `
127
+
128
+ * Code snippet:*
129
+ ``` C++
130
+ card.init(PE12, PE13, PE14, PE15, PB14, PB15);
131
+ SD.begin(SD_DETECT_PIN, PE12, PE13, PE14, PE15, PB14, PB15);
132
+ ```
39
133
40
134
#### SD configurations
41
135
@@ -68,4 +162,4 @@ Some default definitions can be overridden using:
68
162
#### SD detect and timeout
69
163
* ` SD_DETECT_PIN ` pin number
70
164
71
- * ` SD_DATATIMEOUT ` constant for Read/Write block
165
+ * ` SD_DATATIMEOUT ` constant for Read/Write block
0 commit comments