สารบัญ:

เลือก SD Interface สำหรับ ESP32: 12 ขั้นตอน (พร้อมรูปภาพ)
เลือก SD Interface สำหรับ ESP32: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เลือก SD Interface สำหรับ ESP32: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เลือก SD Interface สำหรับ ESP32: 12 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ตอนที่ 1 Basic ESP32 WiFi Development เล่าเรื่องราว GPIO รู้จักและเข้าใจ ใช้งานเป็น 2024, พฤศจิกายน
Anonim
เลือก SD Interface สำหรับ ESP32
เลือก SD Interface สำหรับ ESP32

คำแนะนำนี้แสดงบางอย่างเกี่ยวกับการเลือกอินเทอร์เฟซ SD สำหรับโครงการ ESP32 ของคุณ

ขั้นตอนที่ 1: อินเทอร์เฟซ SD

ในไลบรารี Arduino SD ดั้งเดิม อินเทอร์เฟซ SD ใช้โหมดการถ่ายโอนบัส SD SPI

SD มีโหมดการถ่ายโอนมากกว่า:

  • โหมดบัส SPI: ESP32 มีบัส SPI มากกว่า 1 บัส ซึ่งสามารถปรับแต่งได้ในขณะเริ่มต้น
  • โหมดบัส SD 1 บิต / 4 บิต: ESP32 อุทิศไลบรารีอื่นที่เรียกว่า SD_MMC เพื่อใช้ API โหมดบัส SD
  • โหมด SD UHS-II: ไม่รองรับ ESP32

อ้างอิง:

www.arduino.cc/en/reference/SD

en.wikipedia.org/wiki/SD_card

docs.espressif.com/projects/esp-idf/en/lat…

ขั้นตอนที่ 2: การแมปพิน ESP32 GPIO

นี่คือการแมปพิน ESP32 GPIO เริ่มต้น:

หมุดการ์ด SD MicroSD พิน ชื่อ บัส SD 4 บิต บัส SD 1 บิต บัส SPI (หมุด HSPI / VSPInative)
1 2 D3 13 - เอสเอส (15 / 5)
2 3 CMD 15 15 MOSI (13 / 23)
3 - VSS GND GND GND
4 4 VDD 3.3V 3.3V 3.3V
5 5 CLK 14 14 เอสซีเค (14 / 18)
6 6 VSS GND GND GND
7 7 D0 2 2 มิโซะ (12 / 19)
8 8 D1 4 - -
9 1 D2 12 - -

ไม่สามารถเปลี่ยนแปลงการแมปพิน GPIO ของบัส SD 1 บิต / 4-บิต

เรียกง่าย ๆ SD_MMC เริ่มต้น () ไปยังโหมดบัส SD 4 บิตเริ่มต้น:

SD_MMC.begin();

สามารถเลือกโหมดบัส SD 1 บิตได้ที่วิธี SD_MMC start() เช่น

SD_MMC.begin("/cdcard", จริง);

คุณสามารถเลือกบัส SPI (HSPI หรือ VSPI) ในขณะที่สร้างอินสแตนซ์ SPIClass เช่น

SPIClass spi = SPIClass (HSPI);

อย่างที่คุณเห็นพินแชร์พินบัส SD 1 บิต / 4 บิตกับ HSPI แต่การแมปพินการ์ด SD นั้นไม่เหมือนกัน ดังนั้นหากฮาร์ดแวร์เชื่อมต่อตามแผนที่พินบัส SD จะไม่สามารถใช้พินเนทีฟ HSPI โดยตรงได้ หมุด GPIO สามารถแทนที่ได้ที่เมธอด SPIClass begin() เช่น

SPIClass spi = SPIClass (HSPI);

spi.begin(14 /* SCK */, 2 /* MISO */, 15 /* MOSI */, 13 /* SS */);

และไลบรารี SD ยังสามารถแทนที่ SS pin, SPI บัสและความถี่บัสที่วิธี SD start() เช่น

SD.begin(13 /* SS */, spi, 80000000);

ขั้นตอนที่ 3: ข้อกำหนด SD Pull-up

หากคุณต้องการใช้โหมดบัส SD แบบ 4 บิต โปรดปฏิบัติตามข้อกำหนด Pull-up ของ ESP32 SD โดยเฉพาะ:

  • ความขัดแย้งแบบดึงขึ้นใน GPIO13
  • ความขัดแย้งระหว่าง Bootstrap และ SDIO ใน DAT2

