π SDIO
SDIO (Secure Digital Input Output) β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Secure Digital (SD), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Wi-Fi ΠΌΠΎΠ΄ΡΠ»ΠΈ, GPS, ΠΊΠ°ΠΌΠ΅ΡΡ, ΠΊΠ°ΡΠ΄ΡΠΈΠ΄Π΅ΡΡ) ΠΊ Ρ ΠΎΡΡ-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ»ΠΎΡ SD-ΠΊΠ°ΡΡΡ. SDIO ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ ΡΠ΅ΡΠ΅Π· ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ».
π§ ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ SD-ΠΊΠ°ΡΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠ°Π·ΡΡΠΌΡ ΠΈ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΈΠ³Π½Π°Π»Π°ΠΌ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° 1-, 4-Π±ΠΈΡΠ½ΠΎΠΉ ΠΈ Π²ΡΡΠΎΠΊΠΎΡΠΊΠΎΡΠΎΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ (Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΎΡΠ΅Π½ ΠΠ±ΠΈΡ/Ρ).
- ΠΡΠΎΡΠΎΠΊΠΎΠ» ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΎΡΠ²Π΅ΡΠΎΠ² ΡΡ ΠΎΠΆ Ρ SD, Π½ΠΎ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠ΅ΠΉ.
- Π£ΡΡΡΠΎΠΉΡΡΠ²Π° SDIO ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ (multi-function devices).
- Π₯ΠΎΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΈ Π±Π»ΠΎΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
- ΠΠΈΠ½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
:
- CMD β Π»ΠΈΠ½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄
- CLK β ΡΠ°ΠΊΡΠΎΠ²ΡΠΉ ΡΠΈΠ³Π½Π°Π»
- DAT0..DAT3 β Π»ΠΈΠ½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ (ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΠ΅ Π±ΠΈΡΠ°)
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ SD, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ SPI (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎ).
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡ Π΅ΠΌΠ° SDIO
flowchart TB Host["Host Controller (MCU/SoC)"] CMD["CMD Line"] CLK["Clock Line"] DAT0["Data Line DAT0"] DAT1["Data Line DAT1"] DAT2["Data Line DAT2"] DAT3["Data Line DAT3"] SDIO_Device["SDIO Device (Wi-Fi, GPS, Camera)"] Host -->|CLK| SDIO_Device Host -->|CMD| SDIO_Device Host <-->|DAT0..3| SDIO_Device style SDIO_Device stroke:#fff,stroke-width:5px,font-weight:bold
βοΈ ΠΠ΄Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ
-
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² ΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌ.
-
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Wi-Fi, Bluetooth, GPS, ΠΊΠ°ΠΌΠ΅Ρ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
-
ΠΠ°ΡΠ΄ΡΠΈΠ΄Π΅ΡΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ SD ΠΈ SDIO.
-
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, IoT-ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ.
-
Π£ΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠΈΠ½ΠΎΠ² ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΠΈ.
β ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°
-
Π‘ΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
-
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ².
-
ΠΡΡΠΎΠΊΠ°Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ .
-
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠ»ΠΎΡΠ°ΠΌΠΈ SD.
-
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ½Π΅.
β ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
-
ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΡΠ΅ΠΌ Ρ ΠΎΠ±ΡΡΠ½ΡΡ SD-ΠΊΠ°ΡΡ.
-
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ².
-
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΠΏΠΎΠΌΠ΅Ρ ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ.
-
ΠΠ΅ Π²ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ SDIO.
-
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ.
π Π‘Π²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ
SD Card, SPI, MMC, I2C, MCU, SoC, Wi-Fi Module, GPS, Camera Interface, Host Controller, Memory Card
Π Π΅Π·ΡΠΌΠ΅
SDIO β ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ° SD, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠ΅ΡΠ΅Π· ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΡΡΠΌ ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ». ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±Π°Π»Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠΎΡΠΎΡΡΡΡ, ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°
Linux: ΠΏΡΠΎΡΠΌΠΎΡΡ SDIO ΡΡΡΡΠΎΠΉΡΡΠ²
ls /sys/bus/sdio/devices/
dmesg | grep sdio
C (Linux kernel): ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ SDIO Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°
#include <linux/mmc/sdio_func.h>
static int my_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id) {
// ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°
return 0;
}
static void my_sdio_remove(struct sdio_func *func) {
// ΠΡΠΈΡΡΠΊΠ°
}
static const struct sdio_device_id my_sdio_ids[] = {
{ SDIO_DEVICE(0x1234, 0x5678) }, // Vendor, Device ID
{ /* end: all zeroes */ },
};
static struct sdio_driver my_sdio_driver = {
.name = "my_sdio_driver",
.id_table = my_sdio_ids,
.probe = my_sdio_probe,
.remove = my_sdio_remove,
};
module_sdio_driver(my_sdio_driver);
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ:
SD Association Specifications, osdev.org, Linux kernel docs, Wikipedia, embedded.com, device manufacturer app notes.