{"id":10020548,"date":"2024-12-24T22:19:43","date_gmt":"2024-12-24T14:19:43","guid":{"rendered":"https:\/\/itmax.cn\/?p=10020548"},"modified":"2024-12-24T22:19:43","modified_gmt":"2024-12-24T14:19:43","slug":"w25q128%e5%ad%98%e5%82%a8%e5%99%a8%e8%af%a6%e8%a7%a3","status":"publish","type":"post","link":"https:\/\/itmax.cn\/?p=10020548","title":{"rendered":"W25Q128\u5b58\u50a8\u5668\u8be6\u89e3"},"content":{"rendered":"<p>\u53ef\u80fd\u6709\u5f88\u591a\u5c0f\u4f19\u4f34\u5bf9 W25Q128 \u611f\u5230\u964c\u751f\uff0c\u8bf4\u767d\u4e86\u5b83\u5c31\u662f\u4e00\u4e2a\u5b58\u50a8\u82af\u7247\u3002\u5b83\u662f\u4e00\u6b3e\u9ad8\u6027\u80fd\u3001\u5bb9\u91cf\u8f83\u5927\u7684\u95ea\u5b58\u5b58\u50a8\u5668\u82af\u7247\uff0c\u901a\u8fc7 SPI \u63a5\u53e3\u8fdb\u884c\u901a\u4fe1\uff0c\u9002\u7528\u4e8e\u5404\u79cd\u9700\u8981\u9ad8\u901f\u3001\u5927\u5bb9\u91cf\u6570\u636e\u5b58\u50a8\u7684\u573a\u5408\u3002\u5e38\u7528\u4e8e\u5d4c\u5165\u5f0f\u7cfb\u7edf\u4e2d\uff0c\u4f5c\u4e3a\u7a0b\u5e8f\u4ee3\u7801\u5b58\u50a8\u5668\u6216\u914d\u7f6e\u6570\u636e\u5b58\u50a8\u5668\uff0c\u5982\u5fae\u63a7\u5236\u5668\u3001\u5355\u677f\u8ba1\u7b97\u673a\u7b49\u3002<\/p>\n<p>SPI \u662f\u4e00\u79cd\u901a\u4fe1\u534f\u8bae\uff0c\u4eca\u5929\u5b66\u4e60 W25Q128 \u7684\u540c\u65f6\u4f1a\u8bb2\u89e3\u4e00\u4e0b SPI \u901a\u4fe1\u534f\u8bae\uff0c\u4e0d\u61c2 SPI \u7684\u5c0f\u4f19\u4f34\u4e5f\u53ef\u4ee5\u63a5\u7740\u770b\u3002<\/p>\n<h2>1. \u6e90\u7801\u4e0b\u8f7d\u53ca\u524d\u7f6e\u9605\u8bfb<\/h2>\n<p>\u672c\u6587\u9996\u53d1\u826f\u8bb8\u5d4c\u5165\u5f0f\u7f51\uff0c<a href=\"https:\/\/link.segmentfault.com\/?enc=7tc1bfzvOkwajlInJV80NA%3D%3D.wYqji81wqC7MLbSPLm5tE1moEV1RvJiz%2FvoyNCr5tb8%3D\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">https:\/\/www.lxlinux.net\/e\/<\/a> \uff0c\u6b22\u8fce\u5173\u6ce8\uff01<\/p>\n<p>\u672c\u6587\u6240\u6d89\u53ca\u7684\u6e90\u7801\u53ca\u5b89\u88c5\u5305\u5982\u4e0b\uff08\u7531\u4e8e\u5e73\u53f0\u9650\u5236\uff0c\u8bf7\u70b9\u51fb\u4ee5\u4e0b\u94fe\u63a5\u9605\u8bfb\u539f\u6587\u4e0b\u8f7d\uff09\uff1a<\/p>\n<p><a href=\"https:\/\/link.segmentfault.com\/?enc=gA9NkRkscRr832Vzv87Zng%3D%3D.wwgK6luOVTt1DakvjHaiYnOrgsyaq%2FKy7AFtrpI843IC%2Fh8ISc3p%2BFaoJaXqEwY8qh9qF8HUbXa2rBvsrRf3tQ%3D%3D\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">https:\/\/www.lxlinux.net\/e\/stm32\/w25q128-tutorial.html<\/a><\/p>\n<p>\u5982\u679c\u4f60\u662f\u5d4c\u5165\u5f0f\u5f00\u53d1\u5c0f\u767d\uff0c\u90a3\u4e48\u5efa\u8bae\u4f60\u5148\u8bfb\u8bfb\u4e0b\u9762\u51e0\u7bc7\u6587\u7ae0\u3002<\/p>\n<ul>\n<li>\u901a\u4fd7\u6613\u61c2\u7684 GPIO \u4ecb\u7ecd\u4e0e\u5b9e\u8df5\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=ByivgvgOMbNdjkYCWLNyag%3D%3D.nrhtcZSrCDlAyeM9O%2BkmtjP6CSrJVcB9X5N0zpshZDzHMHHVxzwiuwEqc8GxFI3qgA3ikiuBckpoIkrQaAzGpg%3D%3D\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">\u5982\u4f55\u5feb\u901f\u6210\u4e3a\u70b9\u706f\u5927\u5e08\uff1f<\/a><\/li>\n<li>\u4ece\u96f6\u5f00\u59cb\u8f7b\u677e\u638c\u63e1STM32\u5f00\u53d1\u7684\u5fc5\u5907\u6307\u5357\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=CjpcOzxwCzbBR9GVJfkg5w%3D%3D.X%2FkbvWz9q51JDS1bYTOw8R6Wvn0Am4Xh1CC1JtJs513EUhi6BKxxsousuRkuQO5hdWJFJ9hQg8pL0Wnakbe875fhJusqWbTT3b%2FHHOKQLrc%3D\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">\u96f6\u57fa\u7840\u5feb\u901f\u4e0a\u624bSTM32\u5f00\u53d1\uff08\u624b\u628a\u624b\u4fdd\u59c6\u7ea7\u6559\u7a0b\uff09<\/a><\/li>\n<li>\u4f7f\u7528\u63a5\u6536\u4e2d\u65ad+\u8d85\u65f6\u5224\u65ad\u5b8c\u6210\u4e0d\u5b9a\u957f\u6570\u636e\u7684\u63a5\u6536\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=fgWATuDHDRlUbl%2Fg3hICMQ%3D%3D.17rUvoe%2FWJMm%2B7tfx2oIKRXl6gPwcojO6L14SFIzVugaccZ6DgBMqb2ffvQwbTw44uSKtJKFsRTHLDuI3zVcVzBgIpvaWgVChiTWI3pRPho%3D\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">STM32\u4e32\u53e3\u63a5\u6536\u4e0d\u5b9a\u957f\u6570\u636e\uff08\u7a7a\u95f2\u4e2d\u65ad+DMA\uff09<\/a><\/li>\n<\/ul>\n<p>\u5f80\u671f\u6559\u7a0b\uff0c\u6709\u5174\u8da3\u7684\u5c0f\u4f19\u4f34\u53ef\u4ee5\u770b\u770b\u3002<\/p>\n<ul>\n<li>ESP8266\u8be6\u89e3\uff0c\u52a9\u4f60\u6210\u4e3a\u7269\u8054\u7f51\u5e94\u7528\u7684\u4e13\u5bb6\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=FmO70%2FsORFxwq7GzCbjKHg%3D%3D.CVJVCAfb4RRWSwl8CSItyd5DVLzDNW8PJnf3Klyj%2FxfaRuOz%2B0NUMYCAaxgEgYWYzEz2JVxFZGMiaT9aawDfvg%3D%3D\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">\u624b\u628a\u624b\u6559\u4f60\u73a9\u8f6cESP8266\uff08\u539f\u7406+\u9a71\u52a8\uff09<\/a><\/li>\n<li>\u5b9e\u73b0\u7269\u8054\u7f51\u6570\u636e\u91c7\u96c6\u4e0e\u8fdc\u7a0b\u76d1\u63a7\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=up9sIS0ZriLaA2oZaPAv7w%3D%3D.hzABS0pRF0CfDlG4QtXqhpBC9vxUzdEoDLBYVH8UwfVAny4YvlNuaOaLI%2Fc7lMwCOolcpS%2B6Ks%2Fy%2Fb8VpsmEg6%2FK6DQ1p00I5HAtfw9n4dE%3D\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">\u5c0f\u9879\u76ee\uff1a\u4f7f\u7528MQTT\u4e0a\u4f20\u6e29\u6e7f\u5ea6\u5230Onenet\u670d\u52a1\u5668<\/a><\/li>\n<li>\u6df1\u5165\u6d45\u51fa\uff0c\u5e2e\u52a9\u60a8\u7406\u89e3\u548c\u5e94\u7528MQTT\u534f\u8bae\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=aMAUkizTVctNFfPJ5uzwgQ%3D%3D.Tas%2BHJZQIj3QsCLj9NvOqQ4AGG94exLEXUgF6yuxP1xxNwxIdhSN43cVspp8Xe1391RuCw70PGZwqGmnLxEFTg%3D%3D\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">\u4e07\u5b57\u731b\u6587\uff1aMQTT\u539f\u7406\u53ca\u6848\u4f8b<\/a><\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th align=\"left\">\u4f5c\u8005\u7b80\u4ecb<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"left\">\u5927\u5bb6\u597d\uff0c\u6211\u662f\u826f\u8bb8\uff0c\u535a\u5ba2\u91cc\u6240\u6709\u7684\u6587\u7ae0\u7686\u4e3a\u6211\u7684\u539f\u521b\u3002<br \/>\u4e0b\u9762\u662f\u6211\u7684\u4e00\u4e9b\u4e2a\u4eba\u4ecb\u7ecd\uff0c\u6b22\u8fce\u4ea4\u4e2a\u670b\u53cb\uff1a<br \/>\u00b7 211\u5de5\u79d1\u7855\u58eb\uff0c\u56fd\u5bb6\u5956\u5b66\u91d1\u83b7\u5f97\u8005\uff1b<br \/>\u00b7 \u6df1\u8015\u5d4c\u5165\u5f0f11\u5e74\uff0c\u524d\u4e16\u754c500\u5f3a\u5916\u4f01\u9ad8\u7ea7\u5d4c\u5165\u5f0f\u5de5\u7a0b\u5e08\uff1b<br \/>\u00b7 \u4e66\u7c4d\u300a\u901f\u5b66Linux\u4f5c\u8005\u300b\uff0c\u673a\u68b0\u5de5\u4e1a\u51fa\u7248\u793e\u4e13\u5bb6\u59d4\u5458\u4f1a\u6210\u5458\uff1b<br \/>\u00b7 \u5168\u7f5160W\u7c89\u4e1d\uff0c\u535a\u5ba2\u5206\u4eab\u5927\u91cf\u539f\u521b\u6210\u4f53\u7cfb\u6587\u7ae0\uff0c\u5168\u7f51\u9605\u8bfb\u91cf\u7d2f\u8ba1\u8d854000\u4e07\uff1b<br \/>\u00b7 \u9760\u81ea\u5a92\u4f53\u8fde\u7eed\u5e74\u5165\u767e\u4e07\uff0c\u9760\u81ea\u5df1\u4e70\u623f\u4e70\u8f66\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6211\u672c\u79d1\u53ca\u7855\u58eb\u90fd\u662f\u5b66\u673a\u68b0\uff0c\u901a\u8fc7\u81ea\u5b66\u6210\u529f\u8fdb\u5165\u4e16\u754c500\u5f3a\u5916\u4f01\u3002\u6211\u5df2\u7ecf\u5c06\u81ea\u5df1\u7684\u5b66\u4e60\u7ecf\u9a8c\u5199\u6210\u4e86\u4e00\u672c\u7535\u5b50\u4e66\uff0c\u8d85\u5343\u4eba\u901a\u8fc7\u6b64\u4e66\u5b66\u4e60\u5e76\u8f6c\u884c\u6210\u529f\u3002\u73b0\u5728\u5c06\u8fd9\u672c\u7535\u5b50\u4e66\u514d\u8d39\u5206\u4eab\u7ed9\u5927\u5bb6\uff0c\u5e0c\u671b\u5bf9\u4f60\u4eec\u6709\u5e2e\u52a9\uff1a<\/p>\n<p>\u7535\u5b50\u4e66\u94fe\u63a5\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=WtcHNVtBzFK3nWvkJ4mhdA%3D%3D.vU6tSSLfcCWX6a5uP1GTrLbqzSO02STCzSRctyX7HpHxrp%2BI%2F60VFA8KWA2cV6bs\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">https:\/\/www.lxlinux.net\/1024.html<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"392\" height=\"836\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfebd\" alt=\"\" title=\"\"><\/p>\n<h2>2. W25Q128\u4ecb\u7ecd<\/h2>\n<h3>2.1 W25Q128\u578b\u53f7\u4ecb\u7ecd<\/h3>\n<p>W25Q128\u662f\u534e\u90a6\u516c\u53f8\u63a8\u51fa\u7684\u4e00\u6b3e\u5bb9\u91cf\u4e3a 128M-bit\uff08\u76f8\u5f53\u4e8e 16M-byte\uff09\u7684 SPI \u63a5\u53e3\u7684 NOR Flash \u82af\u7247\u3002<\/p>\n<p>\u7ed9\u5927\u5bb6\u89e3\u91ca\u4e00\u4e0b\u65b0\u5355\u8bcd\uff1a<\/p>\n<ul>\n<li>NOR Flash\uff1a\u4e00\u79cd\u975e\u6613\u5931\u6027\u5b58\u50a8\u5668\uff0c\u5b83\u53ef\u4ee5\u5728\u65ad\u7535\u6216\u6389\u7535\u540e\u4ecd\u7136\u4fdd\u6301\u5b58\u50a8\u7684\u6570\u636e\uff0c\u56e0\u6b64\u88ab\u5e7f\u6cdb\u5e94\u7528\u4e8e\u957f\u671f\u6570\u636e\u5b58\u50a8\u3002\u5b83\u5177\u6709\u5bb9\u91cf\u5927\uff0c\u53ef\u91cd\u590d\u64e6\u5199\u3001\u6309\u201c\u6247\u533a\/\u5757\u201d\u64e6\u9664\u7684\u7279\u6027\u3002Flash \u662f\u6709\u4e00\u4e2a\u7269\u7406\u7279\u6027\uff1a\u53ea\u80fd\u5199 0 \uff0c\u4e0d\u80fd\u5199 1 \uff0c\u5199 1 \u9760\u64e6\u9664\u3002<\/li>\n<\/ul>\n<p><img decoding=\"async\" width=\"415\" height=\"367\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyk\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<p>\u5b83\u8fd8\u6709\u5f88\u591a\u4e0d\u540c\u5bb9\u91cf\u7684\u597d\u5144\u5f1f\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th align=\"center\">\u578b\u53f7<\/th>\n<th align=\"center\">\u5bb9\u91cf<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"center\">W25Q256<\/td>\n<td align=\"center\">256M bits = 32M bytes<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">W25Q128<\/td>\n<td align=\"center\">128M bits = 16M bytes<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">W25Q64<\/td>\n<td align=\"center\">64M bits = 8M bytes<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">W25Q32<\/td>\n<td align=\"center\">32M bits = 4M bytes<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">W25Q16<\/td>\n<td align=\"center\">16M bits = 2M bytes<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">W25Q80<\/td>\n<td align=\"center\">8M bits = 1M bytes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>2.2 W25Q128\u6a21\u5757\u53c2\u6570\u53ca\u5f15\u811a\u4ecb\u7ecd<\/h3>\n<p>W25Q128 \u7684\u6a21\u5757\u5404\u4e2a\u5382\u5bb6\u505a\u7684\u5404\u6709\u4e0d\u540c\uff0c\u53ea\u662f\u957f\u5f97\u4e0d\u4e00\u6837\u800c\u5df2\uff0c\u4f7f\u7528\u65b9\u5f0f\u3001\u5f15\u811a\u90fd\u662f\u4e00\u6837\u7684\u3002\u4e0b\u9762\u6211\u4ecb\u7ecd\u7684\u662f\u6211\u4eec\u81ea\u7ed8\u7684 W25Q128 \u6a21\u5757\u3002<\/p>\n<p>W25Q128\u53c2\u6570\uff1a<\/p>\n<ul>\n<li>\u4ea7\u54c1\u5bb9\u91cf\uff1a128M-bit\uff0816M-byte\uff09<\/li>\n<li>\u65f6\u949f\u9891\u7387\uff1a&lt;=104MHz<\/li>\n<li>\u5de5\u4f5c\u7535\u538b\uff1a2.7V ~ 3.6V<\/li>\n<li>\u5de5\u4f5c\u6e29\u5ea6\uff1a-40\u2103 ~ +85\u2103<\/li>\n<li>\u652f\u6301 SPI \u63a5\u53e3<\/li>\n<\/ul>\n<p><img decoding=\"async\" width=\"698\" height=\"295\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyl\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<p>\u53c2\u8003\u63a5\u7ebf\u5982\u4e0b\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th align=\"center\">W25Q128<\/th>\n<th align=\"center\">STM32<\/th>\n<th align=\"center\">\u5907\u6ce8<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"center\">VCC<\/td>\n<td align=\"center\">3.3<\/td>\n<td align=\"center\">\u7535\u6e90\u6b63\u6781<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">CS<\/td>\n<td align=\"center\">A4\/B12<\/td>\n<td align=\"center\">\u7247\u9009\u4fe1\u53f7<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">DO<\/td>\n<td align=\"center\">A6\/B14<\/td>\n<td align=\"center\">\u8f93\u51fa<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">GND<\/td>\n<td align=\"center\">G<\/td>\n<td align=\"center\">\u7535\u6e90\u8d1f\u6781<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">CLK<\/td>\n<td align=\"center\">A5\/B13<\/td>\n<td align=\"center\">\u65f6\u949f\u4fe1\u53f7<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">DI<\/td>\n<td align=\"center\">A7\/B15<\/td>\n<td align=\"center\">\u8f93\u5165<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5982\u679c\u4f60\u5bf9\u5f15\u811a\u4ecb\u7ecd\u6709\u70b9\u61f5\uff0c\u6ca1\u5173\u7cfb\uff0c\u770b\u770b\u4e0b\u9762\u7684 SPI \u4ecb\u7ecd\u4f60\u5c31\u660e\u767d\u4e86\u3002<\/p>\n<h3>2.3 W25Q128\u5b58\u50a8\u67b6\u6784<\/h3>\n<p>W25Q128 \u5c06 16M \u7684\u5bb9\u91cf\u5206\u4e3a 256 \u4e2a\u5757\uff08block\uff09\uff0c\u6bcf\u5757 64K \u5b57\u8282\uff1b\u6bcf\u5757\u5206\u4e3a 16 \u4e2a\u6247\u533a\uff08sector\uff09\uff0c\u4e00\u6247\u533a 4K \u5b57\u8282\uff1b\u6bcf\u6247\u533a\u5206\u4e3a 16 \u4e2a\u9875\uff08page\uff09\uff0c\u4e00\u9875 256 \u5b57\u8282\u3002<\/p>\n<p>W25Q128 \u7684\u6700\u5c0f\u64e6\u9664\u5355\u4f4d\u4e3a\u4e00\u4e2a\u6247\u533a\uff0c\u4e5f\u5c31\u662f\u6bcf\u6b21\u5fc5\u987b\u64e6\u9664 4K \u4e2a\u5b57\u8282\u3002\u8fd9\u6837\u6211\u4eec\u9700\u8981\u7ed9 W25Q128 \u5f00\u8f9f\u4e00\u4e2a\u81f3\u5c11 4K \u7684\u7f13\u5b58\u533a\u3002<\/p>\n<p><img decoding=\"async\" width=\"723\" height=\"379\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOym\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<h3>2.4 W25Q128\u5e38\u7528\u6307\u4ee4<\/h3>\n<p>W25Q128 \u6709\u975e\u5e38\u591a\u7684\u6307\u4ee4\uff0c\u8fd9\u91cc\u6211\u4eec\u53ea\u4ecb\u7ecd\u51e0\u4e2a\u6307\u4ee4\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th align=\"center\">\u6307\u4ee4\uff08HEX\uff09<\/th>\n<th align=\"center\">\u540d\u79f0<\/th>\n<th align=\"center\">\u4f5c\u7528<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"center\">0x06<\/td>\n<td align=\"center\">\u5199\u4f7f\u80fd<\/td>\n<td align=\"center\">\u5199\u5165\u6570\u636e\/\u64e6\u9664\u4e4b\u524d\uff0c\u5fc5\u987b\u5148\u53d1\u9001\u8be5\u6307\u4ee4<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">0x05<\/td>\n<td align=\"center\">\u8bfb SR1<\/td>\n<td align=\"center\">\u5224\u5b9a FLASH \u662f\u5426\u5904\u4e8e\u7a7a\u95f2\u72b6\u6001\uff0c\u64e6\u9664\u7528<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">0x03<\/td>\n<td align=\"center\">\u8bfb\u6570\u636e<\/td>\n<td align=\"center\">\u8bfb\u53d6\u6570\u636e<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">0x02<\/td>\n<td align=\"center\">\u9875\u5199<\/td>\n<td align=\"center\">\u5199\u5165\u6570\u636e\uff0c\u6700\u591a\u5199256\u5b57\u8282<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">0x20<\/td>\n<td align=\"center\">\u6247\u533a\u64e6\u9664<\/td>\n<td align=\"center\">\u6247\u533a\u64e6\u9664\u6307\u4ee4\uff0c\u6700\u5c0f\u64e6\u9664\u5355\u4f4d<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5177\u4f53\u5de5\u4f5c\u65f6\u5e8f\u5982\u4e0b\uff1a<\/p>\n<p>\u5199\u4f7f\u80fd (06H)<\/p>\n<p>\u6267\u884c\u9875\u5199\uff0c\u6247\u533a\u64e6\u9664\uff0c\u5757\u64e6\u9664\uff0c\u7247\u64e6\u9664\uff0c\u5199\u72b6\u6001\u5bc4\u5b58\u5668\u7b49\u6307\u4ee4\u524d\uff0c\u9700\u8981\u5199\u4f7f\u80fd\u3002<\/p>\n<p>\u62c9\u4f4e CS \u7247\u9009 \u2192 \u53d1\u9001 06H \u2192 \u62c9\u9ad8 CS \u7247\u9009<\/p>\n<p>\u8bfbSR1\uff0805H\uff09<\/p>\n<p>\u62c9\u4f4e CS \u7247\u9009 \u2192 \u53d1\u9001 05H \u2192 \u8fd4\u56deSR1\u7684\u503c \u2192 \u62c9\u9ad8 CS \u7247\u9009<\/p>\n<p>\u8bfb\u6570\u636e\uff0803H\uff09<\/p>\n<p>\u62c9\u4f4e CS \u7247\u9009 \u2192 \u53d1\u9001 03H \u2192 \u53d1\u900124\u4f4d\u5730\u5740 \u2192 \u8bfb\u53d6\u6570\u636e\uff081~n\uff09\u2192 \u62c9\u9ad8 CS \u7247\u9009<\/p>\n<p>\u9875\u5199 (02H)<\/p>\n<p>\u9875\u5199\u547d\u4ee4\u6700\u591a\u53ef\u4ee5\u5411FLASH\u4f20\u8f93256\u4e2a\u5b57\u8282\u7684\u6570\u636e\u3002<\/p>\n<p>\u62c9\u4f4e CS \u7247\u9009 \u2192 \u53d1\u9001 02H \u2192 \u53d1\u900124\u4f4d\u5730\u5740 \u2192 \u53d1\u9001\u6570\u636e\uff081~n\uff09\u2192 \u62c9\u9ad8 CS \u7247\u9009<\/p>\n<p>\u6247\u533a\u64e6\u9664\uff0820H\uff09<\/p>\n<p>\u5199\u5165\u6570\u636e\u524d\uff0c\u68c0\u67e5\u5185\u5b58\u7a7a\u95f4\u662f\u5426\u5168\u90e8\u90fd\u662f 0xFF \uff0c\u4e0d\u6ee1\u8db3\u9700\u64e6\u9664\u3002<\/p>\n<p>\u62c9\u4f4e CS \u7247\u9009 \u2192 \u53d1\u9001 20H\u2192 \u53d1\u900124\u4f4d\u5730\u5740 \u2192 \u62c9\u9ad8 CS \u7247\u9009<\/p>\n<h3>2.5 W25Q128\u72b6\u6001\u5bc4\u5b58\u5668<\/h3>\n<p>W25Q128 \u4e00\u5171\u6709 3 \u4e2a\u72b6\u6001\u5bc4\u5b58\u5668\uff0c\u5b83\u4eec\u7684\u4f5c\u7528\u662f\u8ddf\u8e2a\u82af\u7247\u7684\u72b6\u6001\u3002<\/p>\n<p>\u8fd9\u91cc\u6211\u4eec\u53ea\u4ecb\u7ecd\u5e38\u7528\u7684\u72b6\u6001\u5bc4\u5b58\u5668 1\uff1a<\/p>\n<p><img decoding=\"async\" width=\"723\" height=\"355\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyn\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<p>\u6211\u4e0d\u8fc7\u591a\u4ecb\u7ecd\u4e86\uff0c\u611f\u5174\u8da3\u7684\u5c0f\u4f19\u4f34\u53ef\u4ee5\u53bb\u770b\u82af\u7247\u624b\u518c\u3002<\/p>\n<p>\u6211\u4eec\u9700\u8981\u8bb0\u4f4f\u7684\u662f\u5728\u72b6\u6001\u5bc4\u5b58\u5668 1 \u4e2d\uff1a<\/p>\n<p>BUSY\uff1a\u6307\u793a\u5f53\u524d\u7684\u72b6\u6001\uff0c0 \u8868\u793a\u7a7a\u95f2\uff1b1 \u8868\u793a\u5fd9\u788c\u3002<\/p>\n<p>WEL\uff1a\u5199\u4f7f\u80fd\u9501\u5b9a\uff0c\u4e3a 1 \u65f6\uff0c\u53ef\u4ee5\u64cd\u4f5c\u9875\/\u6247\u533a\/\u5757\uff1b\u4e3a 0 \u65f6\uff0c\u5199\u7981\u6b62\u3002<\/p>\n<h2>3. SPI\u4ecb\u7ecd<\/h2>\n<p>SPI\uff08Serial Peripheral Interface\uff09\u4e32\u884c\u5916\u8bbe\u63a5\u53e3\uff0c\u662f\u4e00\u79cd\u9ad8\u901f\u3001\u5168\u53cc\u5de5\u3001\u540c\u6b65\u7684\u901a\u4fe1\u603b\u7ebf\uff0c\u4ec5\u4f7f\u7528\u56db\u6839\u7ebf\u6765\u8fde\u63a5\u82af\u7247\u7684\u7ba1\u811a\uff0c\u8282\u7701\u4e86\u7ba1\u811a\u548cPCB\u5e03\u5c40\u7a7a\u95f4\u3002\u7531\u4e8e\u5176\u7b80\u5355\u6613\u7528\u7684\u7279\u6027\uff0c\u8d8a\u6765\u8d8a\u591a\u7684\u82af\u7247\u96c6\u6210\u4e86SPI\u901a\u4fe1\u534f\u8bae\u3002<\/p>\n<h3>3.1 SPI\u7269\u7406\u67b6\u6784<\/h3>\n<p>SPI \u5de5\u4f5c\u6a21\u5f0f\uff1a<\/p>\n<p>SPI \u901a\u4fe1\u5206\u4e3a\u4e3b\u8bbe\u5907\uff08Master\uff09\u548c\u4ece\u8bbe\u5907\uff08Slave\uff09\u3002\u4e00\u4e2a\u5b8c\u6574\u7684 SPI \u901a\u4fe1\u7cfb\u7edf\u9700\u8981\u5305\u542b\u4e00\u4e2a\u4e3b\u8bbe\u5907\u548c\u4e00\u4e2a\u6216\u591a\u4e2a\u4ece\u8bbe\u5907\u3002\u4e3b\u8bbe\u5907\u63d0\u4f9b\u65f6\u949f\u4fe1\u53f7\uff0c\u4ece\u8bbe\u5907\u63a5\u6536\u65f6\u949f\u4fe1\u53f7\u3002\u6240\u6709\u7684\u8bfb\u5199\u64cd\u4f5c\u90fd\u7531\u4e3b\u8bbe\u5907\u53d1\u8d77\u3002\u5f53\u5b58\u5728\u591a\u4e2a\u4ece\u8bbe\u5907\u65f6\uff0c\u901a\u8fc7\u5404\u81ea\u7684\u7247\u9009\u4fe1\u53f7\u8fdb\u884c\u7ba1\u7406\u3002<\/p>\n<p>SPI \u662f\u5168\u53cc\u5de5\uff0c\u5e76\u4e14\u6ca1\u6709\u5b9a\u4e49\u901f\u5ea6\u9650\u5236\uff0c\u4e00\u822c\u7684\u5b9e\u73b0\u901a\u5e38\u80fd\u8fbe\u5230\u751a\u81f3\u8d85\u8fc7 10Mbps\u3002<\/p>\n<p>SPI \u4fe1\u53f7\u7ebf\uff1a<\/p>\n<p>SPI \u4e00\u822c\u4f7f\u7528\u56db\u6761\u4fe1\u53f7\u7ebf\u901a\u4fe1\uff1a<\/p>\n<ul>\n<li>SCLK\uff08Serial Clock\uff09\uff1a\u65f6\u949f\u4fe1\u53f7\u7ebf\uff0c\u7531\u4e3b\u8bbe\u5907\u63d0\u4f9b\u5e76\u9a71\u52a8\u6574\u4e2a\u901a\u4fe1\u8fc7\u7a0b\u3002<\/li>\n<li>MOSI\uff08Master Output\uff0cSlave Input\uff09\uff1a\u4e3b\u8bbe\u5907\u8f93\u51fa\u3001\u4ece\u8bbe\u5907\u8f93\u5165\u7ebf\uff0c\u4e3b\u8bbe\u5907\u5411\u4ece\u8bbe\u5907\u53d1\u9001\u6570\u636e\u3002<\/li>\n<li>MISO\uff08Master Input\uff0cSlave Output\uff09\uff1a\u4e3b\u8bbe\u5907\u8f93\u5165\u3001\u4ece\u8bbe\u5907\u8f93\u51fa\u7ebf\uff0c\u4ece\u8bbe\u5907\u5411\u4e3b\u8bbe\u5907\u53d1\u9001\u6570\u636e\u3002<\/li>\n<li>SS\/CS\uff08Slave Select \/ Chip Select\uff09\uff1a\u7247\u9009\u4fe1\u53f7\u7ebf\uff0c\u7531\u4e3b\u8bbe\u5907\u63a7\u5236\u4ece\u8bbe\u5907\u7684\u9009\u4e2d\u72b6\u6001\u3002\u62c9\u4f4e\u8868\u793a\u9009\u4e2d\u3002<\/li>\n<\/ul>\n<p>\u793a\u610f\u56fe\u5982\u4e0b\uff1a<\/p>\n<p><img decoding=\"async\" width=\"723\" height=\"562\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyo\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<h3>3.2 SPI\u5de5\u4f5c\u539f\u7406<\/h3>\n<p>SPI \u901a\u4fe1\u4e2d\uff0c\u4e3b\u673a\u548c\u4ece\u673a\u90fd\u6709\u4e00\u4e2a\u4e32\u884c\u79fb\u4f4d\u5bc4\u5b58\u5668\u3002\u4e3b\u673a\u901a\u8fc7\u5411\u81ea\u5df1\u7684 SPI \u4e32\u884c\u5bc4\u5b58\u5668\u5199\u5165\u4e00\u4e2a\u5b57\u8282\u6765\u53d1\u8d77\u4f20\u8f93\u3002<\/p>\n<ol>\n<li>\u9996\u5148\uff0c\u62c9\u4f4e\u76f8\u5e94\u7684 SS \u4fe1\u53f7\u7ebf\uff0c\u8868\u793a\u4e0e\u7279\u5b9a\u7684\u4ece\u673a\u8fdb\u884c\u901a\u4fe1\u3002<\/li>\n<li>\u4e3b\u673a\u901a\u8fc7\u53d1\u9001 SCLK \u65f6\u949f\u4fe1\u53f7\u544a\u8bc9\u4ece\u673a\u8fdb\u884c\u6570\u636e\u7684\u8bfb\u5199\u64cd\u4f5c\u3002<\/li>\n<li>\u6ce8\u610f\uff0cSCLK \u65f6\u949f\u4fe1\u53f7\u53ef\u4ee5\u662f\u4f4e\u7535\u5e73\u6709\u6548\u6216\u9ad8\u7535\u5e73\u6709\u6548\uff0c\u56e0\u4e3aSPI\u6709\u4e0d\u540c\u7684\u6a21\u5f0f\uff08\u4e0b\u6587\u5c06\u4ecb\u7ecd\uff09\u3002<\/li>\n<li>\u4e3b\u673a\u5c06\u8981\u53d1\u9001\u7684\u6570\u636e\u5199\u5165\u53d1\u9001\u6570\u636e\u7f13\u51b2\u533a\uff0c\u7136\u540e\u901a\u8fc7\u79fb\u4f4d\u5bc4\u5b58\u5668\u9010\u4f4d\u5730\u5c06\u6570\u636e\u4f20\u8f93\u7ed9\u4ece\u673a\u7684\u4e32\u884c\u79fb\u4f4d\u5bc4\u5b58\u5668\uff0c\u4f7f\u7528 MOSI \u4fe1\u53f7\u7ebf\u8fdb\u884c\u4f20\u8f93\u3002\u540c\u65f6\uff0c\u4ece\u673a\u7684 MISO \u63a5\u53e3\u63a5\u6536\u5230\u7684\u6570\u636e\u4e5f\u7ecf\u8fc7\u79fb\u4f4d\u5bc4\u5b58\u5668\u4e00\u4f4d\u4e00\u4f4d\u5730\u79fb\u5230\u63a5\u6536\u7f13\u51b2\u533a\u3002<\/li>\n<li>\u4ece\u673a\u4e5f\u901a\u8fc7 MISO \u4fe1\u53f7\u7ebf\u5c06\u81ea\u5df1\u4e32\u884c\u79fb\u4f4d\u5bc4\u5b58\u5668\u4e2d\u7684\u5185\u5bb9\u8fd4\u56de\u7ed9\u4e3b\u673a\u3002\u540c\u65f6\uff0c\u4ece\u673a\u901a\u8fc7 MOSI \u4fe1\u53f7\u7ebf\u63a5\u6536\u4e3b\u673a\u53d1\u9001\u7684\u6570\u636e\u3002\u8fd9\u6837\uff0c\u4e24\u4e2a\u79fb\u4f4d\u5bc4\u5b58\u5668\u4e2d\u7684\u5185\u5bb9\u5c31\u88ab\u4ea4\u6362\u3002<\/li>\n<\/ol>\n<p>SPI\u901a\u4fe1\u53ea\u6709\u4e3b\u6a21\u5f0f\u548c\u4ece\u6a21\u5f0f\uff0c\u6ca1\u6709\u660e\u786e\u7684\u8bfb\u548c\u5199\u64cd\u4f5c\u4e4b\u5206\u3002\u5b9e\u9645\u4e0a\uff0c\u5916\u8bbe\u7684\u5199\u64cd\u4f5c\u548c\u8bfb\u64cd\u4f5c\u662f\u540c\u6b65\u5b8c\u6210\u7684\u3002\u5728SPI\u901a\u4fe1\u4e2d\uff0c\u53d1\u9001\u4e00\u4e2a\u6570\u636e\u5fc5\u7136\u4f1a\u6536\u5230\u4e00\u4e2a\u6570\u636e\uff1b\u5982\u679c\u8981\u63a5\u6536\u4e00\u4e2a\u6570\u636e\uff0c\u5c31\u5fc5\u987b\u5148\u53d1\u9001\u4e00\u4e2a\u6570\u636e\u3002<\/p>\n<p>\u5982\u679c\u53ea\u8fdb\u884c\u5199\u64cd\u4f5c\uff0c\u4e3b\u673a\u53ef\u4ee5\u5ffd\u7565\u4ece\u8bbe\u5907\u4f20\u8f93\u8fc7\u6765\u7684\u5b57\u8282\uff0c\u56e0\u4e3a\u4e3b\u673a\u4e0d\u9700\u8981\u63a5\u6536\u6570\u636e\u3002<\/p>\n<p>\u5982\u679c\u4e3b\u673a\u8981\u8bfb\u53d6\u4ece\u8bbe\u5907\u7684\u4e00\u4e2a\u5b57\u8282\uff0c\u90a3\u4e48\u4e3b\u673a\u5fc5\u987b\u53d1\u9001\u4e00\u4e2a\u7a7a\u5b57\u8282\u6765\u5f15\u53d1\u4ece\u8bbe\u5907\u7684\u4f20\u8f93\u3002<\/p>\n<p><img decoding=\"async\" width=\"723\" height=\"256\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyp\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<h3>3.3 SPI\u5de5\u4f5c\u6a21\u5f0f<\/h3>\n<p>SPI \u67094\u79cd\u4e0d\u540c\u7684\u5de5\u4f5c\u6a21\u5f0f\u3002<\/p>\n<p>\u4ece\u8bbe\u5907\u7684 SPI \u6a21\u5f0f\u662f\u5382\u5bb6\u8bbe\u5b9a\u7684\uff0c\u4e0d\u53ef\u53d8\u3002\u4f46\u4e3b\u4ece\u8bbe\u5907\u5fc5\u987b\u5728\u540c\u4e00\u5de5\u4f5c\u6a21\u5f0f\u4e0b\u624d\u80fd\u6b63\u5e38\u5de5\u4f5c\u3002\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u8bbe\u7f6e\u4e3b\u8bbe\u5907\u7684 SPI \u6a21\u5f0f\u3002<\/p>\n<p>\u90a3\u600e\u4e48\u8bbe\u7f6e\u5462\uff1f\u901a\u8fc7 CPOL\uff08\u65f6\u949f\u6781\u6027\uff09\u548c CPHA\uff08\u65f6\u949f\u76f8\u4f4d\uff09\u6765\u63a7\u5236\uff0c\u5177\u4f53\u5982\u4e0b\uff1a<\/p>\n<p>CPOL\uff08\u65f6\u949f\u6781\u6027\uff09\u5b9a\u4e49\u4e86\u65f6\u949f\u7a7a\u95f2\u72b6\u6001\u7535\u5e73\uff1a<\/p>\n<ul>\n<li>CPOL=0\uff0c\u8868\u793a\u5f53 SCLK=0 \u65f6\u5904\u4e8e\u7a7a\u95f2\u6001\uff0c\u6240\u4ee5\u6709\u6548\u72b6\u6001\u5c31\u662f SCLK \u5904\u4e8e\u9ad8\u7535\u5e73\u65f6\u3002<\/li>\n<li>CPOL=1\uff0c\u8868\u793a\u5f53 SCLK=1 \u65f6\u5904\u4e8e\u7a7a\u95f2\u6001\uff0c\u6240\u4ee5\u6709\u6548\u72b6\u6001\u5c31\u662f SCLK \u5904\u4e8e\u4f4e\u7535\u5e73\u65f6\u3002<\/li>\n<\/ul>\n<p>CPHA\uff08\u65f6\u949f\u76f8\u4f4d\uff09\u5b9a\u4e49\u6570\u636e\u7684\u91c7\u96c6\u65f6\u95f4\uff1a<\/p>\n<ul>\n<li>CPHA=0\uff0cSCLK \u7684\u7b2c\u4e00\u4e2a\uff08\u5947\u6570\uff09\u8fb9\u6cbf\u8fdb\u884c\u6570\u636e\u4f4d\u91c7\u6837\u3002\u6570\u636e\u5728\u7b2c\u4e00\u4e2a\u65f6\u949f\u8fb9\u6cbf\u88ab\u9501\u5b58\uff0c\u5728\u7b2c\u4e8c\u4e2a\u8fb9\u6cbf\u53d1\u9001\u6570\u636e\u3002<\/li>\n<li>CPHA=1\uff0cSCLK \u7684\u7b2c\u4e8c\u4e2a\uff08\u5076\u6570\uff09\u8fb9\u6cbf\u8fdb\u884c\u6570\u636e\u4f4d\u91c7\u6837\u3002\u6570\u636e\u5728\u7b2c\u4e8c\u4e2a\u65f6\u949f\u8fb9\u6cbf\u88ab\u9501\u5b58\uff0c\u5728\u7b2c\u4e00\u4e2a\u8fb9\u6cbf\u53d1\u9001\u6570\u636e\u3002<\/li>\n<\/ul>\n<p>\u603b\u7ed3\u5982\u4e0b\u8868\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th align=\"center\">SPI \u6a21\u5f0f<\/th>\n<th align=\"center\">CPOL<\/th>\n<th align=\"center\">CPHA<\/th>\n<th align=\"center\">\u7a7a\u95f2\u65f6 SCK \u65f6\u949f<\/th>\n<th align=\"center\">\u91c7\u6837\u8fb9\u6cbf<\/th>\n<th align=\"center\">\u91c7\u6837\u65f6\u523b<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"center\">0<\/td>\n<td align=\"center\">0<\/td>\n<td align=\"center\">0<\/td>\n<td align=\"center\">\u4f4e\u7535\u5e73<\/td>\n<td align=\"center\">\u4e0a\u5347\u6cbf<\/td>\n<td align=\"center\">\u5947\u6570\u8fb9\u6cbf<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">1<\/td>\n<td align=\"center\">0<\/td>\n<td align=\"center\">1<\/td>\n<td align=\"center\">\u4f4e\u7535\u5e73<\/td>\n<td align=\"center\">\u4e0b\u964d\u6cbf<\/td>\n<td align=\"center\">\u5076\u6570\u8fb9\u6cbf<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">2<\/td>\n<td align=\"center\">1<\/td>\n<td align=\"center\">0<\/td>\n<td align=\"center\">\u9ad8\u7535\u5e73<\/td>\n<td align=\"center\">\u4e0b\u964d\u6cbf<\/td>\n<td align=\"center\">\u5947\u6570\u8fb9\u6cbf<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">3<\/td>\n<td align=\"center\">1<\/td>\n<td align=\"center\">1<\/td>\n<td align=\"center\">\u9ad8\u7535\u5e73<\/td>\n<td align=\"center\">\u4e0a\u5347\u6cbf<\/td>\n<td align=\"center\">\u5076\u6570\u8fb9\u6cbf<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u56db\u4e2a\u6a21\u5f0f\u7684\u65f6\u5e8f\u56fe\u5982\u4e0b\uff0c\u65b9\u4fbf\u5927\u5bb6\u7406\u89e3\u3002\u7eff\u7ebf\u8868\u793a\u5f00\u59cb\u4e0e\u7ed3\u675f\uff0c\u9ec4\u7ebf\u8868\u793a\u6570\u636e\u91c7\u6837\uff0c\u84dd\u7ebf\u8868\u793a\u6570\u636e\u53d1\u9001\u3002<\/p>\n<p>1.\u6a21\u5f0f0\uff08\u5e38\u7528\uff09CPOL = 0\uff0cCPHA = 0\u3002<\/p>\n<p>\u7a7a\u95f2\u65f6 SCLK \u4e3a\u4f4e\u7535\u5e73\uff0c\u91c7\u6837\u65f6\u523b\u4e3a\u7b2c\u4e00\u4e2a\u8fb9\u6cbf\uff0c\u5373\u4e0a\u5347\u6cbf\u3002<\/p>\n<p><img decoding=\"async\" width=\"723\" height=\"253\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyq\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<p>2.\u6a21\u5f0f1CPOL = 0\uff0cCPHA = 1\u3002<\/p>\n<p>\u7a7a\u95f2\u65f6 SCLK \u4e3a\u4f4e\u7535\u5e73\uff0c\u91c7\u6837\u65f6\u523b\u4e3a\u7b2c\u4e8c\u4e2a\u8fb9\u6cbf\uff0c\u5373\u4e0b\u964d\u6cbf\u3002<\/p>\n<p><img decoding=\"async\" width=\"723\" height=\"227\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyr\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<p>3.\u6a21\u5f0f2\uff0cCPOL = 1\uff0cCPHA = 0\u3002<\/p>\n<p>\u7a7a\u95f2\u65f6 SCLK \u4e3a\u9ad8\u7535\u5e73\uff0c\u91c7\u6837\u65f6\u523b\u4e3a\u7b2c\u4e00\u4e2a\u8fb9\u6cbf\uff0c\u5373\u4e0a\u5347\u6cbf\u3002<\/p>\n<p><img decoding=\"async\" width=\"723\" height=\"228\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOys\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<p>4.\u6a21\u5f0f3\uff08\u5e38\u7528\uff09\uff0cCPOL = 1\uff0cCPHA = 1\u3002<\/p>\n<p>\u7a7a\u95f2\u65f6 SCLK \u4e3a\u9ad8\u7535\u5e73\uff0c\u91c7\u6837\u65f6\u523b\u4e3a\u7b2c\u4e8c\u4e2a\u8fb9\u6cbf\uff0c\u5373\u4e0a\u5347\u6cbf\u3002<\/p>\n<p><img decoding=\"async\" width=\"723\" height=\"247\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyt\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<h2>4. \u7f16\u7a0b\u5b9e\u6218<\/h2>\n<p>\u5b9e\u6218\u76ee\u6807\uff1a\u4f7f\u7528 SPI \u901a\u8baf\u8bfb\u5199 W25Q128 \u6a21\u5757\u3002<\/p>\n<h3>4.1 \u786c\u4ef6\u63a5\u7ebf<\/h3>\n<p>\u672c\u6559\u7a0b\u4f7f\u7528\u7684\u786c\u4ef6\u5982\u4e0b\uff1a<\/p>\n<ul>\n<li>W25Q128 \u6a21\u5757<\/li>\n<li>\u5355\u7247\u673a\uff1aSTM32F103C8T6<\/li>\n<li>\u4e32\u53e3\uff1aUSB \u8f6c TTL<\/li>\n<li>\u70e7\u5f55\u5668\uff1aST-LINK V2<\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th align=\"center\">W25Q128<\/th>\n<th align=\"center\">STM32<\/th>\n<th align=\"center\">USB \u8f6c TTL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"center\">VCC<\/td>\n<td align=\"center\">3.3<\/td>\n<td align=\"center\"> <\/td>\n<\/tr>\n<tr>\n<td align=\"center\">CS<\/td>\n<td align=\"center\">A4<\/td>\n<td align=\"center\"> <\/td>\n<\/tr>\n<tr>\n<td align=\"center\">CLK<\/td>\n<td align=\"center\">A5<\/td>\n<td align=\"center\"> <\/td>\n<\/tr>\n<tr>\n<td align=\"center\">DO<\/td>\n<td align=\"center\">A6<\/td>\n<td align=\"center\"> <\/td>\n<\/tr>\n<tr>\n<td align=\"center\">DI<\/td>\n<td align=\"center\">A7<\/td>\n<td align=\"center\"> <\/td>\n<\/tr>\n<tr>\n<td align=\"center\"> <\/td>\n<td align=\"center\">A10<\/td>\n<td align=\"center\">TX<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"> <\/td>\n<td align=\"center\">A9<\/td>\n<td align=\"center\">RX<\/td>\n<\/tr>\n<tr>\n<td align=\"center\"> <\/td>\n<td align=\"center\">G<\/td>\n<td align=\"center\">GND<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u70e7\u5f55\u7684\u65f6\u5019\u63a5\u7ebf\u5982\u4e0b\u8868\uff0c\u5982\u679c\u4e0d\u4f1a\u70e7\u5f55\u7684\u8bdd\u53ef\u4ee5\u770b\u6211\u4e4b\u524d\u7684\u6587\u7ae0\u3010<a href=\"https:\/\/link.segmentfault.com\/?enc=Gp46p9yWNZgICfAuUtedRg%3D%3D.fnCY1OriyZeh1GNOnyYSdSYhIL1oqAlbrUWQAeylR%2BzioCS3q4IFQUFT0jOaJyZDWGqkdJ1vePvp29EuG30j99%2BIpJJOZs0T07H283x7zq0%3D\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">STM32\u4e0b\u8f7d\u7a0b\u5e8f\u7684\u4e94\u79cd\u65b9\u6cd5<\/a>\u3011\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th align=\"center\">ST-Link V2<\/th>\n<th align=\"center\">STM32<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td align=\"center\">SWCLK<\/td>\n<td align=\"center\">SWCLK<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">SWDIO<\/td>\n<td align=\"center\">SWDIO<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">GND<\/td>\n<td align=\"center\">GND<\/td>\n<\/tr>\n<tr>\n<td align=\"center\">3.3V<\/td>\n<td align=\"center\">3V3<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u63a5\u597d\u5982\u4e0b\u56fe\u3002\u5f00\u53d1\u677f\u4f7f\u7528\u7684\u662f\u6211\u4eec\u81ea\u7ed8\u7684\u677f\u5b50\u3002\u5927\u5bb6\u4e5f\u53ef\u4ee5\u7528\u81ea\u5df1\u7684\u677f\u5b50\uff0c\u53ea\u8981\u662f STM32F103C8T6 \u4e3b\u63a7\u82af\u7247\u5c31\u884c\u3002<\/p>\n<p><img decoding=\"async\" width=\"723\" height=\"519\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyu\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<h3>4.2 SPI\u521d\u59cb\u5316<\/h3>\n<p>SPI \u7684\u5de5\u4f5c\u6a21\u5f0f\u6211\u4eec\u914d\u7f6e\u4e3a 0\uff0c\u5373 CPOL = 0\uff0cCPHA = 0\u3002<\/p>\n<p>STM32F1\u7cfb\u5217\u7684 SPI \u63a5\u53e3\u6709\u4e24\u4e2a\uff0cSPI1 \u548c SPI2\uff0c\u8fd9\u91cc\u6211\u4eec\u9009\u62e9 SPI1\uff0c\u5f15\u811a\u5bf9\u5e94\u5173\u7cfb\u5982\u4e0b\uff1a<\/p>\n<p><img decoding=\"async\" width=\"723\" height=\"478\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyv\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<pre><code class=\"c\">void SPI1_Init(void)\n{\n    hspi1.Instance = SPI1;\n    hspi1.Init.Mode = SPI_MODE_MASTER;\n    hspi1.Init.Direction = SPI_DIRECTION_2LINES;\n    hspi1.Init.DataSize = SPI_DATASIZE_8BIT;\n    hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;              \/* CPOL = 0 *\/\n    hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;                  \/* CPHA = 0 *\/\n    hspi1.Init.NSS = SPI_NSS_SOFT;\n    hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;\n    hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;\n    hspi1.Init.TIMode = SPI_TIMODE_DISABLE;\n    hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;\n    hspi1.Init.CRCPolynomial = 10;\n    HAL_SPI_Init(&amp;hspi1);\n}\n\nvoid HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)\n{\n    GPIO_InitTypeDef GPIO_InitStruct;\n    if(spiHandle-&gt;Instance==SPI1)\n    {\n    __HAL_RCC_SPI1_CLK_ENABLE();                            \/* SPI1\u65f6\u949f\u4f7f\u80fd *\/\n\n    __HAL_RCC_GPIOA_CLK_ENABLE();\n    \/*\n        PA4     ------&gt; SPI1_CS\n        PA5     ------&gt; SPI1_SCK\n        PA6     ------&gt; SPI1_MISO\n        PA7     ------&gt; SPI1_MOSI\n    *\/\n\n    GPIO_InitStruct.Pin = W25Q128_CS_GPIO_PIN;\n    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\n    HAL_GPIO_Init(W25Q128_CS_GPIO_PORT, &amp;GPIO_InitStruct);\n\n    GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;\n    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\n    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;\n    HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct);\n\n    GPIO_InitStruct.Pin = GPIO_PIN_6;\n    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;\n    GPIO_InitStruct.Pull = GPIO_NOPULL;\n    HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct);\n    }\n}<\/code><\/pre>\n<h3>4.3 SPI\u8bfb\u5199\u4e00\u4e2a\u5b57\u8282<\/h3>\n<p>\u6211\u4eec\u5229\u7528 HAL \u5e93\u7684 SPI \u6570\u636e\u53d1\u9001\u548c\u63a5\u6536\u51fd\u6570 <code>HAL_SPI_TransmitReceive<\/code> \u6765\u8bfb\u5199\u4e00\u4e2a\u5b57\u8282\u3002<\/p>\n<p>\u51fd\u6570\u539f\u578b\uff1a<code>HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)<\/code>\u3002<\/p>\n<p>\u53c2\u6570\u8bf4\u660e\uff1a<\/p>\n<ul>\n<li>hspi\uff1a\u6307\u5411SPI\u5916\u8bbe\u7684\u53e5\u67c4\uff08handle\uff09\u3002<\/li>\n<li>pTxData\uff1a\u8981\u53d1\u9001\u7684\u6570\u636e\u7f13\u51b2\u533a\u6307\u9488\u3002<\/li>\n<li>pRxData\uff1a\u63a5\u6536\u6570\u636e\u7684\u7f13\u51b2\u533a\u6307\u9488\u3002<\/li>\n<li>Size\uff1a\u8981\u53d1\u9001\/\u63a5\u6536\u7684\u6570\u636e\u5b57\u8282\u6570\u3002<\/li>\n<li>Timeout\uff1a\u8d85\u65f6\u65f6\u95f4\uff0c\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u3002<\/li>\n<\/ul>\n<p>\u6839\u636e SPI \u7684\u5de5\u4f5c\u539f\u7406\uff0c\u6211\u4eec\u53d1\u9001\u4e00\u4e2a\u5b57\u8282\u7684 <code>data<\/code>\uff0c\u5f97\u5230\u4e00\u4e2a\u5b57\u8282\u7684 <code>rec_data<\/code>\u3002\u540e\u7eed\u5982\u679c\u6211\u4eec\u53ea\u9700\u8981\u8bfb\u53d6\u4e00\u4e2a\u5b57\u8282\uff0c\u5c31\u53d1\u9001\u4e00\u4e2a\u65e0\u610f\u4e49\u7684 0xFF\u3002<\/p>\n<pre><code class=\"c\">uint8_t read_write_one_byte(uint8_t data)\n{\n    uint8_t rec_data = 0;\n    HAL_SPI_TransmitReceive(&amp;hspi1, &amp;data, &amp;rec_data, 1, 1000);\n    return rec_data;\n}<\/code><\/pre>\n<h3>4.4 W25Q128\u521d\u59cb\u5316<\/h3>\n<p>\u521d\u59cb\u5316\u6211\u4eec\u505a\u4e2a\u5c0f\u68c0\u6d4b\uff0c\u786e\u4fdd\u8fd9\u4e2a\u82af\u7247\u662f W25Q128\uff0c\u800c\u4e0d\u662f W25Q64 \u6216\u8005 W25Q32\u3002W25Q128 \u7684\u82af\u7247\u53f7\u662f 0XEF17\uff0c\u4ece\u54ea\u6765\u7684\u5462\uff0c\u5f53\u7136\u662f\u82af\u7247\u624b\u518c\u5566\u3002<\/p>\n<pre><code class=\"c\">void w25q128_init(void)\n{\n    uint16_t flash_type;\n    read_write_one_byte(0xFF);                      \/* \u6e05\u9664DR\u7684\u4f5c\u7528 *\/\n    W25Q128_CS(1);                                  \/* \u62c9\u9ad8\u7247\u9009 *\/\n    flash_type = w25q128_read_id();                 \/* \u8bfb\u53d6FLASH ID. *\/\n    if (flash_type == 0XEF17)                       \/* FLASH\u82af\u7247\u53f70XEF17 *\/\n        printf(&quot;\u68c0\u6d4b\u5230W25Q128\u82af\u7247\/r\/n&quot;);\n}\n\nuint16_t w25q128_read_id(void)\n{\n    uint16_t deviceid;\n\n    W25Q128_CS(0);                                  \/* \u62c9\u4f4e\u7247\u9009 *\/\n    read_write_one_byte(FLASH_ManufactDeviceID);    \/* \u53d1\u9001\u8bfb ID \u547d\u4ee4 0x90 *\/\n    read_write_one_byte(0);                         \/* \u5199\u5165\u4e09\u4e2a0 *\/\n    read_write_one_byte(0);\n    read_write_one_byte(0);\n    deviceid = read_write_one_byte(0xFF) &lt;&lt; 8;      \/* \u8bfb\u53d6\u9ad88\u4f4d\u5b57\u8282 *\/\n    deviceid |= read_write_one_byte(0xFF);          \/* \u8bfb\u53d6\u4f4e8\u4f4d\u5b57\u8282 *\/\n    W25Q128_CS(1);                                  \/* \u62c9\u9ad8\u7247\u9009 *\/\n\n    return deviceid;\n}<\/code><\/pre>\n<h3>4.5 W25Q128\u7b49\u5f85\u7a7a\u95f2<\/h3>\n<p>\u524d\u9762\u6211\u4eec\u63d0\u5230\u72b6\u6001\u5bc4\u5b58\u5668 1 \u4e2d BUSY \u662f\u6307\u793a\u5f53\u524d\u7684\u72b6\u6001\uff0c0 \u8868\u793a\u7a7a\u95f2\uff1b1 \u8868\u793a\u5fd9\u788c\u3002<\/p>\n<p>\u6240\u4ee5\u6211\u4eec\u8bfb\u53d6 W25Q128 \u7684\u72b6\u6001\u5bc4\u5b58\u5668 1 \u7684\u503c\uff0c<\/p>\n<pre><code class=\"c\">static void w25q128_wait_busy(void)\n{\n    while ((w25q128_rd_sr1() &amp; 0x01) == 0x01);      \/* \u7b49\u5f85BUSY\u4f4d\u4e3a0 *\/\n}\n\nuint8_t w25q128_rd_sr1(void)\n{\n    uint8_t rec_data = 0;\n\n    W25Q128_CS(0);                                 \/* \u62c9\u4f4e\u7247\u9009 *\/\n    read_write_one_byte(FLASH_ReadStatusReg1);     \/* \u8bfb\u72b6\u6001\u5bc4\u5b58\u56681 0x05 *\/\n    rec_data = read_write_one_byte(0xFF);\n    W25Q128_CS(1);                                 \/* \u62c9\u9ad8\u7247\u9009 *\/\n\n    return rec_data;\n}<\/code><\/pre>\n<h3>4.6 W25Q128\u5199\u4f7f\u80fd<\/h3>\n<p>\u5199\u5165\u6570\u636e\/\u64e6\u9664\u4e4b\u524d\u5fc5\u987b\u5199\u4f7f\u80fd\u3002<\/p>\n<p>\u6309\u7167 W25Q128 \u5199\u4f7f\u80fd\u7684\u5de5\u4f5c\u65f6\u5e8f\uff1a\u62c9\u4f4e CS \u7247\u9009 \u2192 \u53d1\u9001 06H \u2192 \u62c9\u9ad8 CS \u7247\u9009\uff0c\u7f16\u5199\u4ee3\u7801\u3002<\/p>\n<pre><code class=\"c\">void w25q128_write_enable(void)\n{\n    W25Q128_CS(0);                                 \/* \u62c9\u4f4e\u7247\u9009 *\/\n    read_write_one_byte(FLASH_WriteEnable);        \/* \u53d1\u9001\u5199\u4f7f\u80fd 0x06 *\/\n    W25Q128_CS(1);                                 \/* \u62c9\u9ad8\u7247\u9009 *\/\n}<\/code><\/pre>\n<h3>4.7 W25Q128\u53d1\u9001\u5730\u5740<\/h3>\n<p><code>read_write_one_byte<\/code> \u4e00\u6b21\u53d1\u9001\u4e00\u5b57\u8282\u6570\u636e\uff0c\u800c W25Q128 \u7684\u5730\u5740\u6709\u4e09\u5b57\u8282\uff0c\u6240\u4ee5\u6211\u4eec\u5206\u4e09\u6b21\u53d1\u9001\u3002<\/p>\n<pre><code class=\"c\">static void w25q128_send_address(uint32_t address)\n{\n    read_write_one_byte((uint8_t)((address)&gt;&gt;16));     \/* \u53d1\u9001 bit23 ~ bit16 \u5730\u5740 *\/\n    read_write_one_byte((uint8_t)((address)&gt;&gt;8));      \/* \u53d1\u9001 bit15 ~ bit8  \u5730\u5740 *\/\n    read_write_one_byte((uint8_t)address);             \/* \u53d1\u9001 bit7  ~ bit0  \u5730\u5740 *\/\n}<\/code><\/pre>\n<h3>4.8 W25Q128\u64e6\u9664\u4e00\u4e2a\u6247\u533a<\/h3>\n<p>\u4f20\u53c2 <code>saddr<\/code> \u8868\u793a\u8981\u64e6\u9664\u7b2c\u51e0\u6247\u533a\uff0c\u6ce8\u610f\u6211\u4eec\u8ba1\u7b97\u673a\u662f\u4ece0\u5f00\u59cb\u6570\u6570\u54e6\u3002\u5269\u4e0b\u5c31\u662f\u6309\u5de5\u4f5c\u65f6\u5e8f\u5199\u7406\u8bba\uff0c\u6ce8\u91ca\u5199\u7684\u5f88\u6e05\u695a\u5566\uff0c\u4e0d\u591a\u8bb2\u3002<\/p>\n<pre><code class=\"c\">void w25q128_erase_sector(uint32_t saddr)\n{\n    saddr *= 4096;                  \/* \u4e00\u6247\u533a4096\u5b57\u8282 *\/\n    w25q128_write_enable();         \/* \u5199\u4f7f\u80fd *\/\n    w25q128_wait_busy();            \/* \u7b49\u5f85\u7a7a\u95f2 *\/\n\n    W25Q128_CS(0);                  \/* \u62c9\u4f4e\u7247\u9009 *\/\n    read_write_one_byte(FLASH_SectorErase);    \/* \u53d1\u9001\u6247\u533a\u64e6\u9664\u547d\u4ee4 0x20 *\/\n    w25q128_send_address(saddr);    \/* \u53d1\u9001\u5730\u5740 *\/\n    W25Q128_CS(1);                  \/* \u62c9\u9ad8\u7247\u9009 *\/\n    w25q128_wait_busy();            \/* \u7b49\u5f85\u6247\u533a\u64e6\u9664\u5b8c\u6210 *\/\n}<\/code><\/pre>\n<h3>4.9 W25Q128\u9875\u5199\u548c\u8bfb\u6570\u636e<\/h3>\n<p>\u4f20\u53c2 <code>pbuf<\/code> \uff1a\u8981\u5199\u5165\/\u8bfb\u53d6\u7684\u6570\u636e\uff0c<code>addr<\/code>\uff1a\u5f00\u59cb\u5199\u5165\u7684\u5730\u5740\uff0c<code>datalen<\/code>\uff1a\u5b57\u8282\u6570\u3002\u5269\u4e0b\u5c31\u662f\u6309\u5de5\u4f5c\u65f6\u5e8f\u5199\u7406\u8bba\uff0c\u6ce8\u91ca\u5199\u7684\u5f88\u6e05\u695a\u5566\uff0c\u4e0d\u591a\u8bb2\u3002<\/p>\n<pre><code class=\"c\">void w25q128_write_page(uint8_t *pbuf, uint32_t addr, uint16_t datalen)\n{\n    uint16_t i;\n\n    w25q128_write_enable();                        \/* \u5199\u4f7f\u80fd *\/\n\n    W25Q128_CS(0);                                 \/* \u62c9\u4f4e\u7247\u9009 *\/\n    read_write_one_byte(FLASH_PageProgram);        \/* \u53d1\u9001\u9875\u5199\u547d\u4ee4 0x02*\/\n    w25q128_send_address(addr);                    \/* \u53d1\u9001\u5730\u5740 *\/\n\n    for(i=0;i&lt;datalen;i++)\n    {\n        read_write_one_byte(pbuf[i]);              \/* \u5faa\u73af\u5199\u5165 *\/\n    }\n\n    W25Q128_CS(1);                                 \/* \u62c9\u9ad8\u7247\u9009 *\/\n    w25q128_wait_busy();                           \/* \u7b49\u5f85\u5199\u5165\u7ed3\u675f *\/\n}\n\nvoid w25q128_read(uint8_t *pbuf, uint32_t addr, uint16_t datalen)\n{\n    uint16_t i;\n\n    W25Q128_CS(0);                                 \/* \u62c9\u4f4e\u7247\u9009 *\/\n    read_write_one_byte(FLASH_ReadData);           \/* \u53d1\u9001\u8bfb\u53d6\u547d\u4ee4 0x03 *\/\n    w25q128_send_address(addr);                    \/* \u53d1\u9001\u5730\u5740 *\/\n    \n    for(i=0;i&lt;datalen;i++)\n    {\n        pbuf[i] = read_write_one_byte(0XFF);       \/* \u5faa\u73af\u8bfb\u53d6 *\/\n    }\n    \n    W25Q128_CS(1);                                 \/* \u62c9\u9ad8\u7247\u9009 *\/\n}<\/code><\/pre>\n<h3>4.10 \u4e3b\u51fd\u6570<\/h3>\n<p>\u6211\u4eec\u5411 W25Q128 \u5199\u5165\u4e00\u53e5\u201c\u826f\u8bb8 \u5d4c\u5165\u5f0f\u201d\uff0c\u7136\u540e\u8bfb\u51fa\u3002<\/p>\n<pre><code class=\"c\">int main(void)\n{\n    uint8_t datatemp[TEXT_SIZE];\n    \n    HAL_Init();                         \/* \u521d\u59cb\u5316HAL\u5e93 *\/\n    stm32_clock_init(RCC_PLL_MUL9);     \/* \u8bbe\u7f6e\u65f6\u949f, 72Mhz *\/\n    uart1_init(115200);                 \/* \u4e32\u53e3\u521d\u59cb\u5316\uff0c\u6ce2\u7279\u7387115200 *\/\n\n    printf(&quot;SPI\u901a\u8baf\u8bfb\u5199W25Q128\u6a21\u5757...\/r\/n&quot;);\n    SPI1_Init();\n    w25q128_init();\n\n    \/* \u5199\u5165\u6570\u636e *\/\n    sprintf((char *)datatemp, &quot;\u826f\u8bb8 \u5d4c\u5165\u5f0f&quot;);\n    w25q128_erase_sector(0);                            \/* \u64e6\u9664\u7b2c\u4e00\u4e2a\u6247\u533a *\/\n    w25q128_write_page(datatemp, 0x00000, TEXT_SIZE);   \/* \u4ece\u7b2c0\u4f4d\u5f00\u59cb\u5199 *\/\n    printf(&quot;\u6570\u636e\u5199\u5165\u5b8c\u6210\uff01\/r\/n&quot;);\n\n    \/* \u8bfb\u51fa\u6570\u636e *\/\n    memset(datatemp, 0, TEXT_SIZE);\n    w25q128_read(datatemp, 0x00000, TEXT_SIZE);         \/* \u4ece\u7b2c0\u4f4d\u5f00\u59cb\u8bfb *\/\n    printf(&quot;\u8bfb\u51fa\u6570\u636e\uff1a%s\/r\/n&quot;, datatemp);\n\n    while(1)\n    {\n\n    }\n}<\/code><\/pre>\n<h3>4.11 \u6700\u7ec8\u6548\u679c<\/h3>\n<p>\u4e32\u53e3\u8f93\u51fa\u5982\u4e0b\uff1a<\/p>\n<p><img decoding=\"async\" width=\"592\" height=\"567\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdfOyw\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<h2>5. \u5c0f\u7ed3<\/h2>\n<p>\u7ec6\u5fc3\u7684\u5c0f\u4f19\u4f34\u4f1a\u53d1\u73b0\u6211\u53ea\u662f\u7b80\u5355\u7684\u5199\u9875\u3001\u8bfb\u6570\u636e\u3001\u64e6\u6247\u533a\u3002\u4e00\u9875\u6709256\u5b57\u8282\uff0c\u90a3\u5982\u679c\u6211\u7b2c\u4e00\u9875\u53ea\u5199\u4e8650\u5b57\u8282\uff0c\u53c8\u53bb\u7b2c\u4e8c\u9875\u5199100\u5b57\u8282\uff0c\u8fd9\u4e0d\u662f\u5f88\u6d6a\u8d39\u5b58\u50a8\u7a7a\u95f4\u5417\u3002\u4e0d\u662f\u6211\u4e0d\u4f1a\u66f4\u5b8c\u5584\u7684\u4ee3\u7801\uff0c\u6e90\u7801\u6211\u90fd\u85cf\u7740\u5462\uff0c\u53ea\u662f\u4f5c\u4e3a\u5165\u95e8\u6559\u7a0b\u8fd9\u6837\u7684\u7a0b\u5ea6\u521a\u521a\u597d\uff0c\u5269\u4e0b\u7684\u8fdb\u9636\u4f18\u5316\u5c31\u7559\u4f5c\u8bfe\u540e\u4f5c\u4e1a\u5427\u3002<\/p>\n<h2>\u611f\u8c22\u5404\u4f4d\u770b\u5b98\uff0cpeace and love\uff01<\/h2>\n<p><strong>\u53e6\u5916\uff0c\u60f3\u8fdb\u5927\u5382\u7684\u540c\u5b66\uff0c\u4e00\u5b9a\u8981\u597d\u597d\u5b66\u7b97\u6cd5\uff0c\u8fd9\u662f\u9762\u8bd5\u5fc5\u5907\u7684\u3002\u8fd9\u91cc\u51c6\u5907\u4e86\u4e00\u4efd BAT \u5927\u4f6c\u603b\u7ed3\u7684 LeetCode \u5237\u9898\u5b9d\u5178\uff0c\u5f88\u591a\u4eba\u9760\u5b83\u4eec\u8fdb\u4e86\u5927\u5382\u3002<\/strong><\/p>\n<p><img decoding=\"async\" width=\"286\" height=\"83\" referrerpolicy=\"no-referrer\" src=\"https:\/\/segmentfault.com\/img\/bVdaCCY\" alt=\"\" title=\"\" loading=\"lazy\"><\/p>\n<p><a href=\"https:\/\/link.segmentfault.com\/?enc=VI7CecdYXJxhQxbA5wNQ9A%3D%3D.KvXIlVEBNIXQJNF8IkP1AsLlrI5p2xFpQw7i7ttxb96UUl48cw%2Be0VvhNyu6C51B\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">\u5237\u9898 | LeetCode\u7b97\u6cd5\u5237\u9898\u795e\u5668\uff0c\u770b\u5b8c BAT \u968f\u4f60\u6311\uff01<\/a><\/p>\n<h3>\u6709\u6536\u83b7\uff1f\u5e0c\u671b\u8001\u94c1\u4eec\u6765\u4e2a\u4e09\u8fde\u51fb\uff0c\u7ed9\u66f4\u591a\u7684\u4eba\u770b\u5230\u8fd9\u7bc7\u6587\u7ae0<\/h3>\n<p><strong>\u63a8\u8350\u9605\u8bfb\uff1a<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/link.segmentfault.com\/?enc=vGvy5HBnjX4fT%2FB322HD%2Fw%3D%3D.Y143xvBh0UyJh%2BCm5CxxwwhoY2zaqt65yS3Ragpg3p1gPDtjahNk5LJ8ir1JojMZ\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">\u7a0b\u5e8f\u5458\u5fc5\u5907\u7f16\u7a0b\u8d44\u6599\u5927\u5168<\/a><\/li>\n<li><a href=\"https:\/\/link.segmentfault.com\/?enc=uNWTcqxAWfPqhjpwtQhV1A%3D%3D.Gs8j3i1Wx1dVXaSamx9HtIO3IGBPDzc3Zp%2F9thdXSeEwyPYwNxYv6WMaZQ9y9gDZ\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">\u7a0b\u5e8f\u5458\u5fc5\u5907\u8f6f\u4ef6\u8d44\u6e90<\/a><\/li>\n<\/ul>\n<p>\u6b22\u8fce\u5173\u6ce8\u6211\u7684\u535a\u5ba2\uff1a<a href=\"https:\/\/link.segmentfault.com\/?enc=8hHkg%2BgXoabR8lD46OW5yA%3D%3D.RS7VSaHGTsnj0%2FTTFWpWEqhYJZ0X7QkPA7mzjG9rrmE%3D\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">\u826f\u8bb8\u5d4c\u5165\u5f0f\u6559\u7a0b\u7f51<\/a>\uff0c\u6ee1\u6ee1\u90fd\u662f\u5e72\u8d27\uff01<\/p>\n<p><a href=\"https:\/\/segmentfault.com\/a\/1190000045675919\">https:\/\/segmentfault.com\/a\/1190000045675919<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u53ef\u80fd\u6709\u5f88\u591a\u5c0f\u4f19\u4f34\u5bf9 W25Q128 \u611f\u5230\u964c\u751f\uff0c\u8bf4\u767d\u4e86\u5b83\u5c31\u662f\u4e00\u4e2a\u5b58\u50a8\u82af\u7247\u3002\u5b83\u662f\u4e00\u6b3e\u9ad8\u6027\u80fd\u3001\u5bb9\u91cf\u8f83\u5927\u7684\u95ea\u5b58\u5b58\u50a8\u5668\u82af [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-10020548","post","type-post","status-publish","format-standard","hentry","category-share"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts\/10020548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10020548"}],"version-history":[{"count":0,"href":"https:\/\/itmax.cn\/index.php?rest_route=\/wp\/v2\/posts\/10020548\/revisions"}],"wp:attachment":[{"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10020548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10020548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itmax.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10020548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}