อ้างอิง:

docs.espressif.com/projects/esp-idf/en/lat…

ขั้นตอนที่ 4: ฮาร์ดแวร์ต่างๆ

ฮาร์ดแวร์ต่างๆ
ฮาร์ดแวร์ต่างๆ

ESP32 มีชุดอุปกรณ์ dev และบอร์ด dev มากมาย บางชุดมีช่องเสียบการ์ด MicroSD ในตัว

นี่คือตัวอย่างบางส่วนในมือของฉัน:

  • TTGO T-Watch เชื่อมต่อกับหมุด GPIO 2, 13, 14 และ 15 ตามโหมดบัส SD 1 บิต ดังนั้นจึงสามารถใช้โหมดบัส SD 1 บิตและโหมดบัส SPI
  • M5Stack Series เชื่อมต่อกับพิน GPIO 4, 18, 19 และ 23 ตามพินเนทีฟ VSPI ดังนั้นจึงสามารถใช้การตั้งค่าไลบรารี SD เริ่มต้นได้ [SD.begin(4)]
  • ODROID-GO เชื่อมต่อกับหมุด GPIO 18, 19, 22 และ 23 ตามพินเนทีฟ VSPI ดังนั้นจึงสามารถใช้การตั้งค่าไลบรารี SD เริ่มต้นได้ [SD.begin(22)]
  • ESP32-CAM เชื่อมต่อกับหมุด GPIO 2, 4, 12, 13, 14 และ 15 ตามโหมดบัส SD 4 บิต ดังนั้นจึงสามารถใช้โหมดบัส SD 4 บิต / 1 บิตและโหมดบัส SPI ได้ทั้งหมด
  • บอร์ด TTGO T8 dev เชื่อมต่อกับพิน GPIO 2, 13, 14 และ 15 ตามโหมดบัส SD 1 บิต ดังนั้นจึงสามารถใช้โหมดบัส SD 1 บิตและโหมดบัส SPI ได้

www.lilygo.cn/prod_view.aspx?Id=1123

docs.m5stack.com/

wiki.odroid.com/odroid_go/odroid_go

wiki.ai-thinker.com/esp32-cam

github.com/LilyGO/TTGO-T8-ESP32

ขั้นตอนที่ 5: บอร์ดฝ่าวงล้อมช่องเสียบการ์ด SD

บอร์ดฝ่าวงล้อมช่องเสียบการ์ด SD
บอร์ดฝ่าวงล้อมช่องเสียบการ์ด SD
บอร์ดฝ่าวงล้อมช่องเสียบการ์ด SD
บอร์ดฝ่าวงล้อมช่องเสียบการ์ด SD

บอร์ด Dev ที่มีช่องเสียบการ์ด MicroSD ในตัวอาจไม่ได้เชื่อมต่อพินทั้งหมด และส่วนใหญ่ไม่สามารถใช้โหมดบัส SD แบบ 4 บิตได้ บอร์ดฝ่าวงล้อมของช่องเสียบการ์ด SD แต่ละอันให้ความยืดหยุ่นที่ดีขึ้น

ในเวลาเดียวกัน บอร์ดฝ่าวงล้อม LCD จำนวนมากยังแยกช่องเสียบการ์ด SD ขนาดเต็ม อย่างไรก็ตาม ส่วนใหญ่จะแยกเฉพาะพินโหมด SPI เท่านั้น ไม่เพียงพอที่จะใช้เป็นโหมดบัส SD 4 บิต แต่คุณยังสามารถใช้เป็นโหมดบัส SD 1 บิตได้โดยการแมปการเชื่อมต่อนี้:

จอแอลซีดี -> ESP32

SD_CS -> ไม่มี SD_MOSI -> 15 SD_MISO -> 2 SD_SCK -> 14

ขั้นตอนที่ 6: ถอด GPIO 2 ขณะโปรแกรม

ถอด GPIO 2 ขณะโปรแกรม
ถอด GPIO 2 ขณะโปรแกรม

การเชื่อมต่อโหมดบัส SD แบบ 4 บิตทำให้ ESP32 ไม่สามารถเข้าสู่โหมดโปรแกรมได้ โปรดจำไว้ว่าให้ถอด GPIO 2 ออกจากช่องเสียบการ์ด SD DAT0 ก่อนอัปโหลดโปรแกรมใหม่

