สารบัญ:
- ขั้นตอนที่ 1: อินเทอร์เฟซ SD
- ขั้นตอนที่ 2: การแมปพิน ESP32 GPIO
- ขั้นตอนที่ 3: ข้อกำหนด SD Pull-up
- ขั้นตอนที่ 4: ฮาร์ดแวร์ต่างๆ
- ขั้นตอนที่ 5: บอร์ดฝ่าวงล้อมช่องเสียบการ์ด SD
- ขั้นตอนที่ 6: ถอด GPIO 2 ขณะโปรแกรม
- ขั้นตอนที่ 7: เกณฑ์มาตรฐาน
- ขั้นตอนที่ 8: เกณฑ์มาตรฐานโหมด SD_MMC 4 บิต
- ขั้นตอนที่ 9: เกณฑ์มาตรฐานโหมด SD_MMC 1 บิต
- ขั้นตอนที่ 10: โหมด SD SPI ที่ HSPI Bus Benchmark
- ขั้นตอนที่ 11: โหมด SD SPI ที่ VSPI Bus Benchmark
- ขั้นตอนที่ 12: ปัดเศษขึ้น
วีดีโอ: เลือก SD Interface สำหรับ ESP32: 12 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
คำแนะนำนี้แสดงบางอย่างเกี่ยวกับการเลือกอินเทอร์เฟซ 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
บอร์ด 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 ขณะโปรแกรม
การเชื่อมต่อโหมดบัส 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 สามารถใช้โหมดนี้ได้
แนะนำ:
ถุงมือ VR Etextile สำหรับ Vive Tracker: 13 ขั้นตอน (พร้อมรูปภาพ)
Etextile VR Gloves สำหรับ Vive Tracker: บทช่วยสอนนี้แสดงวิธีทำถุงมือ etextile สำหรับใช้ใน VR ด้วย Vive tracker จอยสติ๊กเหล่านี้มาแทนที่จอยสติ๊กที่ออกแบบมาสำหรับ Vive ทำให้การโต้ตอบ VR สัมผัสได้และเป็นมนุษย์มากขึ้น ถุงมือเหล่านี้เรียกว่าถุงมือ 'mudra' เนื่องจากคุณบีบดัชนีและเ
Night Vision Goggles สำหรับ Google Cardboard: 10 ขั้นตอน (พร้อมรูปภาพ)
แว่นตา Night Vision สำหรับ Google Cardboard: ข้อจำกัดความรับผิดชอบ: การใช้อุปกรณ์นี้มีขึ้นเพื่อความบันเทิง การศึกษา และการใช้งานทางวิทยาศาสตร์เท่านั้น ไม่ใช่เพื่อการสอดแนมและ/หรือการเฝ้าระวัง "แกดเจ็ตสอดแนม" ฟีเจอร์ต่าง ๆ ถูกเพิ่มเข้ามาในแอพเพื่อความสนุกสนานเท่านั้น และจะไม่มีประโยชน์อะไรสำหรับ
Flipperkonsole สำหรับ PC Flipper / Pinball Console สำหรับ PC Pinballs: 9 ขั้นตอน
Flipperkonsole สำหรับ PC Flipper / Pinball Console สำหรับ PC Pinballs: ใช้งานได้กับ USB พื้นฐาน เกมสำหรับ PC-Flipperkästen Die Spannungsversorgung erfolgt über das USB Kabel. Implementiert sind die beiden Flipper Buttons และ ein Startbutton Zusätzlich ist ein stossen von unten, von links และ von rechts implem
Bluetooth Wireless Interface สำหรับ Mitutoyo Calipers and indicators: 8 ขั้นตอน (พร้อมรูปภาพ)
อินเทอร์เฟซไร้สาย Bluetooth สำหรับเครื่องวัดเส้นผ่าศูนย์กลางและตัวชี้วัด Mitutoyo: ปัจจุบันมีเครื่องวัดเส้นผ่าศูนย์กลาง ไมโครมิเตอร์ ตัวบ่งชี้ และอุปกรณ์อื่นๆ ของ Mitutoyo Digimatic หลายล้านรายการ หลายคนเช่นฉันใช้อุปกรณ์เหล่านั้นเพื่อรวบรวมข้อมูลลงในพีซีโดยตรง ช่วยลดการเข้าสู่ระบบและพิมพ์ในบางครั้งหลายร้อย
3.3V Mod สำหรับ Ultrasonic Sensors (เตรียม HC-SR04 สำหรับ 3.3V Logic บน ESP32/ESP8266, Particle Photon ฯลฯ): 4 ขั้นตอน
3.3V Mod สำหรับ Ultrasonic Sensors (เตรียม HC-SR04 สำหรับ 3.3V Logic บน ESP32/ESP8266, Particle Photon, ฯลฯ.): TL;DR: บนเซนเซอร์ ตัดร่องรอยไปที่ Echo pin จากนั้นเชื่อมต่อใหม่โดยใช้ a ตัวแบ่งแรงดันไฟฟ้า (Echo trace -> 2.7kΩ -> Echo pin -> 4.7kΩ -> GND) แก้ไข: มีการถกเถียงกันว่า ESP8266 นั้นทนทานต่อ GPIO 5V จริงหรือไม่ใน