﻿{"id":467,"date":"2024-03-30T21:32:54","date_gmt":"2024-03-30T13:32:54","guid":{"rendered":"https:\/\/3dok.biz\/wordpress\/?p=467"},"modified":"2024-03-30T22:18:22","modified_gmt":"2024-03-30T14:18:22","slug":"arduino%ef%bc%9a%e5%bf%ab%e9%80%9f%e5%a4%96%e9%83%a8-spi-%e5%bf%ab%e9%96%83%e8%a8%98%e6%86%b6%e9%ab%94","status":"publish","type":"post","link":"https:\/\/3dok.biz\/wordpress\/?p=467","title":{"rendered":"Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"467\" class=\"elementor elementor-467\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8a134a4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8a134a4\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d6fd5e8\" data-id=\"d6fd5e8\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ca51098 elementor-widget elementor-widget-image\" data-id=\"ca51098\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"586\" src=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg\" class=\"attachment-large size-large wp-image-480\" alt=\"\" srcset=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg 1024w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1-300x172.jpg 300w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1-768x440.jpg 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7553f03 elementor-widget elementor-widget-image\" data-id=\"7553f03\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"925\" height=\"414\" src=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-esp32-esp8266-SPI-Flash-SMD-SOIC-DIP8-pinout-w25-25.png\" class=\"attachment-large size-large wp-image-484\" alt=\"\" srcset=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-esp32-esp8266-SPI-Flash-SMD-SOIC-DIP8-pinout-w25-25.png 925w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-esp32-esp8266-SPI-Flash-SMD-SOIC-DIP8-pinout-w25-25-300x134.png 300w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-esp32-esp8266-SPI-Flash-SMD-SOIC-DIP8-pinout-w25-25-768x344.png 768w\" sizes=\"(max-width: 925px) 100vw, 925px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5cc172f elementor-widget elementor-widget-image\" data-id=\"5cc172f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"877\" height=\"411\" src=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-esp32-esp8266-SPI-Flash-Discrete-PDIP-pinout-w25-25.png\" class=\"attachment-large size-large wp-image-485\" alt=\"\" srcset=\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-esp32-esp8266-SPI-Flash-Discrete-PDIP-pinout-w25-25.png 877w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-esp32-esp8266-SPI-Flash-Discrete-PDIP-pinout-w25-25-300x141.png 300w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-esp32-esp8266-SPI-Flash-Discrete-PDIP-pinout-w25-25-768x360.png 768w, https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-esp32-esp8266-SPI-Flash-Discrete-PDIP-pinout-w25-25-520x245.png 520w\" sizes=\"(max-width: 877px) 100vw, 877px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-52c5a25 elementor-widget elementor-widget-text-editor\" data-id=\"52c5a25\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"post-byline\">\u4f5c\u8005\uff1a\u00a0<span class=\"vcard author\"><span class=\"fn\"><a title=\"\u502b\u4f50\u00b7\u7c73\u65af\u57fa\u5b89\u8482\u7684\u5e16\u5b50\" href=\"https:\/\/mischianti.org\/author\/reef\/\" rel=\"author\">\u502b\u4f50\u00b7\u7c73\u65af\u57fa\u5b89\u8482<\/a><\/span><\/span>\u00a0\u00b7\u51fa\u7248<span class=\"vcard author\">\u00a0<\/span><time class=\"published\" datetime=\"2022-08-02T00:07:59+02:00\">2022 \u5e74 8 \u6708 2 \u65e5<\/time>\u00a0\u00b7 \u66f4\u65b0<time class=\"updated\" datetime=\"2024-02-22T22:51:11+01:00\">2024 \u5e74 2 \u6708 22 \u65e5<\/time><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"xQ0l1Z3c7p\"><a href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/\">Arduino: fast external SPI Flash memory<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Arduino: fast external SPI Flash memory&#8221; &#8212; Renzo Mischianti\" src=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/embed\/#?secret=Yq8uk4Ubnf#?secret=xQ0l1Z3c7p\" data-secret=\"xQ0l1Z3c7p\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p>\u00a0<\/p><div class=\"entry themeform fittexted_for_entry\"><div class=\"entry-inner\">\u9019\u88e1\u6211\u5011\u53c8\u8981\u8b1b\u5132\u5b58\u7cfb\u7d71\u4e86\uff0c\u6211\u5011\u5df2\u7d93\u89e3\u91cb\u4e86SD\u7ba1\u7406\uff08\u60a8\u53ef\u4ee5\u67e5\u770b\u201c<a href=\"https:\/\/mischianti.org\/how-to-use-sd-card-with-esp8266-and-arduino\/\">\u5982\u4f55\u5728esp8266\u548cArduino\u4e0a\u4f7f\u7528SD\u5361<\/a>\u201d\u4e2d\u7684SD\u7ba1\u7406\uff09\uff0c\u73fe\u5728\u6211\u5011\u4f86\u770b\u770b\u5916\u90e8SPI Flash \u7b49\u66ff\u4ee3\u5b58\u5132\uff0c\u985e\u4f3c\u65bcEEPROM\uff0c\u4f46\u5c3a\u5bf8\u6700\u5927\u3002\u5c31\u5c3a\u5bf8\u548c\u76f8\u5bb9\u6027\u800c\u8a00\uff0cSD \u7121\u7591\u4ecd\u7136\u662f\u6700\u4f73\u9078\u64c7\uff0c\u4f46\u6211\u5011\u70ba\u9019\u4e9b\u529f\u80fd\u4ed8\u51fa\u4e86\u5927\u91cf\u7684\u7cbe\u529b\uff1b SPI Flash\u5bb9\u91cf\u8f03\u5c0f\uff0c\u4f46\u9ad4\u7a4d\u5c0f\u3001\u901f\u5ea6\u5feb\u3001\u529f\u8017\u6975\u4f4e\u3002<\/div><div>\u00a0<\/div><div class=\"entry-inner\">Arduino UNO \u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4<\/div><div>\u00a0<\/div><div class=\"entry-inner\">\u5c0d\u65bc\u50cf Arduino UNO \u9019\u6a23\u7684\u8a2d\u5099\uff0c\u6211\u5011\u53ef\u4ee5\u4f7f\u7528 SPI Flash \u548c\u4e00\u500b\u57fa\u672c\u4e14\u975e\u5e38\u8f15\u7684\u5eab\uff0c\u4f46\u662f\u60a8\u53ef\u4ee5\u7ba1\u7406\u5927\u91cf\u7684\u8a18\u61b6\u9ad4\uff08\u5f9e 256Kb \u5230 64Mb\uff09\uff0c\u9019\u5c0d\u65bc\u8a31\u591a\u5c08\u6848\u4f86\u8aaa\u5df2\u7d93\u8db3\u5920\u4e86\uff0c\u53ef\u4ee5\u4f7f\u7528\u4e00\u500b\u5b8c\u6574\u7684\u6a94\u6848\u7cfb\u7d71\uff0c\u4f46\u6211\u4e0d\u5efa\u8b70\u5c07\u5176\u7528\u65bc\u4f4e\u8cc7\u6e90\u8a2d\u5099\uff0c\u6211\u5011\u5c07\u4e86\u89e3\u5982\u4f55\u5c07\u6a94\u6848\u7cfb\u7d71\u8207Arduino SAMD \u6216esp \u8a2d\u5099\u7b49\u8a2d\u5099\u4e00\u8d77\u4f7f\u7528\u3002<\/div><div class=\"entry-inner\"><p>\u4eca\u5929\u6211\u5011\u4f86\u770b\u770bSPI\u5feb\u9583\u8a18\u61b6\u9ad4\uff08NOR Flash\uff09\u3002\u5b83\u5011\u662f\u4e00\u500b\u55ae\u6676\u7247\uff0c\u53ef\u4ee5\u900f\u904eSPI\u9032\u884c\u7ba1\u7406\uff0c\u5177\u6709\u9ad8\u901f\u5b58\u53d6\u548c\u4f4e\u529f\u8017\u7684\u7279\u6027\u3002<\/p><blockquote class=\"wp-block-quote\"><p><strong>\u5feb\u9583\u8a18\u61b6\u9ad4<\/strong>\u00a0\u662f\u4e00\u7a2e\u96fb\u5b50\u975e\u63ee\u767c\u6027\u96fb\u8166\u8a18\u61b6\u9ad4\u5132\u5b58\u4ecb\u8cea\uff0c\u53ef\u4ee5\u96fb\u64e6\u9664\u548c\u91cd\u65b0\u7de8\u7a0b\u3002\u5feb\u9583\u8a18\u61b6\u9ad4\u7684\u5169\u7a2e\u4e3b\u8981\u985e\u578b\uff1aNOR \u5feb\u9583\u8a18\u61b6\u9ad4\u548c NAND \u5feb\u9583\u8a18\u61b6\u9ad4\uff0c\u4ee5 NOR \u548c NAND \u908f\u8f2f\u9598\u547d\u540d\u3002 NAND \u5feb\u9583\u8a18\u61b6\u9ad4\u548c NOR \u5feb\u9583\u8a18\u61b6\u9ad4\u63a1\u7528\u76f8\u540c\u7684\u55ae\u5143\u8a2d\u8a08\uff0c\u7531\u6d6e\u67f5 MOSFET \u7d44\u6210\u3002\u5b83\u5011\u5728\u96fb\u8def\u5c64\u9762\u4e0a\u6709\u6240\u4e0d\u540c\uff1a\u5728NAND\u5feb\u9583\u8a18\u61b6\u9ad4\u4e2d\uff0c\u4f4d\u5143\u7dda\u548c\u5b57\u7dda\u4e4b\u9593\u7684\u95dc\u4fc2\u985e\u4f3c\u65bcNAND\u9598\uff1b\u800c\u5728NAND\u5feb\u9583\u8a18\u61b6\u9ad4\u4e2d\uff0c\u4f4d\u5143\u7dda\u548c\u5b57\u7dda\u4e4b\u9593\u7684\u95dc\u4fc2\u985e\u4f3c\u65bcNAND\u9598\u3002\u5728NOR\u5feb\u9583\u8a18\u61b6\u9ad4\u4e2d\uff0c\u5b83\u985e\u4f3c\u65bc\u6216\u975e\u9580\uff1b\u9019\u53d6\u6c7a\u65bc\u4f4d\u7dda\u6216\u5b57\u7dda\u7684\u72c0\u614b\u662f\u62c9\u9ad8\u9084\u662f\u62c9\u4f4e\u3002<\/p><p>\u5feb\u9583\u8a18\u61b6\u9ad4\u662f\u4e00\u7a2e\u6d6e\u67f5\u8a18\u61b6\u9ad4\uff0c\u7531\u6771\u829d\u65bc 1980 \u5e74\u767c\u660e\uff0c\u57fa\u65bc EEPROM \u6280\u8853\u3002\u6771\u829d\u65bc 1987 \u5e74\u958b\u59cb\u92b7\u552e\u5feb\u9583\u8a18\u61b6\u9ad4\u3002EPROM \u5fc5\u9808\u5b8c\u5168\u64e6\u9664\u624d\u80fd\u91cd\u5beb\u3002\u7136\u800c\uff0cNAND \u5feb\u9583\u8a18\u61b6\u9ad4\u53ef\u4ee5\u6309\u5340\u584a\uff08\u6216\u9801\uff09\u9032\u884c\u64e6\u9664\u3001\u5beb\u5165\u548c\u8b80\u53d6\uff0c\u5340\u584a\uff08\u6216\u9801\uff09\u901a\u5e38\u6bd4\u6574\u500b\u88dd\u7f6e\u5c0f\u5f97\u591a\u3002 NOR \u5feb\u9583\u8a18\u61b6\u9ad4\u5141\u8a31\u5c07\u55ae\u4e00\u6a5f\u5668\u5b57\u5beb\u5165\u5df2\u64e6\u9664\u4f4d\u7f6e\u6216\u7368\u7acb\u8b80\u53d6\u3002\u5feb\u9583\u8a18\u61b6\u9ad4\u5143\u4ef6\u901a\u5e38\u7531\u4e00\u500b\u6216\u591a\u500b\u5feb\u9583\u8a18\u61b6\u9ad4\u6676\u7247\uff08\u6bcf\u500b\u6676\u7247\u5305\u542b\u8a31\u591a\u5feb\u9583\u8a18\u61b6\u9ad4\u55ae\u5143\uff09\u4ee5\u53ca\u55ae\u7368\u7684\u5feb\u9583\u8a18\u61b6\u9ad4\u63a7\u5236\u5668\u6676\u7247\u7d44\u6210\u3002<\/p><p><cite>\u7dad\u57fa\u767e\u79d1<\/cite><\/p><\/blockquote><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_64 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\"><p><label class=\"ez-toc-cssicon-toggle-label\" for=\"ez-toc-cssicon-toggle-item-6607b8443544b\"><\/label><input id=\"ez-toc-cssicon-toggle-item-6607b8443544b\" type=\"checkbox\" aria-label=\"\u5207\u63db\" \/><\/p><nav><ul class=\"ez-toc-list ez-toc-list-level-1 \"><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-1\" title=\"SPI \u5feb\u9583\u8a18\u61b6\u9ad4\u5f15\u8173\u6392\u5217\" href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/#SPI_Flash_memories_pinout\">SPI \u5feb\u9583\u8a18\u61b6\u9ad4\u5f15\u8173\u6392\u5217<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-2\" title=\"Arduino\u63a5\u7dda\u5716\" href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/#Arduino_wiring_diagram\">Arduino\u63a5\u7dda\u5716<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-3\" title=\"\u5716\u66f8\u9928\" href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/#Library\">\u5716\u66f8\u9928<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-4\" title=\"\u6545\u969c\u6392\u9664\" href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/#Troubleshooting\">\u6545\u969c\u6392\u9664<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-5\" title=\"\u547d\u4ee4\" href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/#Commands\">\u547d\u4ee4<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-6\" title=\"\u4f8b\u5b50\" href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/#Examples\">\u4f8b\u5b50<\/a><br \/><ul class=\"ez-toc-list-level-3\"><li class=\"ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-7\" title=\"\u53d6\u5f97SPI Flash\u4fe1\u606f\" href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/#Get_SPI_Flash_information\">\u53d6\u5f97SPI Flash\u4fe1\u606f<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-8\" title=\"\u4fdd\u5b58\u548c\u8b80\u53d6 JSON \u7d50\u69cb\" href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/#Save_and_read_a_JSON_structure\">\u4fdd\u5b58\u548c\u8b80\u53d6 JSON \u7d50\u69cb<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-9\" title=\"\u4fdd\u5b58\u548c\u8b80\u53d6\u7d50\u69cb\" href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/#Save_and_read_structure\">\u4fdd\u5b58\u548c\u8b80\u53d6\u7d50\u69cb<\/a><\/li><\/ul><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-10\" title=\"SPI Flash \u4e0a\u7684 fat \u6a94\u6848\u7cfb\u7d71\" href=\"https:\/\/mischianti.org\/arduino-fast-external-spi-flash-memory\/#The_fat_filesystem_on_SPI_Flash\">SPI Flash \u4e0a\u7684 fat \u6a94\u6848\u7cfb\u7d71<\/a><\/li><\/ul><\/nav><\/div><h2 class=\"wp-block-heading fittexted_for_content_h2\">\u00a0<\/h2><h2 class=\"wp-block-heading fittexted_for_content_h2\"><span id=\"SPI_Flash_memories_pinout\" class=\"ez-toc-section\"><\/span>SPI \u5feb\u9583\u8a18\u61b6\u9ad4\u5f15\u8173\u6392\u5217<\/h2><p>\u6709SMD\u548c\u900f\u904eSPI\u5354\u8b70\u7ba1\u7406\u7684\u5206\u7acbIC\u3002<\/p><p>\u5927\u591a\u6578 SPI Flash\uff08\u83ef\u90a6\u3001\u5bcc\u58eb\u901a\u7b49\uff09\u7684\u63a5\u8173\u6392\u5217\u90fd\u662f\u76f8\u540c\u7684\uff0cSMD \u548c\u5206\u7acb\u5143\u4ef6\u4e5f\u662f\u76f8\u540c\u7684\u3002<\/p><p>SPI \u5feb\u9583\u8a18\u61b6\u9ad4\u96e2\u6563 PDIP \u5f15\u8173\u6392\u5217<\/p><div class=\"wp-block-image\">\u00a0<\/div><div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><figcaption class=\"wp-element-caption\">SPI \u5feb\u9583 SMD SOIC DIP8 \u5f15\u8173\u6392\u5217<\/figcaption><\/figure><\/div><p>\u9019\u88e1\u6709\u4e00\u7d44\u4e0d\u540c\u5927\u5c0f\u7684 SPI \u5feb\u9583\u8a18\u61b6\u9ad4\u00a0<a href=\"https:\/\/s.click.aliexpress.com\/e\/_9J82xD\" target=\"_blank\" rel=\"noopener\">w25q16 SMD 2Mb<\/a>\u00a0&#8211;\u00a0<a href=\"https:\/\/s.click.aliexpress.com\/e\/_9JAjaT\" target=\"_blank\" rel=\"noopener\">w25q16 Discrete 2Mb<\/a>\u00a0&#8211;\u00a0<a href=\"https:\/\/s.click.aliexpress.com\/e\/_9vfNyB\" target=\"_blank\" rel=\"noopener\">w25q32 SMD 4Mb<\/a>\u00a0&#8211;\u00a0<a href=\"https:\/\/s.click.aliexpress.com\/e\/_AkH4Er\" target=\"_blank\" rel=\"noopener\">w25q32 Discrete 4Mb<\/a>\u00a0&#8211;\u00a0<a href=\"https:\/\/s.click.aliexpress.com\/e\/_9yEJAx\" target=\"_blank\" rel=\"noopener\">w25q64 SMD 8Mb<\/a>\u00a0&#8211;\u00a0<a href=\"https:\/\/s.click.aliexpress.com\/e\/_A6Z4Cb\" target=\"_blank\" rel=\"noopener\">w2564 Discrete 4Mb<\/a>\u00a0&#8211; w25q64\u00a0<a href=\"https:\/\/s.click.aliexpress.com\/e\/_AgT1Xz\" target=\"_blank\" rel=\"noopener\">SMD 8Mb<\/a>\u00a0&#8211;\u00a0<a href=\"https:\/\/s.click.aliexpress.com\/e\/_9Askdd\" target=\"_blank\" rel=\"noopener\">w2564 Discrete 8Mb &#8211; w25q\u00a0<\/a><a href=\"https:\/\/s.click.aliexpress.com\/e\/_A0H15h\" target=\"_blank\" rel=\"noopener\">5Q32 W 25Q64 w25q128 \u6a21\u7d44 4Mb 8Mb 16Mb<\/a><\/p><h2 class=\"wp-block-heading fittexted_for_content_h2\"><span id=\"Arduino_wiring_diagram\" class=\"ez-toc-section\"><\/span>Arduino\u63a5\u7dda\u5716<\/h2><p>\u9023\u63a5\u7684\u7b2c\u4e00\u500b\u554f\u984c\u662fArduino UNO\u67095v\u908f\u8f2f\uff0c\u4f46SPI Flash\u67093.3v\u908f\u8f2f\uff0c\u6240\u4ee5\u6700\u5feb\u7684\u9023\u63a5\u65b9\u5f0f\uff08\u4f46\u4e0d\u662f\u6700\u597d\u7684\uff09\u662f\u4f7f\u7528\u5206\u58d3\u5668\uff0c\u53c3\u8003\u9019\u7bc7\u6587\u7ae0\u300c<a href=\"https:\/\/mischianti.org\/voltage-divider-calculator-and-application\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u5206\u58d3\u5668\uff1a\u8a08\u7b97\u5668\u548c\u61c9\u7528\u7a0b\u5f0f<\/a>\u201c\uff0c\u53e6\u4e00\u7a2e\u89e3\u6c7a\u65b9\u6848\u662f\u4f7f\u7528\u908f\u8f2f\u96fb\u5e73\u8f49\u63db\u5668\uff0c\u9019\u662f\u4e00\u7a2e\u5c07\u908f\u8f2f\u5f9e\u96fb\u58d3\u8f49\u63db\u70ba\u53e6\u4e00\u7a2e\u96fb\u58d3\u7684\u7c21\u55ae\u8a2d\u5099\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002<\/p><p>\u9019\u88e1\u662f\u908f\u8f2f\u96fb\u5e73\u8f49\u63db\u5668\u00a0<a href=\"https:\/\/s.click.aliexpress.com\/e\/_9GecB5\" target=\"_blank\" rel=\"noopener\">Aliexpress<\/a><\/p><p>\u9023\u63a5\u6a21\u5f0f\u8b8a\u6210\u9019\u6a23\uff1a<\/p><figure class=\"wp-block-table is-style-stripes\"><table class=\"has-background\"><thead><tr><th>Arduino<\/th><th>SPI\u5feb\u9583\u8a18\u61b6\u9ad4<\/th><th>\u00a0<\/th><\/tr><\/thead><tbody><tr class=\"alt\"><td>10<\/td><td>\/CS<\/td><td>\u5982\u679c\u4e0d\u662f\u6a19\u6e96 CS\uff0c\u5247\u62c9\u8d77\uff1b<br \/>\u5206\u58d3\u5668\u3002<\/td><\/tr><tr><td>11<\/td><td>DI\uff08\u8f38\u5165\u8f38\u51fa<sub>1<\/sub>\uff09<\/td><td>\u5206\u58d3\u5668<\/td><\/tr><tr class=\"alt\"><td>12<\/td><td>DI\uff08IO\u00a0<sub>0<\/sub>\uff09<\/td><td>\u00a0<\/td><\/tr><tr><td>13<\/td><td>\u6642\u9418<\/td><td>\u5206\u58d3\u5668<\/td><\/tr><tr class=\"alt\"><td>3.3V<\/td><td>\/WP<\/td><td>\u00a0<\/td><\/tr><tr><td>3.3V<\/td><td>\/\u6293\u4f4f<\/td><td>\u00a0<\/td><\/tr><tr class=\"alt\"><td>\u63a5\u5730<\/td><td>\u63a5\u5730<\/td><td>\u00a0<\/td><\/tr><tr><td>3.3V<\/td><td>\u96fb\u58d3\u63a7\u5236\u96fb\u8def<\/td><td>\u00a0<\/td><\/tr><\/tbody><\/table><\/figure><div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11570 tc-smart-loaded\" src=\"https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-connection-DIP8-SPI-Flash-breadboard-w25q80-1024x443.jpg\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-connection-DIP8-SPI-Flash-breadboard-w25q80-1024x443.jpg 1024w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-connection-DIP8-SPI-Flash-breadboard-w25q80-300x130.jpg 300w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-connection-DIP8-SPI-Flash-breadboard-w25q80-768x332.jpg 768w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-connection-DIP8-SPI-Flash-breadboard-w25q80-1536x664.jpg 1536w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-connection-DIP8-SPI-Flash-breadboard-w25q80.jpg 1728w\" alt=\"Arduino UNO \u9023\u63a5 DIP8 SPI \u5feb\u9583\u9eb5\u5305\u677f w25q80\" width=\"1024\" height=\"443\" \/><figcaption class=\"wp-element-caption\">Arduino UNO \u9023\u63a5 DIP8 SPI \u5feb\u9583\u9eb5\u5305\u677f w25q80<\/figcaption><\/figure><\/div><p class=\"has-luminous-vivid-orange-background-color has-background\">\u6211\u52a0\u4e86\u4e00\u500b0.1\u03bcF\u7684\u96fb\u5bb9\uff0c\u6548\u679c\u5f88\u597d\uff0c\u4f46\u9019\u7a2e\u60c5\u6cc1\u4e0b\u7684\u6a19\u6e96\u503c\u662f0.01\u03bcF<\/p><div class=\"ai-viewport-1\" data-insertion-position=\"prepend\" data-selector=\".ai-insert-9-11398395\" data-insertion-no-dbg=\"\" data-code=\"PGRpdiBjbGFzcz0nY29kZS1ibG9jayBjb2RlLWJsb2NrLTknIHN0eWxlPSdtYXJnaW46IDhweCBhdXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGRpc3BsYXk6IGJsb2NrOyBjbGVhcjogYm90aDsnPgo8YSBocmVmPSJodHRwczovL3d3dy5wY2J3YXkuY29tLz9mcm9tPW1pc2NoaWFudGk3MjMiIHRhcmdldD0iX2JsYW5rIj48aW1nIHdpZHRoPSIzMTUiIGhlaWdodD0iMjIwIiBzcmM9Imh0dHBzOi8vbWlzY2hpYW50aS5vcmcvd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDUvcGNiV2F5LWJhbm5lci1tb2JpbGUtMzAweDIwMC0xLmdpZiIgcm9sZT0iYmFubmVyIiBhcmlhLWxhYmVsPSJBZHZlcnRpc2VtZW50IiAgYWx0PSJBZHZlcnRpc2VtZW50Ii8+PC9hPjwvZGl2Pgo=\" data-block=\"9\">\u00a0<\/div><div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11572 tc-smart-loaded\" src=\"https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-connection-DIP8-SPIFlash-schema-2-w25q32.jpg\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-connection-DIP8-SPIFlash-schema-2-w25q32.jpg 1024w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-connection-DIP8-SPIFlash-schema-2-w25q32-300x139.jpg 300w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-connection-DIP8-SPIFlash-schema-2-w25q32-768x356.jpg 768w\" alt=\"Arduino UNO \u9023\u63a5 DIP8 SPIFlash \u67b6\u69cb 2 w25q32\" width=\"1024\" height=\"475\" \/><figcaption class=\"wp-element-caption\">Arduino UNO \u9023\u63a5 DIP8 SPIFlash \u67b6\u69cb 2 w25q32<\/figcaption><\/figure><\/div><p>\u5b83\u5de5\u4f5c\u5f97\u5f88\u597d\uff0c\u4f46\u5982\u679c\u4f60\u60f3\u4f7f\u7528\u96d9 SPI \u6a21\u5f0f\uff0c\u4f60\u9084\u9700\u8981\u4f7f\u7528 MISO \u4f86\u8b80\u53d6\u6578\u64da\uff0c\u800c\u4e14\u9019\u7a2e\u9023\u63a5\u4e0d\u662f\u96d9\u5411\u7684\uff0c\u6240\u4ee5\u4f60\u9700\u8981\u4e00\u500b\u96d9\u5411\u908f\u8f2f\u96fb\u5e73\u8f49\u63db\u5668\u3002<\/p><h2 class=\"wp-block-heading fittexted_for_content_h2\"><span id=\"Library\" class=\"ez-toc-section\"><\/span>\u5716\u66f8\u9928<\/h2><p>\u70ba\u9019\u4e9b\u6e2c\u8a66\u9078\u64c7\u7684\u51fd\u5f0f\u5eab\u662f SPIMemory\u3002\u5b83\u904b\u4f5c\u826f\u597d\u4e14\u8cc7\u6e90\u8f03\u5c11\u3002<\/p><p>\u60a8\u4e5f\u53ef\u4ee5\u76f4\u63a5\u5728 Arduino IDE \u4e2d\u4e0b\u8f09\u5b83\u3002<\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a class=\"\" href=\"https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-esp32-esp8266-SPI-Flash-memory-SPIMemory-library-manager.jpg\" data-featherlight=\"image\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11499 tc-smart-loaded\" src=\"https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-esp32-esp8266-SPI-Flash-memory-SPIMemory-library-manager.jpg\" sizes=\"(max-width: 786px) 100vw, 786px\" srcset=\"https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-esp32-esp8266-SPI-Flash-memory-SPIMemory-library-manager.jpg 786w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-esp32-esp8266-SPI-Flash-memory-SPIMemory-library-manager-300x169.jpg 300w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-esp32-esp8266-SPI-Flash-memory-SPIMemory-library-manager-768x433.jpg 768w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-esp32-esp8266-SPI-Flash-memory-SPIMemory-library-manager-128x72.jpg 128w\" alt=\"Arduino IDE \u5eab\u7ba1\u7406\u5668\u4e2d\u7684 SPIMemory \u5eab\" width=\"786\" height=\"443\" \/><\/a><figcaption class=\"wp-element-caption\">Arduino IDE \u5eab\u7ba1\u7406\u5668\u4e2d\u7684 SPIMemory \u5eab<\/figcaption><\/figure><\/div><h2 class=\"wp-block-heading fittexted_for_content_h2\"><span id=\"Troubleshooting\" class=\"ez-toc-section\"><\/span>\u6545\u969c\u6392\u9664<\/h2><p>\u60a8\u7684\u8a18\u61b6\u9ad4\u4e0d\u592a\u53ef\u80fd\u7121\u6cd5\u88ab\u8b58\u5225\uff0c\u4f46\u5982\u679c\u767c\u751f\u9019\u7a2e\u60c5\u6cc1\uff0c\u5247\u53ef\u80fd\u662f SPI \u901a\u9053\u914d\u7f6e\u554f\u984c\u3002\u652f\u63f4\u7684\u8a18\u61b6\u9ad4\u985e\u578b\u96c6\u975e\u5e38\u5ee3\u6cdb\uff1a<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_759148\" class=\"syntaxhighlighter syntaxhighlightersize arduino\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><div class=\"line number2 index1 alt1\">2<\/div><div class=\"line number3 index2 alt2\">3<\/div><div class=\"line number4 index3 alt1\">4<\/div><div class=\"line number5 index4 alt2\">5<\/div><div class=\"line number6 index5 alt1\">6<\/div><div class=\"line number7 index6 alt2\">7<\/div><div class=\"line number8 index7 alt1\">8<\/div><div class=\"line number9 index8 alt2\">9<\/div><div class=\"line number10 index9 alt1\">10<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"arduino color1 bold\">const<\/code> <code class=\"arduino plain\">uint8_t _capID[<\/code><code class=\"arduino constants\">18<\/code><code class=\"arduino plain\">]\u00a0\u00a0 <\/code><code class=\"arduino plain bold\">=<\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"arduino plain\">{<\/code><code class=\"arduino constants\">0x10<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x11<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x12<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x13<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x14<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x15<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x16<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x17<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x18<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x19<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x41<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x42<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x43<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x4B<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x00<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x01<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x13<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">0x37<\/code><code class=\"arduino plain\">};<\/code><\/div><div class=\"line number3 index2 alt2\">\u00a0<\/div><div class=\"line number4 index3 alt1\"><code class=\"arduino color1 bold\">const<\/code> <code class=\"arduino plain\">uint32_t _memSize[<\/code><code class=\"arduino constants\">18<\/code><code class=\"arduino plain\">]\u00a0 <\/code><code class=\"arduino plain bold\">=<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"arduino plain\">{KB(<\/code><code class=\"arduino constants\">64<\/code><code class=\"arduino plain\">), KB(<\/code><code class=\"arduino constants\">128<\/code><code class=\"arduino plain\">), KB(<\/code><code class=\"arduino constants\">256<\/code><code class=\"arduino plain\">), KB(<\/code><code class=\"arduino constants\">512<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">1<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">2<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">4<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">8<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">16<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">32<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">2<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">4<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">8<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">8<\/code><code class=\"arduino plain\">), KB(<\/code><code class=\"arduino constants\">256<\/code><code class=\"arduino plain\">), KB(<\/code><code class=\"arduino constants\">512<\/code><code class=\"arduino plain\">), MB(<\/code><code class=\"arduino constants\">4<\/code><code class=\"arduino plain\">), KB(<\/code><code class=\"arduino constants\">512<\/code><code class=\"arduino plain\">)};<\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"arduino comments\">\/\/ To understand the _memSize definitions check defines.h<\/code><\/div><div class=\"line number7 index6 alt2\">\u00a0<\/div><div class=\"line number8 index7 alt1\"><code class=\"arduino color1 bold\">const<\/code> <code class=\"arduino plain\">uint8_t _supportedManID[<\/code><code class=\"arduino constants\">9<\/code><code class=\"arduino plain\">] <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino plain\">{WINBOND_MANID, MICROCHIP_MANID, CYPRESS_MANID, ADESTO_MANID, MICRON_MANID, ON_MANID, GIGA_MANID, AMIC_MANID, MACRONIX_MANID};<\/code><\/div><div class=\"line number9 index8 alt2\">\u00a0<\/div><div class=\"line number10 index9 alt1\"><code class=\"arduino color1 bold\">const<\/code> <code class=\"arduino plain\">uint8_t _altChipEraseReq[<\/code><code class=\"arduino constants\">3<\/code><code class=\"arduino plain\">] <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino plain\">{A25L512, M25P40, SST26};<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><p>\u5982\u679c\u60a8\u7684\u5feb\u9583\u8a18\u61b6\u9ad4\u6709\u554f\u984c\uff0c\u53ef\u80fd\u662f SPI \u8a2d\u5b9a\u554f\u984c\u3002<\/p><div class=\"ai-viewport-1\" data-insertion-position=\"prepend\" data-selector=\".ai-insert-21-36525299\" data-insertion-no-dbg=\"\" data-code=\"PGRpdiBjbGFzcz0nY29kZS1ibG9jayBjb2RlLWJsb2NrLTIxJyBzdHlsZT0nbWFyZ2luOiA4cHggYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyOyBkaXNwbGF5OiBibG9jazsgY2xlYXI6IGJvdGg7Jz4KPGEgaHJlZj0iaHR0cHM6Ly93d3cuc3VuZm91bmRlci5jb20vP3JlZj1mejU5QVVWRCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgd2lkdGg9IjMxNSIgaGVpZ2h0PSIyMDAiIHNyYz0iaHR0cHM6Ly93d3cubWlzY2hpYW50aS5vcmcvd3AtY29udGVudC91cGxvYWRzLzIwMjMvMDEvc3VuZm91bmRlcl9tb2JpbGVfMzAweDIwMC5qcGciIHJvbGU9ImJhbm5lciIgYXJpYS1sYWJlbD0iQWR2ZXJ0aXNlbWVudCIgIGFsdD0iQWR2ZXJ0aXNlbWVudCIvPjwvYT48L2Rpdj4K\" data-block=\"21\">\u00a0<\/div><p>\u4f8b\u5982\uff0c\u96d6\u7136\u60a8\u4f7f\u7528\u6a19\u6e96 SPI \u901a\u9053\uff0c\u4f46\u60a8\u4e5f\u6703\u4f7f\u7528 SPIMemory \u7684\u6a19\u6e96\u5efa\u69cb\u51fd\u6578\uff0c\u5982\u4e0b\u6240\u793a\uff1a<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_923351\" class=\"syntaxhighlighter syntaxhighlightersize arduino\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"arduino plain\">SPIFlash flash;<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><p>\u6700\u597d\u50cf\u9019\u6a23\u6307\u5b9a\u914d\u7f6e\uff0c\u5176\u4e2d SS \u662f CS \u9078\u64c7\u5668\uff0cSPI \u662f SPI \u901a\u9053\uff1a<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_996040\" class=\"syntaxhighlighter syntaxhighlightersize arduino\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"arduino plain\">SPIFlash flash(SS, <\/code><code class=\"arduino plain bold\">&amp;<\/code><code class=\"arduino plain\">SPI);<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><p>\u5982\u679c\u60a8\u5df2\u7d93\u9047\u5230\u554f\u984c\uff0c\u8acb\u5617\u8a66\u8a2d\u5b9a SPI \u901a\u9053\u7684\u901f\u5ea6\uff0c\u56e0\u70ba\u6240\u6709\u7a0b\u5f0f\u5eab\u90fd\u5617\u8a66\u4f7f\u7528 CPU \u983b\u7387\u627e\u5230 SPI \u7684\u6700\u4f73\u6548\u80fd\uff0c\u4f46\u5728\u67d0\u4e9b\u60c5\u6cc1\u4e0b\u53ef\u80fd\u4e0d\u8d77\u4f5c\u7528\uff0c\u56e0\u6b64\u8acb\u4f7f\u7528\u6b64\u547d\u4ee4\u964d\u4f4e SPI \u6642\u8108\u3002<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_344408\" class=\"syntaxhighlighter syntaxhighlightersize arduino\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"arduino plain\">flash.setClock(<\/code><code class=\"arduino constants\">12000000<\/code><code class=\"arduino plain\">); <\/code><code class=\"arduino comments\">\/\/ uncomment here for Arduino SAMD boards<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><h2 class=\"wp-block-heading fittexted_for_content_h2\"><span id=\"Commands\" class=\"ez-toc-section\"><\/span>\u547d\u4ee4<\/h2><p>\u9019\u4e9b\u547d\u4ee4\u975e\u5e38\u7c21\u55ae\uff0c\u53ef\u4ee5\u7528\u4f86\u7ba1\u7406\u5f88\u591a\u60c5\u6cc1\u3002\u7576\u7136\uff0cRAM \u4f7f\u7528\u7387\u975e\u5e38\u4f4e\uff0c\u5982\u679c\u60a8\u6ce8\u610f\u7684\u8a71\uff0c\u53ef\u4ee5\u5728 Arduino UNO \u7b49\u8a18\u61b6\u9ad4\u975e\u5e38\u4f4e\u7684\u88dd\u7f6e\u4e0a\u8f15\u9b06\u7ba1\u7406\u5b83\u3002<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_60295\" class=\"syntaxhighlighter syntaxhighlightersize arduino\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><div class=\"line number2 index1 alt1\">2<\/div><div class=\"line number3 index2 alt2\">3<\/div><div class=\"line number4 index3 alt1\">4<\/div><div class=\"line number5 index4 alt2\">5<\/div><div class=\"line number6 index5 alt1\">6<\/div><div class=\"line number7 index6 alt2\">7<\/div><div class=\"line number8 index7 alt1\">8<\/div><div class=\"line number9 index8 alt2\">9<\/div><div class=\"line number10 index9 alt1\">10<\/div><div class=\"line number11 index10 alt2\">11<\/div><div class=\"line number12 index11 alt1\">12<\/div><div class=\"line number13 index12 alt2\">13<\/div><div class=\"line number14 index13 alt1\">14<\/div><div class=\"line number15 index14 alt2\">15<\/div><div class=\"line number16 index15 alt1\">16<\/div><div class=\"line number17 index16 alt2\">17 \u865f<\/div><div class=\"line number18 index17 alt1\">18<\/div><div class=\"line number19 index18 alt2\">19<\/div><div class=\"line number20 index19 alt1\">20<\/div><div class=\"line number21 index20 alt2\">21<\/div><div class=\"line number22 index21 alt1\">22<\/div><div class=\"line number23 index22 alt2\">23<\/div><div class=\"line number24 index23 alt1\">24<\/div><div class=\"line number25 index24 alt2\">25<\/div><div class=\"line number26 index25 alt1\">26<\/div><div class=\"line number27 index26 alt2\">27<\/div><div class=\"line number28 index27 alt1\">28<\/div><div class=\"line number29 index28 alt2\">29<\/div><div class=\"line number30 index29 alt1\">30<\/div><div class=\"line number31 index30 alt2\">31<\/div><div class=\"line number32 index31 alt1\">32<\/div><div class=\"line number33 index32 alt2\">33<\/div><div class=\"line number34 index33 alt1\">34<\/div><div class=\"line number35 index34 alt2\">35<\/div><div class=\"line number36 index35 alt1\">36<\/div><div class=\"line number37 index36 alt2\">37<\/div><div class=\"line number38 index37 alt1\">38<\/div><div class=\"line number39 index38 alt2\">39<\/div><div class=\"line number40 index39 alt1\">40<\/div><div class=\"line number41 index40 alt2\">41<\/div><div class=\"line number42 index41 alt1\">42<\/div><div class=\"line number43 index42 alt2\">43<\/div><div class=\"line number44 index43 alt1\">44<\/div><div class=\"line number45 index44 alt2\">45<\/div><div class=\"line number46 index45 alt1\">46<\/div><div class=\"line number47 index46 alt2\">47<\/div><div class=\"line number48 index47 alt1\">48<\/div><div class=\"line number49 index48 alt2\">49<\/div><div class=\"line number50 index49 alt1\">50<\/div><div class=\"line number51 index50 alt2\">51<\/div><div class=\"line number52 index51 alt1\">52<\/div><div class=\"line number53 index52 alt2\">53<\/div><div class=\"line number54 index53 alt1\">54<\/div><div class=\"line number55 index54 alt2\">55<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 sfdpPresent(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"arduino plain\">uint8_t\u00a0 error(bool verbosity <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number3 index2 alt2\"><code class=\"arduino plain\">uint16_t getManID(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"arduino plain\">uint32_t getJEDECID(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"arduino plain\">uint64_t getUniqueID(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"arduino plain\">uint32_t getAddress(uint16_t size);<\/code><\/div><div class=\"line number7 index6 alt2\"><code class=\"arduino plain\">uint16_t sizeofStr(String <\/code><code class=\"arduino plain bold\">&amp;<\/code><code class=\"arduino plain\">inputStr);<\/code><\/div><div class=\"line number8 index7 alt1\"><code class=\"arduino plain\">uint32_t getCapacity(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number9 index8 alt2\"><code class=\"arduino plain\">uint32_t getMaxPage(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number10 index9 alt1\"><code class=\"arduino color1 bold\">float<\/code>\u00a0\u00a0\u00a0 <code class=\"arduino plain\">functionRunTime(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number11 index10 alt2\"><code class=\"arduino comments\">\/\/-------------------------------- Write \/ Read Bytes ---------------------------------\/\/<\/code><\/div><div class=\"line number12 index11 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 writeByte(uint32_t _addr, uint8_t data, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number13 index12 alt2\"><code class=\"arduino plain\">uint8_t\u00a0 readByte(uint32_t _addr, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number14 index13 alt1\"><code class=\"arduino comments\">\/\/----------------------------- Write \/ Read Byte Arrays ------------------------------\/\/<\/code><\/div><div class=\"line number15 index14 alt2\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 writeByteArray(uint32_t _addr, uint8_t <\/code><code class=\"arduino plain bold\">*<\/code><code class=\"arduino plain\">data_buffer, size_t bufferSize, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number16 index15 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 readByteArray(uint32_t _addr, uint8_t <\/code><code class=\"arduino plain bold\">*<\/code><code class=\"arduino plain\">data_buffer, size_t bufferSize, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number17 index16 alt2\"><code class=\"arduino comments\">\/\/-------------------------------- Write \/ Read Chars ---------------------------------\/\/<\/code><\/div><div class=\"line number18 index17 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 writeChar(uint32_t _addr, int8_t data, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number19 index18 alt2\"><code class=\"arduino plain\">int8_t\u00a0\u00a0 readChar(uint32_t _addr, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number20 index19 alt1\"><code class=\"arduino comments\">\/\/------------------------------ Write \/ Read Char Arrays -----------------------------\/\/<\/code><\/div><div class=\"line number21 index20 alt2\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 writeCharArray(uint32_t _addr, <\/code><code class=\"arduino color1 bold\">char<\/code> <code class=\"arduino plain bold\">*<\/code><code class=\"arduino plain\">data_buffer, size_t bufferSize, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number22 index21 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 readCharArray(uint32_t _addr, <\/code><code class=\"arduino color1 bold\">char<\/code> <code class=\"arduino plain bold\">*<\/code><code class=\"arduino plain\">data_buffer, size_t buffer_size, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number23 index22 alt2\"><code class=\"arduino comments\">\/\/-------------------------------- Write \/ Read Shorts --------------------------------\/\/<\/code><\/div><div class=\"line number24 index23 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 writeShort(uint32_t _addr, int16_t data, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number25 index24 alt2\"><code class=\"arduino plain\">int16_t\u00a0 readShort(uint32_t _addr, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number26 index25 alt1\"><code class=\"arduino comments\">\/\/-------------------------------- Write \/ Read Words ---------------------------------\/\/<\/code><\/div><div class=\"line number27 index26 alt2\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 writeWord(uint32_t _addr, uint16_t data, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number28 index27 alt1\"><code class=\"arduino plain\">uint16_t readWord(uint32_t _addr, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number29 index28 alt2\"><code class=\"arduino comments\">\/\/-------------------------------- Write \/ Read Longs ---------------------------------\/\/<\/code><\/div><div class=\"line number30 index29 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 writeLong(uint32_t _addr, int32_t data, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number31 index30 alt2\"><code class=\"arduino plain\">int32_t\u00a0 readLong(uint32_t _addr, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number32 index31 alt1\"><code class=\"arduino comments\">\/\/--------------------------- Write \/ Read Unsigned Longs -----------------------------\/\/<\/code><\/div><div class=\"line number33 index32 alt2\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 writeULong(uint32_t _addr, uint32_t data, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number34 index33 alt1\"><code class=\"arduino plain\">uint32_t readULong(uint32_t _addr, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number35 index34 alt2\"><code class=\"arduino comments\">\/\/-------------------------------- Write \/ Read Floats --------------------------------\/\/<\/code><\/div><div class=\"line number36 index35 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 writeFloat(uint32_t _addr, <\/code><code class=\"arduino color1 bold\">float<\/code> <code class=\"arduino plain\">data, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number37 index36 alt2\"><code class=\"arduino color1 bold\">float<\/code>\u00a0\u00a0\u00a0 <code class=\"arduino plain\">readFloat(uint32_t _addr, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number38 index37 alt1\"><code class=\"arduino comments\">\/\/-------------------------------- Write \/ Read Strings -------------------------------\/\/<\/code><\/div><div class=\"line number39 index38 alt2\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 writeStr(uint32_t _addr, String <\/code><code class=\"arduino plain bold\">&amp;<\/code><code class=\"arduino plain\">data, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number40 index39 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 readStr(uint32_t _addr, String <\/code><code class=\"arduino plain bold\">&amp;<\/code><code class=\"arduino plain\">data, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number41 index40 alt2\"><code class=\"arduino comments\">\/\/------------------------------- Write \/ Read Anything -------------------------------\/\/<\/code><\/div><div class=\"line number42 index41 alt1\">\u00a0<\/div><div class=\"line number43 index42 alt2\"><code class=\"arduino plain\">template &lt;class T&gt; bool writeAnything(uint32_t _addr, <\/code><code class=\"arduino color1 bold\">const<\/code> <code class=\"arduino plain\">T<\/code><code class=\"arduino plain bold\">&amp;<\/code> <code class=\"arduino plain\">data, bool errorCheck <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number44 index43 alt1\"><code class=\"arduino plain\">template &lt;class T&gt; bool readAnything(uint32_t _addr, T<\/code><code class=\"arduino plain bold\">&amp;<\/code> <code class=\"arduino plain\">data, bool fastRead <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number45 index44 alt2\"><code class=\"arduino comments\">\/\/-------------------------------- Erase functions ------------------------------------\/\/<\/code><\/div><div class=\"line number46 index45 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 eraseSection(uint32_t _addr, uint32_t _sz);<\/code><\/div><div class=\"line number47 index46 alt2\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 eraseSector(uint32_t _addr);<\/code><\/div><div class=\"line number48 index47 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 eraseBlock32K(uint32_t _addr);<\/code><\/div><div class=\"line number49 index48 alt2\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 eraseBlock64K(uint32_t _addr);<\/code><\/div><div class=\"line number50 index49 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 eraseChip(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number51 index50 alt2\"><code class=\"arduino comments\">\/\/-------------------------------- Power functions ------------------------------------\/\/<\/code><\/div><div class=\"line number52 index51 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 suspendProg(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number53 index52 alt2\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 resumeProg(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number54 index53 alt1\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 powerDown(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number55 index54 alt2\"><code class=\"arduino plain\">bool\u00a0\u00a0\u00a0\u00a0 powerUp(<\/code><code class=\"arduino color1 bold\">void<\/code><code class=\"arduino plain\">);<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><p>\u60a8\u5fc5\u9808\u6ce8\u610f\u9019\u4e9b\u547d\u4ee4\uff1a<\/p><p><strong><code>uint32_t getCapacity(void)<\/code><\/strong>\uff1a\u53d6\u5f97\u6676\u7247\u7684\u5bb9\u91cf\uff0c\u9019\u500b\u5eab\u63d0\u4f9b\u4e86\u5c0d\u5f88\u591aIC\u7684\u652f\u6301\uff0c\u53ef\u80fd\u7576\u4f60\u5617\u8a66\u5b83\u6642\uff0c\u70ba\u4f60\u627e\u5230\u6240\u6709\u898f\u683c\uff0c\u5982\u679c\u6c92\u6709\uff0c\u4f60\u53ef\u4ee5\u5c07\u8a2d\u5099\u7684\u5927\u5c0f\u50b3\u905e\u7d66\u547d\u4ee4<code>begin(capacity)<\/code>\u3002<\/p><p><strong><code>uint32_t getAddress(uint16_t size)<\/code><\/strong>\uff1a\u4f7f\u7528\u6b64\u547d\u4ee4\u53ef\u4ee5\u7372\u5f97\u4e00\u500b\u53ef\u4ee5\u5132\u5b58<code>uint16_t size<\/code>\u8cc7\u6599\u7684\u7a7a\u9592\u4f4d\u5740\u3002<\/p><p><strong><code>write commands:<\/code><\/strong>\u5c0d\u65bc\u5404\u7a2e\u985e\u578b\u7684\u8cc7\u6599\u6709\u5f88\u591a\u547d\u4ee4\uff0c\u975e\u5e38\u76f4\u89c0\uff0c\u7e3d\u800c\u8a00\u4e4b\uff0c\u60a8\u5fc5\u9808\u6307\u5b9a\u4e00\u500b\u8d77\u59cb\u4f4d\u5740\uff0c\u8a72\u8d77\u59cb\u4f4d\u5740\u5c07\u7528\u4f5c\u5beb\u5165\u8cc7\u6599\u7684\u8d77\u59cb\u9ede\u3002<\/p><p><strong><code>read command<\/code>\uff1a<\/strong>\u8207\u5beb\u5165\u547d\u4ee4\u4e00\u6a23\uff0c\u9084\u6709\u8b80\u53d6\u547d\u4ee4\u53ef\u7528\u65bc\u91cd\u65b0\u8b80\u53d6\u9023\u7e8c\u8cc7\u6599\u3002<\/p><p><strong><code>template bool writeAnything(uint32_t _addr, const T&amp; data, bool errorCheck = true)<\/code><\/strong>\uff1a\u66f4\u6709\u8da3\u7684\u662f<code>writeAnithing\u00a0<\/code>\u7528\u65bc\u5132\u5b58\u8907\u96dc\u7d50\u69cb\u7684\u547d\u4ee4\uff0c\u8a18\u4f4f\uff0c\u8a72\u7d50\u69cb\u5fc5\u9808\u4f7f\u7528\u975c\u614b\u5927\u5c0f\u503c\u5275\u5efa\uff0c<em>\u4e0d\u80fd\u4f7f\u7528 String \u6216\u985e\u4f3c\u7684\u8cc7\u6599<\/em>\u3002<\/p><p><code><strong>template bool readAnything(uint32_t _addr, T&amp; data, bool fastRead = false)<\/strong><\/code>\uff1a\u7576\u4f60\u5beb\u4e00\u500b\u7d50\u69cb\u9ad4\u6642\uff0c\u4f60\u5fc5\u9808\u91cd\u65b0\u8b80\u53d6It\uff0c\u800c\u9019\u500b\u547d\u4ee4\u505a\u4e86It\uff0c\u5c0d\u65bc\u6240\u6709\u7684\u8b80\u53d6\u547d\u4ee4\uff0c\u4f60\u53ef\u4ee5\u8a2d\u5b9a<code>fastRead\u00a0<\/code>\u70ba<code>true<\/code>\uff0c\u4f46\u4e0d\u662f\u6240\u6709\u7684SPI Flash\u90fd\u652f\u63f4It\uff0c\u67e5\u770bdatasheet\u3002<\/p><p><code><strong>erase commands:<\/strong><\/code>\u4f60\u53ef\u4ee5\u64e6\u9664\u6676\u7247\u7684\u5404\u7a2e\u5c3a\u5bf8\u548c\u90e8\u5206\uff0c\u4f60\u53ef\u4ee5\u770b\u5230\u547d\u4ee4\u5217\u8868\u3002<\/p><p><strong><code>bool eraseChip(void)<\/code><\/strong>\uff1a\u9084\u6709\u4e00\u500b\u7279\u6b8a\u7684\u64e6\u9664\u6307\u4ee4\uff0c\u53ef\u4ee5\u5c07\u6240\u6709\u6676\u7247\u683c\u5f0f\u5316\u70ba\u521d\u59cb\u72c0\u614b\u3002<\/p><p><code><strong>bool suspendProg(void), bool resumeProg(void)<\/strong><\/code>\uff1a\u60a8\u53ef\u4ee5\u66ab\u505c<strong>\u64e6\u9664\u547d\u4ee4\uff0c<\/strong>\u4e26\u7acb\u5373\u958b\u59cb\u8b80\u53d6\u3002<\/p><p><code><strong>bool powerDown(void), bool powerUp(void)<\/strong><\/code>\uff1a\u5c07\u8a2d\u5099\u7f6e\u65bc\u4f4e\u529f\u8017\u72c0\u614b\u3002\u4f7f\u7528\u96fb\u6c60\u4f9b\u96fb\u6642\u6548\u679c\u5f88\u597d\u3002\u5728<code>powerDown()<\/code>\u6676\u7247\u4e2d\u53ea\u6703\u505a\u51fa\u53cd\u61c9<code>powerUp()<\/code>\u3002<\/p><div class=\"ai-viewport-1\" data-insertion-position=\"prepend\" data-selector=\".ai-insert-9-17175970\" data-insertion-no-dbg=\"\" data-code=\"PGRpdiBjbGFzcz0nY29kZS1ibG9jayBjb2RlLWJsb2NrLTknIHN0eWxlPSdtYXJnaW46IDhweCBhdXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGRpc3BsYXk6IGJsb2NrOyBjbGVhcjogYm90aDsnPgo8YSBocmVmPSJodHRwczovL3d3dy5wY2J3YXkuY29tLz9mcm9tPW1pc2NoaWFudGk3MjMiIHRhcmdldD0iX2JsYW5rIj48aW1nIHdpZHRoPSIzMTUiIGhlaWdodD0iMjIwIiBzcmM9Imh0dHBzOi8vbWlzY2hpYW50aS5vcmcvd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDUvcGNiV2F5LWJhbm5lci1tb2JpbGUtMzAweDIwMC0xLmdpZiIgcm9sZT0iYmFubmVyIiBhcmlhLWxhYmVsPSJBZHZlcnRpc2VtZW50IiAgYWx0PSJBZHZlcnRpc2VtZW50Ii8+PC9hPjwvZGl2Pgo=\" data-block=\"9\">\u00a0<\/div><h2 class=\"wp-block-heading fittexted_for_content_h2\"><span id=\"Examples\" class=\"ez-toc-section\"><\/span>\u4f8b\u5b50<\/h2><div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11600 tc-smart-loaded\" src=\"https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-external-SPI-Flash-memory-on-breadboard-1024x512.jpg\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-external-SPI-Flash-memory-on-breadboard-1024x512.jpg 1024w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-external-SPI-Flash-memory-on-breadboard-300x150.jpg 300w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-external-SPI-Flash-memory-on-breadboard-768x384.jpg 768w, https:\/\/mischianti.org\/wp-content\/uploads\/2021\/04\/Arduino-UNO-external-SPI-Flash-memory-on-breadboard.jpg 1280w\" alt=\"\u9eb5\u5305\u677f\u4e0a\u7684 Arduino UNO \u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4\" width=\"1024\" height=\"512\" \/><figcaption class=\"wp-element-caption\">\u9eb5\u5305\u677f\u4e0a\u7684 Arduino UNO \u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4<\/figcaption><\/figure><\/div><p>\u8a72\u5eab\u5728\u9019\u88e1\u63d0\u4f9b\u4e86\u5927\u91cf\u7bc4\u4f8b\uff0c\u6211\u5c07\u5411\u60a8\u5c55\u793a\u57fa\u672c\u7528\u6cd5\u3002<\/p><p>\u9019\u662f\u4e00\u500b\u7c21\u55ae\u7684\u7bc4\u4f8b\uff0c\u5c07\u7b2c\u4e00\u500b\u5b57\u4e32\u5132\u5b58\u5728\u521d\u59cb\u4f4d\u5740 0 \u4e2d\uff0c\u7136\u5f8c\u6211\u91cd\u65b0\u8b80\u53d6\u5b83\uff0c\u800c\u4e0d\u662f\u8a62\u554f\u8a72\u65b9\u6cd5<code>getAddress\u00a0<\/code>\u662f\u5426\u53ef\u4ee5\u5132\u5b58\u53e6\u4e00\u500b\u5b57\u4e32\u7684\u7b2c\u4e00\u500b\u53ef\u7528\u9023\u7e8c\u4f4d\u7f6e\uff0c\u7136\u5f8c\u4fdd\u5b58\u5b83\u4e26\u91cd\u65b0\u8b80\u53d6\u3002<\/p><p>\u5c0d\u65bc<strong>Arduino MKR\uff0c<\/strong>\u60a8\u5fc5\u9808\u50cf\u9019\u6a23\u8a2d\u5b9a\u5efa\u69cb\u51fd\u6578\uff1a<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_293679\" class=\"syntaxhighlighter nogutter syntaxhighlightersize arduino\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"arduino plain\">SPIFlash flash(SS, <\/code><code class=\"arduino plain bold\">&amp;<\/code><code class=\"arduino plain\">SPI);<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><h3 class=\"wp-block-heading fittexted_for_content_h3\"><span id=\"Get_SPI_Flash_information\" class=\"ez-toc-section\"><\/span>\u53d6\u5f97SPI Flash\u4fe1\u606f<\/h3><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_964777\" class=\"syntaxhighlighter syntaxhighlightersize arduino\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><div class=\"line number2 index1 alt1\">2<\/div><div class=\"line number3 index2 alt2\">3<\/div><div class=\"line number4 index3 alt1\">4<\/div><div class=\"line number5 index4 alt2\">5<\/div><div class=\"line number6 index5 alt1\">6<\/div><div class=\"line number7 index6 alt2\">7<\/div><div class=\"line number8 index7 alt1\">8<\/div><div class=\"line number9 index8 alt2\">9<\/div><div class=\"line number10 index9 alt1\">10<\/div><div class=\"line number11 index10 alt2\">11<\/div><div class=\"line number12 index11 alt1\">12<\/div><div class=\"line number13 index12 alt2\">13<\/div><div class=\"line number14 index13 alt1\">14<\/div><div class=\"line number15 index14 alt2\">15<\/div><div class=\"line number16 index15 alt1\">16<\/div><div class=\"line number17 index16 alt2\">17 \u865f<\/div><div class=\"line number18 index17 alt1\">18<\/div><div class=\"line number19 index18 alt2\">19<\/div><div class=\"line number20 index19 alt1\">20<\/div><div class=\"line number21 index20 alt2\">21<\/div><div class=\"line number22 index21 alt1\">22<\/div><div class=\"line number23 index22 alt2\">23<\/div><div class=\"line number24 index23 alt1\">24<\/div><div class=\"line number25 index24 alt2\">25<\/div><div class=\"line number26 index25 alt1\">26<\/div><div class=\"line number27 index26 alt2\">27<\/div><div class=\"line number28 index27 alt1\">28<\/div><div class=\"line number29 index28 alt2\">29<\/div><div class=\"line number30 index29 alt1\">30<\/div><div class=\"line number31 index30 alt2\">31<\/div><div class=\"line number32 index31 alt1\">32<\/div><div class=\"line number33 index32 alt2\">33<\/div><div class=\"line number34 index33 alt1\">34<\/div><div class=\"line number35 index34 alt2\">35<\/div><div class=\"line number36 index35 alt1\">36<\/div><div class=\"line number37 index36 alt2\">37<\/div><div class=\"line number38 index37 alt1\">38<\/div><div class=\"line number39 index38 alt2\">39<\/div><div class=\"line number40 index39 alt1\">40<\/div><div class=\"line number41 index40 alt2\">41<\/div><div class=\"line number42 index41 alt1 highlighted\">42<\/div><div class=\"line number43 index42 alt2\">43<\/div><div class=\"line number44 index43 alt1\">44<\/div><div class=\"line number45 index44 alt2\">45<\/div><div class=\"line number46 index45 alt1\">46<\/div><div class=\"line number47 index46 alt2\">47<\/div><div class=\"line number48 index47 alt1 highlighted\">48<\/div><div class=\"line number49 index48 alt2\">49<\/div><div class=\"line number50 index49 alt1\">50<\/div><div class=\"line number51 index50 alt2\">51<\/div><div class=\"line number52 index51 alt1\">52<\/div><div class=\"line number53 index52 alt2\">53<\/div><div class=\"line number54 index53 alt1\">54<\/div><div class=\"line number55 index54 alt2\">55<\/div><div class=\"line number56 index55 alt1\">56<\/div><div class=\"line number57 index56 alt2\">57<\/div><div class=\"line number58 index57 alt1 highlighted\">58<\/div><div class=\"line number59 index58 alt2\">59<\/div><div class=\"line number60 index59 alt1\">60<\/div><div class=\"line number61 index60 alt2\">61<\/div><div class=\"line number62 index61 alt1 highlighted\">62<\/div><div class=\"line number63 index62 alt2\">63<\/div><div class=\"line number64 index63 alt1\">64<\/div><div class=\"line number65 index64 alt2\">65<\/div><div class=\"line number66 index65 alt1\">66<\/div><div class=\"line number67 index66 alt2\">67<\/div><div class=\"line number68 index67 alt1 highlighted\">68<\/div><div class=\"line number69 index68 alt2\">69<\/div><div class=\"line number70 index69 alt1\">70<\/div><div class=\"line number71 index70 alt2\">71<\/div><div class=\"line number72 index71 alt1\">72<\/div><div class=\"line number73 index72 alt2\">73<\/div><div class=\"line number74 index73 alt1\">74<\/div><div class=\"line number75 index74 alt2\">75<\/div><div class=\"line number76 index75 alt1\">76<\/div><div class=\"line number77 index76 alt2\">77<\/div><div class=\"line number78 index77 alt1\">78<\/div><div class=\"line number79 index78 alt2\">79<\/div><div class=\"line number80 index79 alt1\">80<\/div><div class=\"line number81 index80 alt2\">81<\/div><div class=\"line number82 index81 alt1\">82<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"arduino comments\">\/*<\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 Manage external SPI Flash with Arduino<\/code><\/div><div class=\"line number3 index2 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 Write and read a string,<\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 find first address available<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 and write and read another string<\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number7 index6 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 with library SPIMemory<\/code><\/div><div class=\"line number8 index7 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number9 index8 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 by Mischianti Renzo &lt;<a href=\"https:\/\/mischianti.org\/\">https:\/\/mischianti.org<\/a>&gt;<\/code><\/div><div class=\"line number10 index9 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number11 index10 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 <a href=\"https:\/\/mischianti.org\/\">https:\/\/mischianti.org\/<\/a><\/code><\/div><div class=\"line number12 index11 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number13 index12 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 SPIFlash connected via SPI standard<\/code><\/div><div class=\"line number14 index13 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number15 index14 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\/<\/code><\/div><div class=\"line number16 index15 alt1\">\u00a0<\/div><div class=\"line number17 index16 alt2\"><code class=\"arduino preprocessor\">#include<\/code><code class=\"arduino plain\">&lt;SPIMemory.h&gt;<\/code><\/div><div class=\"line number18 index17 alt1\">\u00a0<\/div><div class=\"line number19 index18 alt2\"><code class=\"arduino comments\">\/\/SPIFlash flash; \/\/ If you don't specify the library use standard SPI connection<\/code><\/div><div class=\"line number20 index19 alt1\"><code class=\"arduino plain\">SPIFlash flash;<\/code><\/div><div class=\"line number21 index20 alt2\"><code class=\"arduino color1 bold\">void<\/code> <code class=\"arduino keyword bold\">setup<\/code><code class=\"arduino plain\">() {<\/code><\/div><div class=\"line number22 index21 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.begin<\/code><code class=\"arduino plain\">(<\/code><code class=\"arduino constants\">115200<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number23 index22 alt2\">\u00a0<\/div><div class=\"line number24 index23 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">while<\/code> <code class=\"arduino plain\">(<\/code><code class=\"arduino plain bold\">!<\/code><code class=\"arduino plain\">Serial) ; <\/code><code class=\"arduino comments\">\/\/ Wait for Serial monitor to open<\/code><\/div><div class=\"line number25 index24 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">delay<\/code><code class=\"arduino plain\">(<\/code><code class=\"arduino constants\">100<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number26 index25 alt1\">\u00a0<\/div><div class=\"line number27 index26 alt2\"><code class=\"arduino comments\">\/\/\u00a0 flash.setClock(12000000); \/\/ uncomment here for Arduino SAMD boards<\/code><\/div><div class=\"line number28 index27 alt1\">\u00a0<\/div><div class=\"line number29 index28 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">flash.begin(); <\/code><code class=\"arduino comments\">\/\/ If SPIMemory isn't recognized you can specify the size of memory<\/code><\/div><div class=\"line number30 index29 alt1\">\u00a0<\/div><div class=\"line number31 index30 alt2\"><code class=\"arduino comments\">\/\/\u00a0 flash.eraseChip();<\/code><\/div><div class=\"line number32 index31 alt1\">\u00a0<\/div><div class=\"line number33 index32 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Flash size: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number34 index33 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">((<\/code><code class=\"arduino color1 bold\">long<\/code><code class=\"arduino plain\">)(flash.getCapacity()<\/code><code class=\"arduino plain bold\">\/<\/code><code class=\"arduino constants\">1000<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number35 index34 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Kb\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number36 index35 alt1\">\u00a0<\/div><div class=\"line number37 index36 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">unsigned<\/code> <code class=\"arduino color1 bold\">long<\/code> <code class=\"arduino plain\">strAddr <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">0<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number38 index37 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">unsigned<\/code> <code class=\"arduino color1 bold\">long<\/code> <code class=\"arduino plain\">strAddrSecondString <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">0<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number39 index38 alt2\">\u00a0<\/div><div class=\"line number40 index39 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">();<\/code><\/div><div class=\"line number41 index40 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">String inputString <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino string\">\"I'm going to write this string on IC\"<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number42 index41 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">flash.writeStr(strAddr, inputString);<\/code><\/div><div class=\"line number43 index42 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Written string: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number44 index43 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(inputString);<\/code><\/div><div class=\"line number45 index44 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"To address: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number46 index45 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(strAddr);<\/code><\/div><div class=\"line number47 index46 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">String outputString <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino string\">\"\"<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number48 index47 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">if<\/code> <code class=\"arduino plain\">(flash.readStr(strAddr, outputString)) {<\/code><\/div><div class=\"line number49 index48 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Read string: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number50 index49 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(outputString);<\/code><\/div><div class=\"line number51 index50 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"From address: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number52 index51 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(strAddr);<\/code><\/div><div class=\"line number53 index52 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number54 index53 alt1\">\u00a0<\/div><div class=\"line number55 index54 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">();<\/code><\/div><div class=\"line number56 index55 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">String secondInputString <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino string\">\"I'm going to write this second string on IC\"<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number57 index56 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Check first free sector: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number58 index57 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">strAddrSecondString <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino plain\">flash.getAddress(secondInputString.length());<\/code><\/div><div class=\"line number59 index58 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(strAddrSecondString);<\/code><\/div><div class=\"line number60 index59 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">();<\/code><\/div><div class=\"line number61 index60 alt2\">\u00a0<\/div><div class=\"line number62 index61 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">flash.writeStr(strAddrSecondString, secondInputString);<\/code><\/div><div class=\"line number63 index62 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Written string: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number64 index63 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(secondInputString);<\/code><\/div><div class=\"line number65 index64 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"To address: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number66 index65 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(strAddrSecondString);<\/code><\/div><div class=\"line number67 index66 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">outputString <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino string\">\"\"<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number68 index67 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">if<\/code> <code class=\"arduino plain\">(flash.readStr(strAddrSecondString, outputString)) {<\/code><\/div><div class=\"line number69 index68 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Read string: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number70 index69 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(outputString);<\/code><\/div><div class=\"line number71 index70 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"From address: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number72 index71 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(strAddrSecondString);<\/code><\/div><div class=\"line number73 index72 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number74 index73 alt1\">\u00a0<\/div><div class=\"line number75 index74 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">while<\/code> <code class=\"arduino plain\">(<\/code><code class=\"arduino plain bold\">!<\/code><code class=\"arduino plain\">flash.eraseSector(strAddr));<\/code><\/div><div class=\"line number76 index75 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">while<\/code> <code class=\"arduino plain\">(<\/code><code class=\"arduino plain bold\">!<\/code><code class=\"arduino plain\">flash.eraseSector(strAddrSecondString));<\/code><\/div><div class=\"line number77 index76 alt2\">\u00a0<\/div><div class=\"line number78 index77 alt1\"><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number79 index78 alt2\">\u00a0<\/div><div class=\"line number80 index79 alt1\"><code class=\"arduino color1 bold\">void<\/code> <code class=\"arduino keyword bold\">loop<\/code><code class=\"arduino plain\">() {<\/code><\/div><div class=\"line number81 index80 alt2\">\u00a0<\/div><div class=\"line number82 index81 alt1\"><code class=\"arduino plain\">}<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><p>\u9019\u662f\u4e32\u884c\u7d50\u679c\uff1a<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_421306\" class=\"syntaxhighlighter syntaxhighlightersize plain\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><div class=\"line number2 index1 alt1\">2<\/div><div class=\"line number3 index2 alt2\">3<\/div><div class=\"line number4 index3 alt1\">4<\/div><div class=\"line number5 index4 alt2\">5<\/div><div class=\"line number6 index5 alt1\">6<\/div><div class=\"line number7 index6 alt2\">7<\/div><div class=\"line number8 index7 alt1\">8<\/div><div class=\"line number9 index8 alt2\">9<\/div><div class=\"line number10 index9 alt1\">10<\/div><div class=\"line number11 index10 alt2\">11<\/div><div class=\"line number12 index11 alt1\">12<\/div><div class=\"line number13 index12 alt2\">13<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain plain\">Flash size: 8388Kb<\/code><\/div><div class=\"line number2 index1 alt1\">\u00a0<\/div><div class=\"line number3 index2 alt2\"><code class=\"plain plain\">Written string: I'm going to write this string on IC<\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"plain plain\">To address: 0<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"plain plain\">Read string: I'm going to write this string on IC<\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"plain plain\">From address: 0<\/code><\/div><div class=\"line number7 index6 alt2\">\u00a0<\/div><div class=\"line number8 index7 alt1\"><code class=\"plain plain\">Check first free sector: 43<\/code><\/div><div class=\"line number9 index8 alt2\">\u00a0<\/div><div class=\"line number10 index9 alt1\"><code class=\"plain plain\">Written string: I'm going to write this second string on IC<\/code><\/div><div class=\"line number11 index10 alt2\"><code class=\"plain plain\">To address: 43<\/code><\/div><div class=\"line number12 index11 alt1\"><code class=\"plain plain\">Read string: I'm going to write this second string on IC<\/code><\/div><div class=\"line number13 index12 alt2\"><code class=\"plain plain\">From address: 43<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><h3 class=\"wp-block-heading fittexted_for_content_h3\"><span id=\"Save_and_read_a_JSON_structure\" class=\"ez-toc-section\"><\/span>\u4fdd\u5b58\u548c\u8b80\u53d6 JSON \u7d50\u69cb<\/h3><p>\u9019\u662f\u4e00\u500b\u66f4\u5be6\u969b\u7684\u4f8b\u5b50\uff0c\u6211\u5011\u4e0d\u6703\u50cf\u5b57\u4e32\u4e00\u6a23\u4fdd\u5b58\u6587\u672c\uff0c\u800c\u662f\u50cf\u5b57\u4e32\u4e00\u6a23\u4fdd\u5b58 JSON \u7d50\u69cb\u3002<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_49340\" class=\"syntaxhighlighter syntaxhighlightersize arduino\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><div class=\"line number2 index1 alt1\">2<\/div><div class=\"line number3 index2 alt2\">3<\/div><div class=\"line number4 index3 alt1\">4<\/div><div class=\"line number5 index4 alt2\">5<\/div><div class=\"line number6 index5 alt1\">6<\/div><div class=\"line number7 index6 alt2\">7<\/div><div class=\"line number8 index7 alt1\">8<\/div><div class=\"line number9 index8 alt2\">9<\/div><div class=\"line number10 index9 alt1\">10<\/div><div class=\"line number11 index10 alt2\">11<\/div><div class=\"line number12 index11 alt1\">12<\/div><div class=\"line number13 index12 alt2\">13<\/div><div class=\"line number14 index13 alt1\">14<\/div><div class=\"line number15 index14 alt2\">15<\/div><div class=\"line number16 index15 alt1\">16<\/div><div class=\"line number17 index16 alt2\">17 \u865f<\/div><div class=\"line number18 index17 alt1\">18<\/div><div class=\"line number19 index18 alt2\">19<\/div><div class=\"line number20 index19 alt1\">20<\/div><div class=\"line number21 index20 alt2\">21<\/div><div class=\"line number22 index21 alt1\">22<\/div><div class=\"line number23 index22 alt2\">23<\/div><div class=\"line number24 index23 alt1\">24<\/div><div class=\"line number25 index24 alt2\">25<\/div><div class=\"line number26 index25 alt1\">26<\/div><div class=\"line number27 index26 alt2\">27<\/div><div class=\"line number28 index27 alt1\">28<\/div><div class=\"line number29 index28 alt2\">29<\/div><div class=\"line number30 index29 alt1\">30<\/div><div class=\"line number31 index30 alt2\">31<\/div><div class=\"line number32 index31 alt1\">32<\/div><div class=\"line number33 index32 alt2\">33<\/div><div class=\"line number34 index33 alt1\">34<\/div><div class=\"line number35 index34 alt2\">35<\/div><div class=\"line number36 index35 alt1\">36<\/div><div class=\"line number37 index36 alt2\">37<\/div><div class=\"line number38 index37 alt1\">38<\/div><div class=\"line number39 index38 alt2\">39<\/div><div class=\"line number40 index39 alt1\">40<\/div><div class=\"line number41 index40 alt2\">41<\/div><div class=\"line number42 index41 alt1\">42<\/div><div class=\"line number43 index42 alt2\">43<\/div><div class=\"line number44 index43 alt1\">44<\/div><div class=\"line number45 index44 alt2\">45<\/div><div class=\"line number46 index45 alt1\">46<\/div><div class=\"line number47 index46 alt2\">47<\/div><div class=\"line number48 index47 alt1 highlighted\">48<\/div><div class=\"line number49 index48 alt2 highlighted\">49<\/div><div class=\"line number50 index49 alt1 highlighted\">50<\/div><div class=\"line number51 index50 alt2 highlighted\">51<\/div><div class=\"line number52 index51 alt1 highlighted\">52<\/div><div class=\"line number53 index52 alt2 highlighted\">53<\/div><div class=\"line number54 index53 alt1\">54<\/div><div class=\"line number55 index54 alt2\">55<\/div><div class=\"line number56 index55 alt1\">56<\/div><div class=\"line number57 index56 alt2\">57<\/div><div class=\"line number58 index57 alt1 highlighted\">58<\/div><div class=\"line number59 index58 alt2\">59<\/div><div class=\"line number60 index59 alt1\">60<\/div><div class=\"line number61 index60 alt2\">61<\/div><div class=\"line number62 index61 alt1 highlighted\">62<\/div><div class=\"line number63 index62 alt2\">63<\/div><div class=\"line number64 index63 alt1\">64<\/div><div class=\"line number65 index64 alt2\">65<\/div><div class=\"line number66 index65 alt1\">66<\/div><div class=\"line number67 index66 alt2\">67<\/div><div class=\"line number68 index67 alt1\">68<\/div><div class=\"line number69 index68 alt2\">69<\/div><div class=\"line number70 index69 alt1 highlighted\">70<\/div><div class=\"line number71 index70 alt2\">71<\/div><div class=\"line number72 index71 alt1\">72<\/div><div class=\"line number73 index72 alt2\">73<\/div><div class=\"line number74 index73 alt1\">74<\/div><div class=\"line number75 index74 alt2\">75<\/div><div class=\"line number76 index75 alt1\">76<\/div><div class=\"line number77 index76 alt2\">77<\/div><div class=\"line number78 index77 alt1\">78<\/div><div class=\"line number79 index78 alt2\">79<\/div><div class=\"line number80 index79 alt1\">80<\/div><div class=\"line number81 index80 alt2\">81<\/div><div class=\"line number82 index81 alt1\">82<\/div><div class=\"line number83 index82 alt2\">83<\/div><div class=\"line number84 index83 alt1\">84<\/div><div class=\"line number85 index84 alt2\">85<\/div><div class=\"line number86 index85 alt1\">86<\/div><div class=\"line number87 index86 alt2\">87<\/div><div class=\"line number88 index87 alt1 highlighted\">88<\/div><div class=\"line number89 index88 alt2\">89<\/div><div class=\"line number90 index89 alt1\">90<\/div><div class=\"line number91 index90 alt2\">91<\/div><div class=\"line number92 index91 alt1\">92<\/div><div class=\"line number93 index92 alt2\">93<\/div><div class=\"line number94 index93 alt1\">94<\/div><div class=\"line number95 index94 alt2\">95<\/div><div class=\"line number96 index95 alt1\">96<\/div><div class=\"line number97 index96 alt2 highlighted\">97<\/div><div class=\"line number98 index97 alt1\">98<\/div><div class=\"line number99 index98 alt2\">99<\/div><div class=\"line number100 index99 alt1\">100<\/div><div class=\"line number101 index100 alt2\">101<\/div><div class=\"line number102 index101 alt1\">102<\/div><div class=\"line number103 index102 alt2\">103<\/div><div class=\"line number104 index103 alt1\">104<\/div><div class=\"line number105 index104 alt2\">105<\/div><div class=\"line number106 index105 alt1\">106<\/div><div class=\"line number107 index106 alt2\">107<\/div><div class=\"line number108 index107 alt1\">108<\/div><div class=\"line number109 index108 alt2\">109<\/div><div class=\"line number110 index109 alt1 highlighted\">110<\/div><div class=\"line number111 index110 alt2\">111<\/div><div class=\"line number112 index111 alt1\">112<\/div><div class=\"line number113 index112 alt2\">113<\/div><div class=\"line number114 index113 alt1\">114<\/div><div class=\"line number115 index114 alt2\">115<\/div><div class=\"line number116 index115 alt1\">116<\/div><div class=\"line number117 index116 alt2\">117<\/div><div class=\"line number118 index117 alt1\">118<\/div><div class=\"line number119 index118 alt2\">119<\/div><div class=\"line number120 index119 alt1\">120<\/div><div class=\"line number121 index120 alt2\">121<\/div><div class=\"line number122 index121 alt1\">122<\/div><div class=\"line number123 index122 alt2\">123<\/div><div class=\"line number124 index123 alt1\">124<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"arduino comments\">\/*<\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 Manage external SPI Flash with Arduino<\/code><\/div><div class=\"line number3 index2 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 Write and read a JSON structure like a String,<\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 find first address available<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 and write and read another JSON structure<\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number7 index6 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 with library SPIMemory<\/code><\/div><div class=\"line number8 index7 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number9 index8 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 by Mischianti Renzo &lt;<a href=\"https:\/\/mischianti.org\/\">https:\/\/mischianti.org<\/a>&gt;<\/code><\/div><div class=\"line number10 index9 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number11 index10 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 <a href=\"https:\/\/mischianti.org\/\">https:\/\/mischianti.org\/<\/a><\/code><\/div><div class=\"line number12 index11 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number13 index12 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 SPIFlash connected via SPI standard<\/code><\/div><div class=\"line number14 index13 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number15 index14 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\/<\/code><\/div><div class=\"line number16 index15 alt1\">\u00a0<\/div><div class=\"line number17 index16 alt2\"><code class=\"arduino preprocessor\">#include<\/code> <code class=\"arduino plain\">&lt;SPIMemory.h&gt;<\/code><\/div><div class=\"line number18 index17 alt1\"><code class=\"arduino preprocessor\">#include<\/code> <code class=\"arduino plain\">&lt;ArduinoJson.h&gt;<\/code><\/div><div class=\"line number19 index18 alt2\">\u00a0<\/div><div class=\"line number20 index19 alt1\"><code class=\"arduino comments\">\/\/SPIFlash flash; \/\/ If you don't specify the library use standard SPI connection<\/code><\/div><div class=\"line number21 index20 alt2\"><code class=\"arduino plain\">SPIFlash flash;<\/code><\/div><div class=\"line number22 index21 alt1\"><code class=\"arduino color1 bold\">void<\/code> <code class=\"arduino keyword bold\">setup<\/code><code class=\"arduino plain\">() {<\/code><\/div><div class=\"line number23 index22 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.begin<\/code><code class=\"arduino plain\">(<\/code><code class=\"arduino constants\">115200<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number24 index23 alt1\">\u00a0<\/div><div class=\"line number25 index24 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">while<\/code> <code class=\"arduino plain\">(<\/code><code class=\"arduino plain bold\">!<\/code><code class=\"arduino plain\">Serial) ; <\/code><code class=\"arduino comments\">\/\/ Wait for Serial monitor to open<\/code><\/div><div class=\"line number26 index25 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">delay<\/code><code class=\"arduino plain\">(<\/code><code class=\"arduino constants\">100<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number27 index26 alt2\">\u00a0<\/div><div class=\"line number28 index27 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ flash.setClock(12000000); \/\/ uncomment here for Arduino SAMD boards<\/code><\/div><div class=\"line number29 index28 alt2\">\u00a0<\/div><div class=\"line number30 index29 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">flash.begin(); <\/code><code class=\"arduino comments\">\/\/ If SPIMemory isn't recognized you can specify the size of memory<\/code><\/div><div class=\"line number31 index30 alt2\">\u00a0<\/div><div class=\"line number32 index31 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ flash.eraseChip();<\/code><\/div><div class=\"line number33 index32 alt2\">\u00a0<\/div><div class=\"line number34 index33 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Flash size: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number35 index34 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">((<\/code><code class=\"arduino color1 bold\">long<\/code><code class=\"arduino plain\">)(flash.getCapacity()<\/code><code class=\"arduino plain bold\">\/<\/code><code class=\"arduino constants\">1000<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number36 index35 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Kb\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number37 index36 alt2\">\u00a0<\/div><div class=\"line number38 index37 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">unsigned<\/code> <code class=\"arduino color1 bold\">long<\/code> <code class=\"arduino plain\">strAddr <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">0<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number39 index38 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">unsigned<\/code> <code class=\"arduino color1 bold\">long<\/code> <code class=\"arduino plain\">strAddrSecondString <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">0<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number40 index39 alt1\">\u00a0<\/div><div class=\"line number41 index40 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">();<\/code><\/div><div class=\"line number42 index41 alt1\">\u00a0<\/div><div class=\"line number43 index42 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ Allocate a temporary JsonDocument<\/code><\/div><div class=\"line number44 index43 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ Don't forget to change the capacity to match your requirements.<\/code><\/div><div class=\"line number45 index44 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ Use arduinojson.org\/v6\/assistant to compute the capacity.<\/code><\/div><div class=\"line number46 index45 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/\u00a0 StaticJsonDocument&lt;512&gt; doc;<\/code><\/div><div class=\"line number47 index46 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ You can use DynamicJsonDocument as well<\/code><\/div><div class=\"line number48 index47 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Generate JSON file!\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number49 index48 alt2 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">DynamicJsonDocument doc(<\/code><code class=\"arduino constants\">512<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number50 index49 alt1 highlighted\">\u00a0<\/div><div class=\"line number51 index50 alt2 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ Set the values in the document<\/code><\/div><div class=\"line number52 index51 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">doc[<\/code><code class=\"arduino string\">\"energyLifetime\"<\/code><code class=\"arduino plain\">] <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">21698620<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number53 index52 alt2 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">doc[<\/code><code class=\"arduino string\">\"energyYearly\"<\/code><code class=\"arduino plain\">] <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">1363005<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number54 index53 alt1\">\u00a0<\/div><div class=\"line number55 index54 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Put data in a buffer.. \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number56 index55 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ Serialize JSON to file<\/code><\/div><div class=\"line number57 index56 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">String buf;<\/code><\/div><div class=\"line number58 index57 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">if<\/code> <code class=\"arduino plain\">(serializeJson(doc, buf) <\/code><code class=\"arduino plain bold\">=<\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">0<\/code><code class=\"arduino plain\">) {<\/code><\/div><div class=\"line number59 index58 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"failed to write buffer\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number60 index59 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number61 index60 alt2\">\u00a0<\/div><div class=\"line number62 index61 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">if<\/code> <code class=\"arduino plain\">(flash.writeStr(strAddr, buf)){<\/code><\/div><div class=\"line number63 index62 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"OK, writed on address \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number64 index63 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(strAddr);<\/code><\/div><div class=\"line number65 index64 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><code class=\"arduino keyword bold\">else<\/code><code class=\"arduino plain\">{<\/code><\/div><div class=\"line number66 index65 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"KO\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number67 index66 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number68 index67 alt1\">\u00a0<\/div><div class=\"line number69 index68 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">String outputString <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino string\">\"\"<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number70 index69 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">if<\/code> <code class=\"arduino plain\">(flash.readStr(strAddr, outputString)) {<\/code><\/div><div class=\"line number71 index70 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Read json: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number72 index71 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(outputString);<\/code><\/div><div class=\"line number73 index72 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"From address: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number74 index73 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(strAddr);<\/code><\/div><div class=\"line number75 index74 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number76 index75 alt1\">\u00a0<\/div><div class=\"line number77 index76 alt2\">\u00a0<\/div><div class=\"line number78 index77 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Generate JSON file!\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number79 index78 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">DynamicJsonDocument doc2(<\/code><code class=\"arduino constants\">512<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number80 index79 alt1\">\u00a0<\/div><div class=\"line number81 index80 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ Set the values in the document<\/code><\/div><div class=\"line number82 index81 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">doc2[<\/code><code class=\"arduino string\">\"energyLifetime\"<\/code><code class=\"arduino plain\">] <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">222<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number83 index82 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">doc2[<\/code><code class=\"arduino string\">\"energyYearly\"<\/code><code class=\"arduino plain\">] <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">333<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number84 index83 alt1\">\u00a0<\/div><div class=\"line number85 index84 alt2\">\u00a0<\/div><div class=\"line number86 index85 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">();<\/code><\/div><div class=\"line number87 index86 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Check first free sector: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number88 index87 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">strAddrSecondString <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino plain\">flash.getAddress(doc2.size());<\/code><\/div><div class=\"line number89 index88 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(strAddrSecondString);<\/code><\/div><div class=\"line number90 index89 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">();<\/code><\/div><div class=\"line number91 index90 alt2\">\u00a0<\/div><div class=\"line number92 index91 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Stream data in flash memory!\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number93 index92 alt2\">\u00a0<\/div><div class=\"line number94 index93 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Put data in a buffer..\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number95 index94 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ Serialize JSON to file<\/code><\/div><div class=\"line number96 index95 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">String buf2;<\/code><\/div><div class=\"line number97 index96 alt2 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">if<\/code> <code class=\"arduino plain\">(serializeJson(doc2, buf2) <\/code><code class=\"arduino plain bold\">=<\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">0<\/code><code class=\"arduino plain\">) {<\/code><\/div><div class=\"line number98 index97 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"failed to write buffer\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number99 index98 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number100 index99 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ Print test file<\/code><\/div><div class=\"line number101 index100 alt2\">\u00a0<\/div><div class=\"line number102 index101 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">if<\/code> <code class=\"arduino plain\">(flash.writeStr(strAddrSecondString, buf2)){<\/code><\/div><div class=\"line number103 index102 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"OK, writed on address \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number104 index103 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(strAddrSecondString);<\/code><\/div><div class=\"line number105 index104 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><code class=\"arduino keyword bold\">else<\/code><code class=\"arduino plain\">{<\/code><\/div><div class=\"line number106 index105 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"KO\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number107 index106 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number108 index107 alt1\">\u00a0<\/div><div class=\"line number109 index108 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">String outputString2 <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino string\">\"\"<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number110 index109 alt1 highlighted\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">if<\/code> <code class=\"arduino plain\">(flash.readStr(strAddrSecondString, outputString2)) {<\/code><\/div><div class=\"line number111 index110 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Read data: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number112 index111 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(outputString2);<\/code><\/div><div class=\"line number113 index112 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"From address: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number114 index113 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(strAddrSecondString);<\/code><\/div><div class=\"line number115 index114 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number116 index115 alt1\">\u00a0<\/div><div class=\"line number117 index116 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">while<\/code> <code class=\"arduino plain\">(<\/code><code class=\"arduino plain bold\">!<\/code><code class=\"arduino plain\">flash.eraseSector(strAddr));<\/code><\/div><div class=\"line number118 index117 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">while<\/code> <code class=\"arduino plain\">(<\/code><code class=\"arduino plain bold\">!<\/code><code class=\"arduino plain\">flash.eraseSector(strAddrSecondString));<\/code><\/div><div class=\"line number119 index118 alt2\">\u00a0<\/div><div class=\"line number120 index119 alt1\"><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number121 index120 alt2\">\u00a0<\/div><div class=\"line number122 index121 alt1\"><code class=\"arduino color1 bold\">void<\/code> <code class=\"arduino keyword bold\">loop<\/code><code class=\"arduino plain\">() {<\/code><\/div><div class=\"line number123 index122 alt2\">\u00a0<\/div><div class=\"line number124 index123 alt1\"><code class=\"arduino plain\">}<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><p>\u9019\u662f\u63a7\u5236\u53f0\u7d50\u679c\u3002<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_472377\" class=\"syntaxhighlighter syntaxhighlightersize plain\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><div class=\"line number2 index1 alt1\">2<\/div><div class=\"line number3 index2 alt2\">3<\/div><div class=\"line number4 index3 alt1\">4<\/div><div class=\"line number5 index4 alt2\">5<\/div><div class=\"line number6 index5 alt1\">6<\/div><div class=\"line number7 index6 alt2\">7<\/div><div class=\"line number8 index7 alt1\">8<\/div><div class=\"line number9 index8 alt2\">9<\/div><div class=\"line number10 index9 alt1\">10<\/div><div class=\"line number11 index10 alt2\">11<\/div><div class=\"line number12 index11 alt1\">12<\/div><div class=\"line number13 index12 alt2\">13<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain plain\">Flash size: 8388Kb<\/code><\/div><div class=\"line number2 index1 alt1\">\u00a0<\/div><div class=\"line number3 index2 alt2\"><code class=\"plain plain\">Generate JSON file!<\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"plain plain\">Put data in a buffer.. OK, writed on address 0<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"plain plain\">Read json: {\"energyLifetime\":21698620,\"energyYearly\":1363005}<\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"plain plain\">From address: 0<\/code><\/div><div class=\"line number7 index6 alt2\"><code class=\"plain plain\">Generate JSON file!<\/code><\/div><div class=\"line number8 index7 alt1\">\u00a0<\/div><div class=\"line number9 index8 alt2\"><code class=\"plain plain\">Check first free sector: 56<\/code><\/div><div class=\"line number10 index9 alt1\">\u00a0<\/div><div class=\"line number11 index10 alt2\"><code class=\"plain plain\">Stream data in flash memory!Put data in a buffer..OK, writed on address 56<\/code><\/div><div class=\"line number12 index11 alt1\"><code class=\"plain plain\">Read data: {\"energyLifetime\":222,\"energyYearly\":333}<\/code><\/div><div class=\"line number13 index12 alt2\"><code class=\"plain plain\">From address: 56<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><h3 class=\"wp-block-heading fittexted_for_content_h3\"><span id=\"Save_and_read_structure\" class=\"ez-toc-section\"><\/span>\u4fdd\u5b58\u548c\u8b80\u53d6\u7d50\u69cb<\/h3><p>\u7576\u7136\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528 JSON \u7d50\u69cb\u4f86\u4fdd\u5b58\u8907\u96dc\u7684\u6578\u64da\uff0c\u4f46\u5982\u679c\u60a8\u60f3\u7372\u5f97\u6700\u4f73\u6027\u80fd\u548c\u66f4\u597d\u7684\u7a7a\u9593\u5229\u7528\u7387\uff0c\u5247\u5fc5\u9808\u4f7f\u7528\u9019\u6a23\u7684\u7d50\u69cb\u3002<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_817006\" class=\"syntaxhighlighter syntaxhighlightersize arduino\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><div class=\"line number2 index1 alt1\">2<\/div><div class=\"line number3 index2 alt2\">3<\/div><div class=\"line number4 index3 alt1\">4<\/div><div class=\"line number5 index4 alt2\">5<\/div><div class=\"line number6 index5 alt1\">6<\/div><div class=\"line number7 index6 alt2\">7<\/div><div class=\"line number8 index7 alt1\">8<\/div><div class=\"line number9 index8 alt2\">9<\/div><div class=\"line number10 index9 alt1\">10<\/div><div class=\"line number11 index10 alt2\">11<\/div><div class=\"line number12 index11 alt1\">12<\/div><div class=\"line number13 index12 alt2\">13<\/div><div class=\"line number14 index13 alt1\">14<\/div><div class=\"line number15 index14 alt2\">15<\/div><div class=\"line number16 index15 alt1\">16<\/div><div class=\"line number17 index16 alt2\">17 \u865f<\/div><div class=\"line number18 index17 alt1\">18<\/div><div class=\"line number19 index18 alt2\">19<\/div><div class=\"line number20 index19 alt1\">20<\/div><div class=\"line number21 index20 alt2\">21<\/div><div class=\"line number22 index21 alt1\">22<\/div><div class=\"line number23 index22 alt2\">23<\/div><div class=\"line number24 index23 alt1\">24<\/div><div class=\"line number25 index24 alt2\">25<\/div><div class=\"line number26 index25 alt1\">26<\/div><div class=\"line number27 index26 alt2\">27<\/div><div class=\"line number28 index27 alt1\">28<\/div><div class=\"line number29 index28 alt2\">29<\/div><div class=\"line number30 index29 alt1\">30<\/div><div class=\"line number31 index30 alt2\">31<\/div><div class=\"line number32 index31 alt1\">32<\/div><div class=\"line number33 index32 alt2\">33<\/div><div class=\"line number34 index33 alt1\">34<\/div><div class=\"line number35 index34 alt2\">35<\/div><div class=\"line number36 index35 alt1\">36<\/div><div class=\"line number37 index36 alt2\">37<\/div><div class=\"line number38 index37 alt1\">38<\/div><div class=\"line number39 index38 alt2\">39<\/div><div class=\"line number40 index39 alt1\">40<\/div><div class=\"line number41 index40 alt2\">41<\/div><div class=\"line number42 index41 alt1\">42<\/div><div class=\"line number43 index42 alt2\">43<\/div><div class=\"line number44 index43 alt1\">44<\/div><div class=\"line number45 index44 alt2\">45<\/div><div class=\"line number46 index45 alt1\">46<\/div><div class=\"line number47 index46 alt2\">47<\/div><div class=\"line number48 index47 alt1\">48<\/div><div class=\"line number49 index48 alt2\">49<\/div><div class=\"line number50 index49 alt1\">50<\/div><div class=\"line number51 index50 alt2\">51<\/div><div class=\"line number52 index51 alt1\">52<\/div><div class=\"line number53 index52 alt2\">53<\/div><div class=\"line number54 index53 alt1\">54<\/div><div class=\"line number55 index54 alt2\">55<\/div><div class=\"line number56 index55 alt1\">56<\/div><div class=\"line number57 index56 alt2\">57<\/div><div class=\"line number58 index57 alt1\">58<\/div><div class=\"line number59 index58 alt2\">59<\/div><div class=\"line number60 index59 alt1\">60<\/div><div class=\"line number61 index60 alt2\">61<\/div><div class=\"line number62 index61 alt1\">62<\/div><div class=\"line number63 index62 alt2\">63<\/div><div class=\"line number64 index63 alt1\">64<\/div><div class=\"line number65 index64 alt2\">65<\/div><div class=\"line number66 index65 alt1\">66<\/div><div class=\"line number67 index66 alt2\">67<\/div><div class=\"line number68 index67 alt1\">68<\/div><div class=\"line number69 index68 alt2\">69<\/div><div class=\"line number70 index69 alt1\">70<\/div><div class=\"line number71 index70 alt2\">71<\/div><div class=\"line number72 index71 alt1\">72<\/div><div class=\"line number73 index72 alt2\">73<\/div><div class=\"line number74 index73 alt1\">74<\/div><div class=\"line number75 index74 alt2\">75<\/div><div class=\"line number76 index75 alt1\">76<\/div><div class=\"line number77 index76 alt2\">77<\/div><div class=\"line number78 index77 alt1\">78<\/div><div class=\"line number79 index78 alt2\">79<\/div><div class=\"line number80 index79 alt1\">80<\/div><div class=\"line number81 index80 alt2\">81<\/div><div class=\"line number82 index81 alt1\">82<\/div><div class=\"line number83 index82 alt2\">83<\/div><div class=\"line number84 index83 alt1\">84<\/div><div class=\"line number85 index84 alt2\">85<\/div><div class=\"line number86 index85 alt1\">86<\/div><div class=\"line number87 index86 alt2\">87<\/div><div class=\"line number88 index87 alt1\">88<\/div><div class=\"line number89 index88 alt2\">89<\/div><div class=\"line number90 index89 alt1\">90<\/div><div class=\"line number91 index90 alt2\">91<\/div><div class=\"line number92 index91 alt1\">92<\/div><div class=\"line number93 index92 alt2\">93<\/div><div class=\"line number94 index93 alt1\">94<\/div><div class=\"line number95 index94 alt2\">95<\/div><div class=\"line number96 index95 alt1\">96<\/div><div class=\"line number97 index96 alt2\">97<\/div><div class=\"line number98 index97 alt1\">98<\/div><div class=\"line number99 index98 alt2\">99<\/div><div class=\"line number100 index99 alt1\">100<\/div><div class=\"line number101 index100 alt2\">101<\/div><div class=\"line number102 index101 alt1\">102<\/div><div class=\"line number103 index102 alt2\">103<\/div><div class=\"line number104 index103 alt1\">104<\/div><div class=\"line number105 index104 alt2\">105<\/div><div class=\"line number106 index105 alt1\">106<\/div><div class=\"line number107 index106 alt2\">107<\/div><div class=\"line number108 index107 alt1\">108<\/div><div class=\"line number109 index108 alt2\">109<\/div><div class=\"line number110 index109 alt1\">110<\/div><div class=\"line number111 index110 alt2\">111<\/div><div class=\"line number112 index111 alt1\">112<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"arduino comments\">\/*<\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 Manage external SPI Flash with Arduino<\/code><\/div><div class=\"line number3 index2 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 Write and read a structure<\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 with library SPIMemory<\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number7 index6 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 by Mischianti Renzo &lt;<a href=\"https:\/\/mischianti.org\/\">https:\/\/mischianti.org<\/a>&gt;<\/code><\/div><div class=\"line number8 index7 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number9 index8 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 <a href=\"https:\/\/mischianti.org\/\">https:\/\/mischianti.org\/<\/a><\/code><\/div><div class=\"line number10 index9 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number11 index10 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\u00a0 SPIFlash connected via SPI standard<\/code><\/div><div class=\"line number12 index11 alt1\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*<\/code><\/div><div class=\"line number13 index12 alt2\"><code class=\"arduino spaces\">\u00a0<\/code><code class=\"arduino comments\">*\/<\/code><\/div><div class=\"line number14 index13 alt1\">\u00a0<\/div><div class=\"line number15 index14 alt2\"><code class=\"arduino preprocessor\">#include<\/code><code class=\"arduino plain\">&lt;SPIMemory.h&gt;<\/code><\/div><div class=\"line number16 index15 alt1\">\u00a0<\/div><div class=\"line number17 index16 alt2\"><code class=\"arduino comments\">\/\/ I'm going to use the structure use in standard example<\/code><\/div><div class=\"line number18 index17 alt1\"><code class=\"arduino plain\">struct ConfigurationIn {<\/code><\/div><div class=\"line number19 index18 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">float<\/code> <code class=\"arduino plain\">lux <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">3.24<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number20 index19 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">float<\/code> <code class=\"arduino plain\">vOut <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">4.45<\/code><code class=\"arduino plain\">;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"arduino comments\">\/\/ Voltage ouput from potential divider to Analog input<\/code><\/div><div class=\"line number21 index20 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">float<\/code> <code class=\"arduino plain\">RLDR <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">1.234<\/code><code class=\"arduino plain\">;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"arduino comments\">\/\/ Resistance calculation of potential divider with LDR<\/code><\/div><div class=\"line number22 index21 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">bool light <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number23 index22 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">uint8_t adc <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">45<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number24 index23 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">uint8_t arr[<\/code><code class=\"arduino constants\">8<\/code><code class=\"arduino plain\">] <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino plain\">{<\/code><code class=\"arduino constants\">0<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">1<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">2<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">3<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">4<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">5<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">6<\/code><code class=\"arduino plain\">, <\/code><code class=\"arduino constants\">7<\/code><code class=\"arduino plain\">};<\/code><\/div><div class=\"line number25 index24 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">struct MISC {<\/code><\/div><div class=\"line number26 index25 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">byte<\/code> <code class=\"arduino plain\">tempHigh <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">30<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number27 index26 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">byte<\/code> <code class=\"arduino plain\">tempLow <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">20<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number28 index27 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino plain\">bool parkingMode <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number29 index28 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino plain\">bool allowDataToBeSent <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants bold\">false<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number30 index29 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">} misc;<\/code><\/div><div class=\"line number31 index30 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">struct NETWORK {<\/code><\/div><div class=\"line number32 index31 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">char<\/code> <code class=\"arduino plain\">ssid[<\/code><code class=\"arduino constants\">5<\/code><code class=\"arduino plain\">] <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino string\">\"ssid\"<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number33 index32 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">char<\/code> <code class=\"arduino plain\">pwd[<\/code><code class=\"arduino constants\">4<\/code><code class=\"arduino plain\">] <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino string\">\"pwd\"<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number34 index33 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">char<\/code> <code class=\"arduino plain\">userid[<\/code><code class=\"arduino constants\">7<\/code><code class=\"arduino plain\">] <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino string\">\"userid\"<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number35 index34 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">} network;<\/code><\/div><div class=\"line number36 index35 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">struct CHARGING_INFO {<\/code><\/div><div class=\"line number37 index36 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">byte<\/code> <code class=\"arduino plain\">interval <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">5<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number38 index37 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">byte<\/code> <code class=\"arduino plain\">highChargingDefault <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">80<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number39 index38 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">} charging;<\/code><\/div><div class=\"line number40 index39 alt1\"><code class=\"arduino plain\">};<\/code><\/div><div class=\"line number41 index40 alt2\"><code class=\"arduino plain\">ConfigurationIn configurationIn;<\/code><\/div><div class=\"line number42 index41 alt1\">\u00a0<\/div><div class=\"line number43 index42 alt2\"><code class=\"arduino plain\">struct ConfigurationOut {<\/code><\/div><div class=\"line number44 index43 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">float<\/code> <code class=\"arduino plain\">lux;<\/code><\/div><div class=\"line number45 index44 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">float<\/code> <code class=\"arduino plain\">vOut;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"arduino comments\">\/\/ Voltage ouput from potential divider to Analog input<\/code><\/div><div class=\"line number46 index45 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">float<\/code> <code class=\"arduino plain\">RLDR;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"arduino comments\">\/\/ Resistance calculation of potential divider with LDR<\/code><\/div><div class=\"line number47 index46 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">bool light;<\/code><\/div><div class=\"line number48 index47 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">uint8_t adc;<\/code><\/div><div class=\"line number49 index48 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">uint8_t arr[<\/code><code class=\"arduino constants\">8<\/code><code class=\"arduino plain\">];<\/code><\/div><div class=\"line number50 index49 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">struct MISC {<\/code><\/div><div class=\"line number51 index50 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">byte<\/code> <code class=\"arduino plain\">tempHigh;<\/code><\/div><div class=\"line number52 index51 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">byte<\/code> <code class=\"arduino plain\">tempLow;<\/code><\/div><div class=\"line number53 index52 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino plain\">bool parkingMode;<\/code><\/div><div class=\"line number54 index53 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino plain\">bool allowDataToBeSent;<\/code><\/div><div class=\"line number55 index54 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">} misc;<\/code><\/div><div class=\"line number56 index55 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">struct NETWORK {<\/code><\/div><div class=\"line number57 index56 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">char<\/code> <code class=\"arduino plain\">ssid[<\/code><code class=\"arduino constants\">5<\/code><code class=\"arduino plain\">];<\/code><\/div><div class=\"line number58 index57 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">char<\/code> <code class=\"arduino plain\">pwd[<\/code><code class=\"arduino constants\">4<\/code><code class=\"arduino plain\">];<\/code><\/div><div class=\"line number59 index58 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">char<\/code> <code class=\"arduino plain\">userid[<\/code><code class=\"arduino constants\">7<\/code><code class=\"arduino plain\">];<\/code><\/div><div class=\"line number60 index59 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">} network;<\/code><\/div><div class=\"line number61 index60 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">struct CHARGING_INFO {<\/code><\/div><div class=\"line number62 index61 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">byte<\/code> <code class=\"arduino plain\">interval;<\/code><\/div><div class=\"line number63 index62 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">byte<\/code> <code class=\"arduino plain\">highChargingDefault;<\/code><\/div><div class=\"line number64 index63 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">} charging;<\/code><\/div><div class=\"line number65 index64 alt2\"><code class=\"arduino plain\">};<\/code><\/div><div class=\"line number66 index65 alt1\"><code class=\"arduino plain\">ConfigurationOut configurationOut;<\/code><\/div><div class=\"line number67 index66 alt2\">\u00a0<\/div><div class=\"line number68 index67 alt1\">\u00a0<\/div><div class=\"line number69 index68 alt2\"><code class=\"arduino comments\">\/\/SPIFlash flash; \/\/ If you don't specify the library use standard SPI connection<\/code><\/div><div class=\"line number70 index69 alt1\"><code class=\"arduino plain\">SPIFlash flash;<\/code><\/div><div class=\"line number71 index70 alt2\"><code class=\"arduino color1 bold\">void<\/code> <code class=\"arduino keyword bold\">setup<\/code><code class=\"arduino plain\">() {<\/code><\/div><div class=\"line number72 index71 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.begin<\/code><code class=\"arduino plain\">(<\/code><code class=\"arduino constants\">115200<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number73 index72 alt2\">\u00a0<\/div><div class=\"line number74 index73 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">while<\/code> <code class=\"arduino plain\">(<\/code><code class=\"arduino plain bold\">!<\/code><code class=\"arduino plain\">Serial) ; <\/code><code class=\"arduino comments\">\/\/ Wait for Serial monitor to open<\/code><\/div><div class=\"line number75 index74 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">delay<\/code><code class=\"arduino plain\">(<\/code><code class=\"arduino constants\">100<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number76 index75 alt1\">\u00a0<\/div><div class=\"line number77 index76 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino comments\">\/\/ flash.setClock(12000000); \/\/ uncomment here for Arduino SAMD boards<\/code><\/div><div class=\"line number78 index77 alt1\">\u00a0<\/div><div class=\"line number79 index78 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">flash.begin(); <\/code><code class=\"arduino comments\">\/\/ If SPIMemory isn't recognized you can specify the size of memory<\/code><\/div><div class=\"line number80 index79 alt1\">\u00a0<\/div><div class=\"line number81 index80 alt2\"><code class=\"arduino comments\">\/\/\u00a0 flash.eraseChip();<\/code><\/div><div class=\"line number82 index81 alt1\">\u00a0<\/div><div class=\"line number83 index82 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Flash size: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number84 index83 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">((<\/code><code class=\"arduino color1 bold\">long<\/code><code class=\"arduino plain\">)(flash.getCapacity()<\/code><code class=\"arduino plain bold\">\/<\/code><code class=\"arduino constants\">1000<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number85 index84 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Kb\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number86 index85 alt1\">\u00a0<\/div><div class=\"line number87 index86 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino color1 bold\">unsigned<\/code> <code class=\"arduino color1 bold\">long<\/code> <code class=\"arduino plain\">strAddr <\/code><code class=\"arduino plain bold\">=<\/code> <code class=\"arduino constants\">0<\/code><code class=\"arduino plain\">;<\/code><\/div><div class=\"line number88 index87 alt1\">\u00a0<\/div><div class=\"line number89 index88 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">();<\/code><\/div><div class=\"line number90 index89 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Start writing structure \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number91 index90 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">if<\/code> <code class=\"arduino plain\">(flash.writeAnything(strAddr, configurationIn, <\/code><code class=\"arduino constants bold\">true<\/code><code class=\"arduino plain\">)){<\/code><\/div><div class=\"line number92 index91 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(<\/code><code class=\"arduino string\">\"OK\"<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number93 index92 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><code class=\"arduino keyword bold\">else<\/code><code class=\"arduino plain\">{<\/code><\/div><div class=\"line number94 index93 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(<\/code><code class=\"arduino string\">\"KO\"<\/code><code class=\"arduino plain\">);<\/code><\/div><div class=\"line number95 index94 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number96 index95 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">();<\/code><\/div><div class=\"line number97 index96 alt2\">\u00a0<\/div><div class=\"line number98 index97 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">if<\/code> <code class=\"arduino plain\">(flash.readAnything(strAddr, configurationOut)) {<\/code><\/div><div class=\"line number99 index98 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.print<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Read lux on configuration loaded from Flash: \"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number100 index99 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(configurationOut.lux);<\/code><\/div><div class=\"line number101 index100 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><code class=\"arduino keyword bold\">else<\/code><code class=\"arduino plain\">{<\/code><\/div><div class=\"line number102 index101 alt1\"><code class=\"arduino spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">(F(<\/code><code class=\"arduino string\">\"Read not work!\"<\/code><code class=\"arduino plain\">));<\/code><\/div><div class=\"line number103 index102 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number104 index103 alt1\">\u00a0<\/div><div class=\"line number105 index104 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino functions\">Serial.println<\/code><code class=\"arduino plain\">();<\/code><\/div><div class=\"line number106 index105 alt1\">\u00a0<\/div><div class=\"line number107 index106 alt2\"><code class=\"arduino spaces\">\u00a0\u00a0<\/code><code class=\"arduino keyword bold\">while<\/code> <code class=\"arduino plain\">(<\/code><code class=\"arduino plain bold\">!<\/code><code class=\"arduino plain\">flash.eraseSector(strAddr));<\/code><\/div><div class=\"line number108 index107 alt1\"><code class=\"arduino plain\">}<\/code><\/div><div class=\"line number109 index108 alt2\">\u00a0<\/div><div class=\"line number110 index109 alt1\"><code class=\"arduino color1 bold\">void<\/code> <code class=\"arduino keyword bold\">loop<\/code><code class=\"arduino plain\">() {<\/code><\/div><div class=\"line number111 index110 alt2\">\u00a0<\/div><div class=\"line number112 index111 alt1\"><code class=\"arduino plain\">}<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><p>\u9019\u662f\u4e32\u884c\u7d50\u679c\uff08\u8a3a\u65b7\u8655\u65bc\u6d3b\u52d5\u72c0\u614b\uff09\u3002<\/p><div class=\"wp-block-syntaxhighlighter-code \"><div><div id=\"highlighter_637799\" class=\"syntaxhighlighter syntaxhighlightersize plain\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"gutter\"><div class=\"line number1 index0 alt2\">1<\/div><div class=\"line number2 index1 alt1\">2<\/div><div class=\"line number3 index2 alt2\">3<\/div><div class=\"line number4 index3 alt1\">4<\/div><div class=\"line number5 index4 alt2\">5<\/div><div class=\"line number6 index5 alt1\">6<\/div><div class=\"line number7 index6 alt2\">7<\/div><div class=\"line number8 index7 alt1\">8<\/div><div class=\"line number9 index8 alt2\">9<\/div><\/td><td class=\"code\"><div class=\"container\"><div class=\"line number1 index0 alt2\"><code class=\"plain plain\">Chip Diagnostics initiated.<\/code><\/div><div class=\"line number2 index1 alt1\">\u00a0<\/div><div class=\"line number3 index2 alt2\"><code class=\"plain plain\">No Chip size defined by user. Checking library support.<\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"plain plain\">Chip identified. This chip is fully supported by the library.<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"plain plain\">Flash size: 8388Kb<\/code><\/div><div class=\"line number6 index5 alt1\">\u00a0<\/div><div class=\"line number7 index6 alt2\"><code class=\"plain plain\">Start writing structure OK<\/code><\/div><div class=\"line number8 index7 alt1\">\u00a0<\/div><div class=\"line number9 index8 alt2\"><code class=\"plain plain\">Read lux on configuration loaded from Flash: 3.24<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><h2 class=\"wp-block-heading fittexted_for_content_h2\">\u00a0<\/h2><h2 class=\"wp-block-heading fittexted_for_content_h2\"><span id=\"The_fat_filesystem_on_SPI_Flash\" class=\"ez-toc-section\"><\/span>SPI Flash \u4e0a\u7684 fat \u6a94\u6848\u7cfb\u7d71<\/h2><p>\u4e5f\u53ef\u4ee5\u4f7f\u7528 Fat \u6a94\u6848\u7cfb\u7d71\uff0c\u4f46\u6211\u4e0d\u9f13\u52f5\u9019\u7a2e\u65b9\u6cd5\uff0c\u56e0\u70ba Arduino UNO \u548c Mega \u7684\u8cc7\u6e90\u592a\u4f4e\uff0c\u7121\u6cd5\u4f7f\u7528\u9019\u4e9b\u8cc7\u6e90\uff0c\u4f46\u5982\u679c\u60a8\u60f3\u5617\u8a66\uff0c\u60a8\u53ef\u4ee5\u95b1\u8b80\u6709\u95dc Arduino SAMD \u6216 esp8266 \u7684 SPI Flash \u7684\u6587\u7ae0\u548cesp32\u3002<\/p><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u4f5c\u8005\uff1a\u00a0\u502b\u4f50\u00b7\u7c73\u65af\u57fa\u5b89\u8482\u00a0\u00b7\u51fa\u7248\u00a02022 \u5e74 8 \u6708 2 \u65e5\u00a0\u00b7 &#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":480,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-467","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4<\/title>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/3dok.biz\/wordpress\/?p=467\" \/>\r\n<meta property=\"og:locale\" content=\"zh_TW\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\" \/>\r\n<meta property=\"og:description\" content=\"\u4f5c\u8005\uff1a\u00a0\u502b\u4f50\u00b7\u7c73\u65af\u57fa\u5b89\u8482\u00a0\u00b7\u51fa\u7248\u00a02022 \u5e74 8 \u6708 2 \u65e5\u00a0\u00b7 &#046;&#046;&#046;\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/3dok.biz\/wordpress\/?p=467\" \/>\r\n<meta property=\"og:site_name\" content=\"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\" \/>\r\n<meta property=\"article:published_time\" content=\"2024-03-30T13:32:54+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2024-03-30T14:18:22+00:00\" \/>\r\n<meta property=\"og:image\" content=\"http:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\r\n\t<meta property=\"og:image:height\" content=\"586\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Richard\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Richard\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9810\u4f30\u95b1\u8b80\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\u9418\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=467#article\",\"isPartOf\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=467\"},\"author\":{\"name\":\"Richard\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/5e54f3d9faf01d51effe528b60b81ab2\"},\"headline\":\"Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4\",\"datePublished\":\"2024-03-30T13:32:54+00:00\",\"dateModified\":\"2024-03-30T14:18:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=467\"},\"wordCount\":206,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/#organization\"},\"image\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=467#primaryimage\"},\"thumbnailUrl\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg\",\"articleSection\":[\"Arduino\"],\"inLanguage\":\"zh-TW\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/3dok.biz\/wordpress\/?p=467#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=467\",\"url\":\"https:\/\/3dok.biz\/wordpress\/?p=467\",\"name\":\"Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\",\"isPartOf\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=467#primaryimage\"},\"image\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=467#primaryimage\"},\"thumbnailUrl\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg\",\"datePublished\":\"2024-03-30T13:32:54+00:00\",\"dateModified\":\"2024-03-30T14:18:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=467#breadcrumb\"},\"inLanguage\":\"zh-TW\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/3dok.biz\/wordpress\/?p=467\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=467#primaryimage\",\"url\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg\",\"contentUrl\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg\",\"width\":1024,\"height\":586},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/?p=467#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\/\/3dok.biz\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#website\",\"url\":\"https:\/\/3dok.biz\/wordpress\/\",\"name\":\"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\",\"description\":\"\u96fb\u8166\u79d1\u6280\u5275\u65b0 A.I. \u667a\u80fd\u79d1\u5b78 \u7269\u806f\u7db2\u901a\u8a0a\",\"publisher\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/3dok.biz\/wordpress\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-TW\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#organization\",\"name\":\"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\",\"url\":\"https:\/\/3dok.biz\/wordpress\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2020\/07\/python-logo-2.png\",\"contentUrl\":\"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2020\/07\/python-logo-2.png\",\"width\":290,\"height\":82,\"caption\":\"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4\"},\"image\":{\"@id\":\"https:\/\/3dok.biz\/wordpress\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/5e54f3d9faf01d51effe528b60b81ab2\",\"name\":\"Richard\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-TW\",\"@id\":\"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8292d51406afbfc9b7d6f72c910b3babe6852736c013ade5ea75e7e8df0c55bc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8292d51406afbfc9b7d6f72c910b3babe6852736c013ade5ea75e7e8df0c55bc?s=96&d=mm&r=g\",\"caption\":\"Richard\"},\"sameAs\":[\"http:\/\/3dok.biz\/wordpress\"],\"url\":\"https:\/\/3dok.biz\/wordpress\/?author=1\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/3dok.biz\/wordpress\/?p=467","og_locale":"zh_TW","og_type":"article","og_title":"Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","og_description":"\u4f5c\u8005\uff1a\u00a0\u502b\u4f50\u00b7\u7c73\u65af\u57fa\u5b89\u8482\u00a0\u00b7\u51fa\u7248\u00a02022 \u5e74 8 \u6708 2 \u65e5\u00a0\u00b7 &#46;&#46;&#46;","og_url":"https:\/\/3dok.biz\/wordpress\/?p=467","og_site_name":"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","article_published_time":"2024-03-30T13:32:54+00:00","article_modified_time":"2024-03-30T14:18:22+00:00","og_image":[{"width":1024,"height":586,"url":"http:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg","type":"image\/jpeg"}],"author":"Richard","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005:":"Richard","\u9810\u4f30\u95b1\u8b80\u6642\u9593":"4 \u5206\u9418"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/3dok.biz\/wordpress\/?p=467#article","isPartOf":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=467"},"author":{"name":"Richard","@id":"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/5e54f3d9faf01d51effe528b60b81ab2"},"headline":"Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4","datePublished":"2024-03-30T13:32:54+00:00","dateModified":"2024-03-30T14:18:22+00:00","mainEntityOfPage":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=467"},"wordCount":206,"commentCount":0,"publisher":{"@id":"https:\/\/3dok.biz\/wordpress\/#organization"},"image":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=467#primaryimage"},"thumbnailUrl":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg","articleSection":["Arduino"],"inLanguage":"zh-TW","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/3dok.biz\/wordpress\/?p=467#respond"]}]},{"@type":"WebPage","@id":"https:\/\/3dok.biz\/wordpress\/?p=467","url":"https:\/\/3dok.biz\/wordpress\/?p=467","name":"Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4 - Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","isPartOf":{"@id":"https:\/\/3dok.biz\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=467#primaryimage"},"image":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=467#primaryimage"},"thumbnailUrl":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg","datePublished":"2024-03-30T13:32:54+00:00","dateModified":"2024-03-30T14:18:22+00:00","breadcrumb":{"@id":"https:\/\/3dok.biz\/wordpress\/?p=467#breadcrumb"},"inLanguage":"zh-TW","potentialAction":[{"@type":"ReadAction","target":["https:\/\/3dok.biz\/wordpress\/?p=467"]}]},{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/3dok.biz\/wordpress\/?p=467#primaryimage","url":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg","contentUrl":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2024\/03\/Arduino-UNO-external-SPI-Flash-memory-storage-main-1024x586-1.jpg","width":1024,"height":586},{"@type":"BreadcrumbList","@id":"https:\/\/3dok.biz\/wordpress\/?p=467#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/3dok.biz\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Arduino \u5feb\u901f\u5916\u90e8 SPI \u5feb\u9583\u8a18\u61b6\u9ad4"}]},{"@type":"WebSite","@id":"https:\/\/3dok.biz\/wordpress\/#website","url":"https:\/\/3dok.biz\/wordpress\/","name":"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","description":"\u96fb\u8166\u79d1\u6280\u5275\u65b0 A.I. \u667a\u80fd\u79d1\u5b78 \u7269\u806f\u7db2\u901a\u8a0a","publisher":{"@id":"https:\/\/3dok.biz\/wordpress\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/3dok.biz\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-TW"},{"@type":"Organization","@id":"https:\/\/3dok.biz\/wordpress\/#organization","name":"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4","url":"https:\/\/3dok.biz\/wordpress\/","logo":{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/3dok.biz\/wordpress\/#\/schema\/logo\/image\/","url":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2020\/07\/python-logo-2.png","contentUrl":"https:\/\/3dok.biz\/wordpress\/wp-content\/uploads\/2020\/07\/python-logo-2.png","width":290,"height":82,"caption":"Richard Studio \u7406\u67e5\u5de5\u4f5c\u5ba4"},"image":{"@id":"https:\/\/3dok.biz\/wordpress\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/5e54f3d9faf01d51effe528b60b81ab2","name":"Richard","image":{"@type":"ImageObject","inLanguage":"zh-TW","@id":"https:\/\/3dok.biz\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8292d51406afbfc9b7d6f72c910b3babe6852736c013ade5ea75e7e8df0c55bc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8292d51406afbfc9b7d6f72c910b3babe6852736c013ade5ea75e7e8df0c55bc?s=96&d=mm&r=g","caption":"Richard"},"sameAs":["http:\/\/3dok.biz\/wordpress"],"url":"https:\/\/3dok.biz\/wordpress\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=467"}],"version-history":[{"count":20,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/467\/revisions"}],"predecessor-version":[{"id":510,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/467\/revisions\/510"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/480"}],"wp:attachment":[{"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/3dok.biz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}