ขั้นตอนที่ 7: เกณฑ์มาตรฐาน

เกณฑ์มาตรฐาน
เกณฑ์มาตรฐาน
เกณฑ์มาตรฐาน
เกณฑ์มาตรฐาน

ฉันได้เขียนโปรแกรม Arduino อย่างง่ายสำหรับการวัดประสิทธิภาพ:

github.com/moononournation/ESP32_SD_Benchm…

นี่คือฮาร์ดแวร์สำหรับการวัดประสิทธิภาพ:

ESP32

NodeMCU ESP32-32S V1.1 (WROOM-32)

ช่องเสียบการ์ด SD

บอร์ดฝ่าวงล้อมช่องเสียบการ์ด MicroSD

การ์ด SD

ฉันมี SanDisk 8 GB MicroSD และ 128 MB MicroSD เก่าอยู่ในมือ

ขั้นตอนที่ 8: เกณฑ์มาตรฐานโหมด SD_MMC 4 บิต

SanDisk 8 GB MicroSD

20:27:46.000 -> ทดสอบเขียน /test_1k.bin

20:27:59.399 -> เขียนไฟล์ที่ใช้: 13404 ms, 312.914368 KB/s 20:27:59.399 -> ทดสอบเขียน /test_2k.bin 20:28:17.248 -> เขียนไฟล์ที่ใช้: 17834 ms, 235.185822 KB/s 20:28:17.248 -> ทดสอบเขียน /test_4k.bin 20:28:21.122 -> เขียนไฟล์ที่ใช้: 3873 ms, 1082.959961 KB/s 20:28:21.122 -> ทดสอบเขียน /test_8k.bin 20:28:23.147 -> เขียนไฟล์ที่ใช้: 2024 ms, 2072.284668 KB/s 20:28:23.147 -> ทดสอบเขียน /test_16k.bin 20:28:27.237 -> เขียนไฟล์ที่ใช้: 4097 ms, 1023.750061 KB/s 20:28:27.237 -> ทดสอบ write /test_32k.bin 20:2830.088 -> ไฟล์ที่ใช้เขียน: 2842 ms, 1475.828247 KB/s 20:2830.088 -> ทดสอบเขียน /test_64k.bin 20:28:31.882 -> เขียนไฟล์ที่ใช้: 1811 ms, 2316.015381 KB/s 20:28:31.882 -> ทดสอบการอ่าน /test_1k.bin 20:28:35.422 -> อ่านไฟล์ที่ใช้: 3520 ms, 1191.563599 KB/s 20:28:35.422 -> ทดสอบอ่าน /test_2k.bin 20: 28:38.813 -> ไฟล์ที่ใช้อ่าน: 3389 ms, 1237.622925 KB/s 20:28:38.813 -> ทดสอบการอ่าน /test_4k.bin 20:28:42.273 -> ไฟล์ที่ใช้อ่าน: 3474 ms, 1207.341431 KB/s 20:28:42.273 -> ทดสอบการอ่าน /test_8k.bin 20:28:45.752 - > ไฟล์ที่ใช้อ่าน: 3487 ms, 1202.840210 KB/s 20:28:45.752 -> ทดสอบการอ่าน /test_16k.bin 20:28:48.988 -> ไฟล์ที่ใช้อ่าน: 3213 ms, 1305.416748 KB/s 20:28:48.988 -> ทดสอบอ่าน /test_32k.bin 20:28:52.077 -> อ่านไฟล์ที่ใช้: 3093 ms, 1356.063354 KB/s 20:28:52.077 -> ทดสอบอ่าน /test_64k.bin 20:28:55.141 -> อ่านไฟล์ที่ใช้: 3080 ms, 1361.786987 KB/s

MicroSD. เก่า 128 MB

20:30:43.309 -> E (274) sdmmc_sd: sdmmc_check_scr: send_scr ส่งคืน 0x109

20:30:43.309 -> การติดตั้งการ์ดล้มเหลว

ขั้นตอนที่ 9: เกณฑ์มาตรฐานโหมด SD_MMC 1 บิต

SanDisk 8 GB MicroSD

20:31:45.194 -> ทดสอบเขียน /test_1k.bin

20:31:59.506 -> เขียนไฟล์ที่ใช้: 14325 ms, 292.796082 KB/s 20:31:59.506 -> ทดสอบเขียน /test_2k.bin 20:32:17.686 -> เขียนไฟล์ที่ใช้: 18163 ms, 230.925735 KB/s 20:32:17.686 -> ทดสอบเขียน /test_4k.bin 20:32:21.291 -> เขียนไฟล์ที่ใช้: 3611 ms, 1161.535278 KB/s 20:32:21.291 -> ทดสอบเขียน /test_8k.bin 20:32:23.939 -> เขียนไฟล์ที่ใช้: 2652 ms, 1581.562622 KB/s 20:32:23.939 -> ทดสอบเขียน /test_16k.bin 20:32:28.397 -> เขียนไฟล์ที่ใช้: 4448 ms, 942.964050 KB/s 20:32:28.397 -> ทดสอบ เขียน /test_32k.bin 20:32:31.835 -> เขียนไฟล์ที่ใช้: 3429 ms, 1223.185791 KB/s 20:32:31.835 -> ทดสอบเขียน /test_64k.bin 20:32:33.882 -> เขียนไฟล์ที่ใช้: 2058 ms, 2038.048584 KB/s 20:32:33.882 -> ทดสอบอ่าน /test_1k.bin 20:32:38.031 -> อ่านไฟล์ที่ใช้: 4146 ms, 1011.650757 KB/s 20:32:38.031 -> ทดสอบอ่าน /test_2k.bin 20: 32:42.062 -> ไฟล์ที่ใช้อ่าน: 4019 ms, 1043.618774 KB/s 20:32:42.062 -> ทดสอบการอ่าน /test_4k.bin 20:32:46.170 -> อ่านไฟล์ที่ใช้: 4106 ms, 1021.506104 KB/s 20:32:46.170 -> ทดสอบอ่าน /test_8k.bin 20:32:50.288 -> อ่านไฟล์ที่ใช้: 4121 ms, 1017.787903 KB/s 20:32:50.288 -> ทดสอบการอ่าน /test_16k.bin 20:32:54.112 -> อ่านไฟล์ที่ใช้: 3840 ms, 1092.266724 KB/s 20:32:54.112 -> ทดสอบ read /test_32k.bin 20:32:57.840 -> อ่านไฟล์ที่ใช้: 3739 ms, 1121.771606 KB/s 20:32:57.840 -> ทดสอบอ่าน /test_64k.bin 20:33:01.568 -> อ่านไฟล์ที่ใช้: 3711 ms, 1130.235474 KB/s

MicroSD. เก่า 128 MB

20:33:27.366 -> ทดสอบเขียน /test_1k.bin

20:33:42.386 -> เขียนไฟล์ที่ใช้: 15020 ms, 279247925 KB/s 20:33:42.386 -> ทดสอบเขียน /test_2k.bin 20:33:57.927 -> เขียนไฟล์ที่ใช้: 15515 ms, 270.338654 KB/s 20:33:57.927 -> ทดสอบเขียน /test_4k.bin 20:34:13.108 -> เขียนไฟล์ที่ใช้: 15195 ms, 276.031860 KB/s 20:34:13.108 -> ทดสอบเขียน /test_8k.bin 20:34:28.162 -> เขียนไฟล์ที่ใช้: 15048 ms, 278.728333 KB/s 20:34:28.162 -> ทดสอบเขียน /test_16k.bin 20:34:43.287 -> เขียนไฟล์ที่ใช้: 15142 ms, 276.998016 KB/s 20:34:43.287 -> ทดสอบ เขียน /test_32k.bin 20:34:58.278 -> เขียนไฟล์ที่ใช้: 14964 ms, 280.292969 KB/s 20:34:58.278 -> ทดสอบเขียน /test_64k.bin 20:35:13.370 -> เขียนไฟล์ที่ใช้: 15101 ms, 277.750092 KB/s 20:35:13.370 -> ทดสอบการอ่าน /test_1k.bin 20:35:17.563 -> อ่านไฟล์ที่ใช้: 4197 ms, 999.357666 KB/s 20:35:17.563 -> ทดสอบอ่าน /test_2k.bin 20: 35:21.746 -> ไฟล์ที่ใช้อ่าน: 4191 ms, 1000.788330 KB/s 20:35:21.746 -> ทดสอบการอ่าน /test_4k.bin 20:35:25.942 -> ไฟล์ที่ใช้อ่าน: 4181 ms, 1003.182007 KB/s 20:35:25.942 -> ทดสอบการอ่าน /test_8k.bin 20:35:30.101 -> อ่านไฟล์ที่ใช้: 4176 ms, 1004.383118 KB/s 20:35:30.101 -> Test read /test_16k.bin 20:35:34.279 -> Read file used: 4174 ms, 1004.864380 KB/s 20:35:34.279 -> Test read /test_32k.bin 20:35:38.462 -> อ่านไฟล์ที่ใช้: 4173 ms, 1005.105225 KB/s 20:35:38.462 -> ทดสอบอ่าน /test_64k.bin 20:35:42.612 -> อ่านไฟล์ที่ใช้: 4173 ms, 1005.105225 KB/วินาที

ขั้นตอนที่ 10: โหมด SD SPI ที่ HSPI Bus Benchmark

SanDisk 8 GB MicroSD

08:41:19.703 -> ทดสอบเขียน /test_1k.bin

08:41:53.458 -> ไฟล์ที่ใช้เขียน: 33743 ms, 124.301453 KB/s 08:41:53.458 -> ทดสอบเขียน /test_2k.bin 08:42:10.000 -> เขียนไฟล์ที่ใช้: 16540 ms, 253.585495 KB/s 08:42:10.000 -> ทดสอบเขียน /test_4k.bin 08:42:17.269 -> เขียนไฟล์ที่ใช้: 7298 ms, 574.719666 KB/s 08:42:17.308 -> ทดสอบเขียน /test_8k.bin 08:42:22.640 -> เขียนไฟล์ที่ใช้: 5345 ms, 784.715454 KB/s 08:42:22.640 -> ทดสอบเขียน /test_16k.bin 08:42:32.285 -> เขียนไฟล์ที่ใช้: 9662 ms, 434.103088 KB/s 08:42:32.285 -> ทดสอบ เขียน /test_32k.bin 08:42:36.659 -> เขียนไฟล์ที่ใช้: 4355 ms, 963.100830 KB/s 08:42:36.659 -> ทดสอบเขียน /test_64k.bin 08:42:39.594 -> เขียนไฟล์ที่ใช้: 2949 ms, 1422.280151 KB/s 08:42:39.594 -> ทดสอบการอ่าน /test_1k.bin 08:42:44.774 -> อ่านไฟล์ที่ใช้: 5192 ms, 807.839783 KB/s 08:42:44.774 -> ทดสอบอ่าน /test_2k.bin 08: 42:49.969 -> ไฟล์ที่ใช้อ่าน: 5189 ms, 808.306824 KB/s 08:42:49.969 -> อ่านทดสอบ /test_4k.bin 08:42:55.123 -> อ่านไฟล์ที่ใช้: 5161 ms, 812.692139 KB/s 08:42:55.158 -> ทดสอบการอ่าน /test_8k.bin 08:43:00.300 -> Read ไฟล์ที่ใช้: 5176 ms, 810.336914 KB/s 08:43:00.334 -> Test read /test_16k.bin 08:43:05.277 -> Read file used: 4948 ms, 847.676636 KB/s 08:43:05.277 -> Test read /test_32k.bin 08:43:10.028 -> อ่านไฟล์ที่ใช้: 4773 ms, 878.756348 KB/s 08:43:10.028 -> ทดสอบอ่าน /test_64k.bin 08:43:14.760 -> อ่านไฟล์ที่ใช้: 4731 ms, 886.557617 กิโลไบต์/วินาที

MicroSD. เก่า 128 MB

08:43:47.777 -> ทดสอบเขียน /test_1k.bin

08:44:04.148 -> ไฟล์ที่ใช้เขียน: 16390 ms, 255.906281 KB/s 08:44:04.183 -> ทดสอบเขียน /test_2k.bin 08:44:20.648 -> เขียนไฟล์ที่ใช้: 16494 ms, 254.292709 KB/s 08:44:20.648 -> ทดสอบเขียน /test_4k.bin 08:44:36.674 -> เขียนไฟล์ที่ใช้: 16001 ms, 262.127625 KB/s 08:44:36.674 -> ทดสอบเขียน /test_8k.bin 08:44:52.849 -> ไฟล์ที่ใช้เขียน: 16175 ms, 259.307831 KB/s 08:44:52.849 -> Test write /test_16k.bin 08:45:09.225 -> ไฟล์ที่ใช้เขียน: 16397 ms, 255.797043 KB/s 08:45:09.225 -> Test เขียน /test_32k.bin 08:45:25.363 -> เขียนไฟล์ที่ใช้: 16143 ms, 259.821838 KB/s 08:45:25.397 -> ทดสอบเขียน /test_64k.bin 08:45:41.632 -> เขียนไฟล์ที่ใช้: 16263 ms, 257.904694 KB/s 08:45:41.632 -> ทดสอบการอ่าน /test_1k.bin 08:45:46.488 -> อ่านไฟล์ที่ใช้: 4856 ms, 863.736389 KB/s 08:45:46.488 -> ทดสอบอ่าน /test_2k.bin 08: 45:51.332 -> ไฟล์ที่ใช้อ่าน: 4840 ms, 866.591736 KB/s 08:45:51.332 -> ทดสอบการอ่าน /test_4k.bin 08:45:56.163 -> ไฟล์ที่ใช้อ่าน: 4834 ms, 867.667358 KB/s 08:45:56.163 -> ทดสอบอ่าน /test_8k.bin 08:46:00.998 -> R ไฟล์ ead ที่ใช้: 4827 ms, 868.925598 KB/s 08:46:00.998 -> Test read /test_16k.bin 08:46:05.808 -> Read file used: 4825 ms, 869.285828 KB/s 08:46:05.843 -> Test read /test_32k.bin 08:46:10.637 -> Read file used: 4824 ms, 869.466003 KB/s 08:46:10.637 -> Test read /test_64k.bin 08:46:15.478 -> Read file used: 4825 ms, 869.285828 KB/วินาที

ขั้นตอนที่ 11: โหมด SD SPI ที่ VSPI Bus Benchmark

SanDisk 8 GB MicroSD

08:54:17.412 -> ทดสอบเขียน /test_1k.bin

08:54:48.398 -> เขียนไฟล์ที่ใช้: 30994 ms, 135.326324 KB/s 08:54:48.398 -> ทดสอบเขียน /test_2k.bin 08:55:06.079 -> เขียนไฟล์ที่ใช้: 17677 ms, 237.274658 KB/s 08:55:06.079 -> ทดสอบเขียน /test_4k.bin 08:55:13.357 -> เขียนไฟล์ที่ใช้: 7274 ms, 576.615906 KB/s 08:55:13.357 -> ทดสอบเขียน /test_8k.bin 08:55:18.691 -> เขียนไฟล์ที่ใช้: 5323 ms, 787.958679 KB/s 08:55:18.691 -> ทดสอบเขียน /test_16k.bin 08:55:28.336 -> เขียนไฟล์ที่ใช้: 9669 ms, 433.788818 KB/s 08:55:28.336 -> ทดสอบ เขียน /test_32k.bin 08:55:32.646 -> เขียนไฟล์ที่ใช้: 4309 ms, 973.382202 KB/s 08:55:32.646 -> ทดสอบเขียน /test_64k.bin 08:55:35.551 -> เขียนไฟล์ที่ใช้: 2915 ms, 1438.869263 KB/s 08:55:35.584 -> ทดสอบการอ่าน /test_1k.bin 08:55:40.745 -> อ่านไฟล์ที่ใช้: 5183 ms, 809.242554 KB/s 08:55:40.745 -> ทดสอบอ่าน /test_2k.bin 08: 55:45.916 -> ไฟล์ที่ใช้อ่าน: 5182 ms, 809.398682 KB/s 08:55:45.949 -> อ่านทดสอบ /test_4k.bin 08:55:51.091 -> อ่านไฟล์ที่ใช้: 5162 ms, 812.534668 KB/s 08:55:51.091 -> ทดสอบการอ่าน /test_8k.bin 08:55:56.257 -> Read ไฟล์ที่ใช้: 5177 ms, 810.180420 KB/s 08:55:56.293 -> Test read /test_16k.bin 08:56:01.244 -> Read file used: 4956 ms, 846.308289 KB/s 08:56:01.244 -> Test read /test_32k.bin 08:56:06.006 -> อ่านไฟล์ที่ใช้: 4764 ms, 880.416443 KB/s 08:56:06.006 -> ทดสอบอ่าน /test_64k.bin 08:56:10.716 -> อ่านไฟล์ที่ใช้: 4728 ms, 887.120117 กิโลไบต์/วินาที

MicroSD. เก่า 128 MB

08:51:01.939 -> ทดสอบเขียน /test_1k.bin

08:51:18.358 -> ไฟล์ที่ใช้เขียน: 16422 ms, 255.407623 KB/s 08:51:18.358 -> ทดสอบเขียน /test_2k.bin 08:51:34.529 -> เขียนไฟล์ที่ใช้: 16173 ms, 259.339874 KB/s 08:51:34.529 -> ทดสอบเขียน /test_4k.bin 08:51:50.911 -> เขียนไฟล์ที่ใช้: 16372 ms, 256.187653 KB/s 08:51:50.911 -> ทดสอบเขียน /test_8k.bin 08:52:07.056 -> ไฟล์ที่ใช้เขียน: 16137 ms, 259.918457 KB/s 08:52:07.056 -> ทดสอบเขียน /test_16k.bin 08:52:23.383 -> เขียนไฟล์ที่ใช้: 16351 ms, 256.516663 KB/s 08:52:23.383 -> ทดสอบ เขียน /test_32k.bin 08:52:39.533 -> เขียนไฟล์ที่ใช้: 16128 ms, 260.063507 KB/s 08:52:39.533 -> ทดสอบเขียน /test_64k.bin 08:52:55.764 -> เขียนไฟล์ที่ใช้: 16250 ms, 258.111023 KB/s 08:52:55.764 -> ทดสอบการอ่าน /test_1k.bin 08:53:0.645 -> อ่านไฟล์ที่ใช้: 4855 ms, 863.914307 KB/s 08:53:00.645 -> ทดสอบอ่าน /test_2k.bin 08: 53:05.459 -> ไฟล์ที่ใช้อ่าน: 4839 ms, 866.770813 KB/s 08:53:05.459 -> ทดสอบการอ่าน /test_4k.bin 08:53:10.306 -> ไฟล์ที่ใช้อ่าน: 4833 ms, 867.846863 KB/s 08:53 10.306 -> ทดสอบการอ่าน /test_8k.bin 08:53:15.127 -> R ไฟล์ ead ที่ใช้: 4827 ms, 868.925598 KB/s 08:53:15.127 -> ทดสอบการอ่าน /test_16k.bin 08:53:19.963 -> ไฟล์ที่ใช้อ่าน: 4826 ms, 869.105652 KB/s 08:53:19.963 -> ทดสอบ read /test_32k.bin 08:53:24.758 -> Read file used: 4824 ms, 869.466003 KB/s 08:53:24.792 -> Test read /test_64k.bin 08:53:29.592 -> Read file used: 4824 ms, 869.466003 KB/วินาที

ขั้นตอนที่ 12: ปัดเศษขึ้น

โหมดบัส SD 4 บิตมีประสิทธิภาพที่ดีที่สุด โหมดบัส SD 1 บิตช้าลงประมาณ 20% และโหมด SPI ช้าลงประมาณ 50% สาเหตุหลักประการหนึ่งคือเลเยอร์โปรโตคอล SD_MMC ไม่ได้ใช้การล็อกใดๆ แต่ SPI ทำ และโหมดบัส SD แบบ 4 บิตยังมีสายข้อมูลสองเท่า ดังนั้นจึงเพิ่มความเร็วเป็นสองเท่าตามหลักวิชา แต่ MicroSD รุ่นเก่าของฉันไม่สามารถรองรับโหมดบัส SD แบบ 4 บิตได้

ฉันจะแนะนำโหมดบัส SD 1 บิตในกรณีส่วนใหญ่เพราะ:

  • ประสิทธิภาพที่ดี
  • ความเข้ากันได้ของการ์ด SD ที่ดีขึ้น
  • ข้อกำหนด SD Pull-up ที่หลวมกว่า
  • ต้องใช้พิน GPIO เพียง 3 พิน
  • การกำหนดค่าโค้ดที่น้อยกว่า
  • dev kit, dev board และ breakout board สามารถใช้โหมดนี้ได้

แนะนำ: