【STM32】SPI通信協議W25Q64Flash存儲器芯片(學習筆記)

通信接口部分有介紹SPI:【STM32】USART串口協議&串口外設-學習筆記-CSDN博客?

SPI通信協議

SPI通信

  • SPI(Serial Peripheral Interface)是由Motorola公司開發的一種通用數據總線
  • 四根通信線:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select)
  • 同步,全雙工
  • 支持總線掛載多設備(一主多從)

I2C通信和SPI通信區別:?

I2C 通信優點:使用兩根線(SCL 時鐘線和 SDA 數據線),半雙工通信,布線簡單,占用引腳少,支持多主機多從機模式,具備總線仲裁機制,適用于近距離低速設備間通信。缺點:數據傳輸速率相對較低,一般標準模式下為 100kbps,快速模式下為 400kbps,高速模式下為 3.4Mbps? ,每次通信需要發送起始、停止信號和應答信號,開銷較大,通信效率不高。

SPI 通信優點:數據傳輸速率高,可達幾十 Mbps ,適合高速數據傳輸場景,全雙工通信,主機和從機可同時發送和接收數據,操作簡單,只需 4 根線(SCK 時鐘線、MOSI 主機輸出從機輸入線、MISO 主機輸入從機輸出線、SS 從機選擇線)。缺點:布線復雜,占用引腳較多,只支持單主機多從機模式,沒有總線仲裁機制,若多個主機同時試圖控制總線,可能導致數據沖突,不適用于多主機環境。?

硬件電路?

  • 所有SPI設備的SCK、MOSI、MISO分別連在一起
  • 主機另外引出多條SS控制線,分別接到各從機的SS引腳
  • 輸出引腳配置為推挽輸出,輸入引腳配置為浮空或上拉輸入?

推挽輸出:高低電平均有很強的驅動能力,這將使得SPI的下降沿和上升沿都非常的迅速。得益于推挽輸出的強驅動能力,SPI信號變化快,自然就能達到更高的傳輸速度?。

SPI 沖突點:就是MISO引腳,主機一個輸入,三個從機全是輸出,如果三個從機都是推挽輸出,肯定會產生沖突,所以SPI協議有規定,當SS從機引腳為高電平,就是未被選中時,它的MISO引腳必須切換為高阻態,高阻態就是引腳斷開,不輸出任何電平。這樣就可以防止一條線有多個輸出而導致的沖突問題。當SS為低電平時,MISO才允許變為推挽輸出。?

移位示意圖?

SPI基本收發電路:?

?只想發送不想接收?

仍然調用交換字節的時序,發送同時接收,只是接收到的數據不看他就可以了。

?只想接收不想發送?

同理,仍然調用交換字節的時序,發送同時接收,只是我們會隨便發送有一個數據,來把從機的數據置換過來就可以。一般統一發0x00或者0xFF。

SPI的通信的基礎就是,交換一個字節,?有了交換一個一個字節,就可以實現發送一個字節,接收一個字節,發送并同時接收一個字節的三種功能。

?SPI時序基本單元

  • 起始條件:SS從高電平切換到低電平
  • 終止條件:SS從低電平切換到高電平?

?模式0用的最多,模式0和模式3都是上升沿采樣輸入;模式1和模式2都是下降沿采樣輸入;

?SPI時序

以本節使用的芯片W25Q64時序進行講解,SPI不像I2C規定那樣,有效數據流的第一個字節是寄存器地址之后依次是讀寫的數據,使用的是讀寫寄存器的模型,在SPI中通常使用的是指令碼加讀寫數據的模型,第一個交換發送給從機的數據叫指令碼。在SPI從機芯片手冊里,都會定義好指令集,什么指令對應什么功能,什么指令后面得跟上什么數據。

發送指令

向SS指定的設備,發送指令(0x06)在W25Q64芯片里0x06表示寫使能?

?模式0

整個時序的功能就是,發送指令,指令碼0x06,從機一比對定義好的指令集,發現是寫使能指令,那從機就控制硬件進行寫使能?。

指定地址寫

  • 向SS指定的設備,發送寫指令(0x02)
  • 隨后在指定地址(Address[23:0])下,寫入指定數據(Data)

指定地址讀

向SS指定的設備,發送讀指令(0x03)

?隨后在指定地址(Address[23:0])下,讀取從機數據(Data)

?

?W25Q64Flash存儲器芯片

?W25Q64簡介

  • W25Qxx系列是一種低成本、小型化、使用簡單的非易失性存儲器,常應用于數據存儲、字庫存儲、固件程序存儲等場景
  • 存儲介質:Nor Flash(閃存)Nor Flash 是一種非易失性閃存存儲介質,在嵌入式系統等領域應用廣泛。
  • 時鐘頻率:80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)
  • 存儲容量(24位地址):分三個字節?

基本參數

  • 存儲容量:W25Q64 的存儲容量為 64Mb(兆比特),也就是 8MB(兆字節)。它被劃分為 128 個塊(Block),每個塊大小為 64KB;每個塊又由 16 個扇區(Sector)組成,每個扇區大小為 4KB。
  • 工作電壓:其工作電壓范圍為 2.7V - 3.6V,這使得它能適配多種電源系統。不能直接接5V電壓。
  • 通信接口:采用 SPI(Serial Peripheral Interface)通信接口,具有引腳少、通信速率高的特點,只需 SCK(時鐘線)、MOSI(主出從入數據線)、MISO(主入從出數據線)和 CS(片選線)這幾根線就能和主控芯片進行通信。

性能特點

  • 讀寫速度快:最高時鐘頻率可達 80MHz,能實現快速的數據讀寫操作,提升系統的數據處理效率。
  • 低功耗:在待機和掉電模式下功耗極低,適合對功耗有嚴格要求的應用場景,如電池供電的設備。
  • 擦寫次數多:扇區擦除次數可達 10 萬次,數據保存時間長達 20 年,保證了數據的長期可靠性和穩定性。
應用場景
  • 消費電子:像智能手機、平板電腦、數碼相機等設備,用于存儲系統固件、用戶數據、圖像和視頻等信息。
  • 工業控制:在工業自動化設備、儀器儀表中,可存儲程序代碼、校準數據和運行記錄等。
  • 汽車電子:應用于汽車的娛樂系統、儀表盤、導航系統等,存儲地圖數據、音頻文件和系統配置信息。

操作方式

對 W25Q64 進行操作,一般要先通過 SPI 接口發送對應的命令。例如,發送寫使能命令后,才能進行寫操作;擦除操作也需要先發送相應的擦除命令。而且,在進行寫操作前,通常要先對相應的扇區進行擦除。

拓展:Nor Flash 和 NAND Flash的區別

Nor Flash 和 NAND Flash 是兩種常見的閃存技術,它們在多個方面存在明顯區別:

存儲結構
  • Nor Flash:其存儲單元結構類似隨機存儲器(RAM),各個存儲單元是獨立的,能夠直接對單個存儲單元進行隨機訪問,這使得它具備字節級別的隨機讀寫能力。
  • NAND Flash:存儲單元以頁(Page)和塊(Block)的形式組織。數據的讀寫通常以頁為基本單位,頁的大小一般在幾百字節到幾 KB 不等;而擦除操作則以塊為單位,塊由多個頁組成。
讀寫性能
  • 讀取速度:Nor Flash 的讀取速度較快,特別是隨機讀取性能出色,它可以像內存一樣直接執行代碼(XIP),適合頻繁隨機讀取少量數據的場景,如存儲程序代碼。NAND Flash 順序讀取速度也較快,但隨機讀取性能相對較差,不太適合隨機讀取小數據量的操作。
  • 寫入和擦除速度:Nor Flash 的寫入和擦除速度較慢,尤其是擦除操作,需要較長時間,而且擦除次數有限。NAND Flash 的寫入和擦除速度相對較快,不過在寫入數據前也需要先進行塊擦除操作。
可靠性
  • 位反轉:NAND Flash 更容易出現位反轉現象,即存儲的數據在沒有進行寫入操作的情況下,某些位的值發生了改變。這是由于 NAND Flash 的存儲密度高,相鄰存儲單元之間的干擾較大。因此,NAND Flash 通常需要使用糾錯碼(ECC)來檢測和糾正數據錯誤。Nor Flash 出現位反轉的概率相對較低。
  • 擦寫次數:Nor Flash 的擦寫次數一般在 10 萬次左右,而 NAND Flash 根據不同的類型,擦寫次數有所差異,普通的 SLC(單電平單元)NAND Flash 擦寫次數可達 10 萬 - 100 萬次,MLC(多電平單元)和 TLC(三層單元)的擦寫次數相對較少。
成本
  • 單位容量成本:NAND Flash 的制造成本較低,單位容量的價格相對 Nor Flash 更便宜,因此在大容量存儲應用中具有明顯的成本優勢。Nor Flash 由于制造工藝和結構的原因,成本較高,特別是大容量的 Nor Flash 價格更為昂貴。
  • 系統成本:使用 Nor Flash 時,由于其可以直接執行代碼,不需要額外的內存來加載代碼,在一定程度上可以降低系統的整體成本。而使用 NAND Flash 時,通常需要額外的控制器和糾錯電路來保證數據的可靠性,這會增加系統的成本和復雜度。
應用場景
  • Nor Flash:主要用于存儲代碼和少量的關鍵數據,如嵌入式系統的啟動代碼、BIOS、汽車電子中的發動機控制單元程序等,適用于對隨機讀取性能和數據可靠性要求較高的場景。
  • NAND Flash:廣泛應用于大容量數據存儲領域,如固態硬盤(SSD)、USB 閃存驅動器、存儲卡、智能手機和平板電腦的內置存儲等,適合順序讀寫大量數據的場景。

常見的非易失性存儲器和易失性存儲器:?

非易失性存儲器

  • 閃存(Flash Memory):基于閃存芯片的存儲介質,如常見的 U 盤、固態硬盤(SSD)等。具有掉電后數據不丟失、可多次擦寫、體積小、重量輕、抗震性強等優點,廣泛應用于移動設備、計算機存儲等領域。
  • 只讀存儲器(ROM):通常用于存儲計算機系統的啟動程序、BIOS 等重要信息。在制造過程中就將數據固化在芯片中,只能讀取,不能寫入或修改,具有很高的穩定性和可靠性。
  • 電可擦除可編程只讀存儲器(EEPROM):可以通過電信號進行擦除和編程的只讀存儲器。與閃存類似,但擦寫操作更加靈活,通常用于存儲一些需要頻繁修改但掉電后又需要保存的數據,如設備的配置信息等。不過,EEPROM 的擦寫次數有限,且寫入速度相對較慢。
  • 鐵電存儲器(FRAM):利用鐵電材料的極化特性來存儲數據。具有高速讀寫、低功耗、抗輻射等優點,且擦寫次數幾乎無限,但成本較高,容量相對較小,目前在一些特定領域,如航空航天、工業控制等有一定應用。

易失性存儲器

  • 隨機存取存儲器(RAM):計算機中最常用的易失性存儲器,用于暫時存儲正在運行的程序和數據。根據技術和性能的不同,可分為靜態隨機存取存儲器(SRAM)和動態隨機存取存儲器(DRAM)。
  • SRAM:速度快,但成本高、集成度低,常用于高速緩存(Cache)等對速度要求極高的場景。
  • DRAM:成本低、集成度高,但速度相對較慢,是計算機內存的主要組成部分,用于存儲正在運行的程序和數據。計算機在運行過程中,需要不斷地對 DRAM 中的數據進行刷新操作,以防止數據丟失。
  • 高速緩沖存儲器(Cache):位于 CPU 和主存之間的一種高速小容量存儲器,用于存儲 CPU 近期可能會頻繁訪問的數據和指令。Cache 通常采用 SRAM 實現,速度比主存快得多,能有效提高 CPU 訪問數據的速度,減少 CPU 等待數據從主存傳輸的時間,從而提高整個計算機系統的性能。

硬件電路??

?W25Q64框圖

兩個地址鎖存和計數器解釋

框圖重點部分:四點?

Flash操作注意事項?

寫入操作時:

  • 寫入操作前,必須先進行寫使能
  • 每個數據位只能由1改寫為0,不能由0改寫為1(這個意思就是Flash并沒有像RAM那樣的直接完全覆蓋的改寫能力,而是受到這個規則限制)比如:在某個存儲單元存儲了0xAA,寫入新的0x55,那數據并不會覆蓋為0x55,而是受到限制變為0x00,為了彌補這個缺陷,就用到了擦除的規定
  • 寫入數據前必須先擦除,擦除后,所有數據位變為1,擦除有專門的擦除電路,我們只需要發送對應的指令,擦除后,所有的數據為都變為1,也就是16進制的0xFF,這樣就可以彌補第二條的限制。
  • 擦除必須按最小擦除單元進行,有最小擦除單元限制,不能指定某一個字節擦除,要一大片的擦除,可以按片擦除,按快擦除或者按扇形擦除,最小的單元就是一個扇區擦除。
  • 連續寫入多字節時,最多寫入一頁的數據,超過頁尾位置的數據,會回到頁首覆蓋寫入(意思就是寫入的時候,一次性不能寫太多,一個寫入時序最多寫入一頁的數據,也就是256字節)
  • 寫入操作結束后,芯片進入忙狀態,不響應新的讀寫操作,使用讀狀態寄存器指令,看BUSY位是否為0,BUSY為0就是不忙狀態

讀取操作時:

  • 直接調用讀取時序,無需使能,無需額外操作,沒有頁的限制,讀取操作結束后不會進入忙狀態,但不能在忙狀態時讀取?

W25Q64數據手冊 (摘取)

控制及狀態寄存器?

指令集?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74086.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74086.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74086.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

批量合并 PPT 文件,支持合并成單個文件也支持按文件夾合并

合并多個 PPT 為一個 PPT 文檔是我們經常會碰到的需求,合并后不僅更容易管理,在某些場景(比如批量打印)下也非常的有用,那當我們需要批量合并多個 PPT 文檔地時候,我們有沒有比較高效的方法呢?今…

LDAP從入門到實戰:環境部署與配置指南(下)

#作者:朱雷 接上篇:《LDAP從入門到實戰:環境部署與配置指南(上)》 鏈接: link 文章目錄 2.5.添加賬號2.6.停止服務2.7.使用TLS證書2.7.1. TLS 證書2.7.2. TLS 配置2.7.3. 服務器配置 2.8.使用安全連接的反向代理 2.5…

發現一個好用的Vue.js內置組件

目錄 一、這個好用的內置組件是什么&#xff1f; 二、這個組件的主要功能 三、怎么使用&#xff1f; 四、使用注意事項 五、我的使用場景 一、這個好用的內置組件是什么&#xff1f; 今天在優化我的平臺應用時&#xff0c;發現一個好用的組件標簽--<keep-alive>。 …

dart學習記錄5(類、對象)

1.獲取運行時對象類型 使用Object 屬性的 runtimeType&#xff0c;它返回一個 Type 對象。 print(a 的類型是 ${a.runtimeType});??警告 在測試對象的類型時建議使用object is Type比測試 object.runtimeType Type 更穩定。 2.實例變量的聲明 class Point {double? x;…

啟明星辰春招面試題

《網安面試指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇網安資料庫https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

Live555+Windows+MSys2 編譯Androidso庫和運行使用

下載 wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz tar -xzvf live555-latest.tar.gz加入版本控制 git init git add . git commit -a -m "first init" git log修改config.android-arm64 cd live vim config.android-arm64 ./genMakefile…

實用工具-Stirling-PDF

windows桌面版參考這個文檔 Getting Started | Stirling-PDF 安裝包推薦使用迅雷下載&#xff0c;先轉存到迅雷網盤在使用迅雷下載速度嘎嘎快。 github:https://github.com/Stirling-Tools/Stirling-PDF Stirling-PDF 是一個強大的、基于 Web 的開源 PDF 處理工具&#xff0c…

借助AI Agent實現數據分析

在當今數據驅動的世界中&#xff0c;數據分析已成為企業決策、科學研究和社會治理的核心工具。然而&#xff0c;隨著數據量的爆炸式增長和復雜性的提升&#xff0c;傳統的數據分析方法面臨著效率低下、成本高昂和人力不足等挑戰。AI技術的快速發展&#xff0c;尤其是AI Agent的…

JavaScript實現一個函數,將數組扁平化(flatten),即把多維數組轉為一維數組。

大白話實現一個函數&#xff0c;將數組扁平化&#xff08;flatten&#xff09;&#xff0c;即把多維數組轉為一維數組。 思路 實現數組扁平化的基本思路是遍歷數組中的每個元素&#xff0c;如果元素是數組&#xff0c;就遞歸地將其扁平化并添加到結果數組中&#xff1b;如果元…

麒麟操作系統安裝人大金倉數據庫

如果你想擁有你從未擁有過的東西&#xff0c;那么你必須去做你從未做過的事情 在當前數字化轉型和信息安全備受重視的背景下&#xff0c;眾多公司積極推進國產化改造進程。在操作系統領域&#xff0c;統信、open 歐拉、中標麒麟、銀河麒麟等國產操作系統嶄露頭角&#xff0c;逐…

開發SAPUI5 Fiori應用并部署到SAP系統

首先新建一個項目文件夾 在VScode中打開 打開SAP Fiori&#xff08;需要先下載安裝&#xff0c;參考上上一篇文章&#xff09; ,選擇已添加的SAP S4 ERP系統 ,點擊創建Firoi應用。 如果沒有添加系統的&#xff0c;點擊添加按鈕&#xff0c;添加即可&#xff0c;注意&#xff…

右鍵添加:新建HTML模板文件

使用注冊表給Windows右鍵添加:新建HTML文檔模板的功能_注冊表右鍵新建-CSDN博客 新建文件有了&#xff0c;但是沒有引用模板文件&#xff0c;是空文件。 默認改成 htmlfile 模板成功

[極客大挑戰 2019]Knife——3.20BUUCTF練習day4(1)

[極客大挑戰 2019]Knife——3.20BUUCTF練習day4(1) 很簡單 蟻劍連接 根目錄下有flag flag{f77e8444-dd87-48b3-8fe0-a735b5a5c708}

力扣22.括號生成

22. 括號生成 - 力扣&#xff08;LeetCode&#xff09; 代碼區&#xff1a; class Solution {vector<string> ans; public:vector<string> generateParenthesis(int n) {dfs(0,0,n,"");return ans;}void dfs(int left,int right,int n,string str){if(l…

第37周:文獻閱讀

目錄 摘要 Abstract 文獻閱讀 問題引入 研究背景 研究意義 研究目的 實驗方法 TimeGAN 數據增強 預測模型的獨立性 創新點 實驗研究 數據準備 合成數據分析 模型比較 總結 摘要 該文獻圍繞利用 TimeGAN 提高供熱變電站熱負荷預測精度展開。結構上&#x…

NFS 安裝與測試

NFS 安裝與測試 服務器 # NFS 共享目錄 mkdir -p ${HOME}/Share/nfs && sudo chown -R nobody:nogroup ${HOME}/Share/nfs# 安裝 NFS Server sudo apt install nfs-kernel-server# 配置 NFS 目錄 sudo cp -arf /etc/exports /etc/exports.bak sudo tee -a /etc/exports…

算法題(103):數獨

審題&#xff1a; 本題需要我們找出數獨的解&#xff0c;并打印出來 時間復雜度分析&#xff1a; 本題是9*9的數獨格子&#xff0c;所以數據量小于25&#xff0c;可以使用2^n的算法 思路&#xff1a; 方法一&#xff1a;深度優先搜索 首先確定搜索及插入策略&#xff1a; 我們采…

snmp/mib采用子代理模式,編碼,部署

0.環境 0.1 編譯net-snmp cd net-snmp-5.7.2 ./configure --prefix/usr/local/snmp BEGIN failed--compilation aborted at Makefile.PL line 1. make: *** [perlmakefiles] Error 2 yum install cpan -y make && make install /…

# [RPA] 使用八爪魚進行高效網頁數據采集

在許多行業中&#xff0c;數據是核心資產。然而&#xff0c;雖然許多網站的文本內容可以免費訪問&#xff0c;但手動一條一條采集&#xff0c;不僅耗時耗力&#xff0c;還容易出錯。這種情況下&#xff0c;使用自動化工具來提高采集效率就顯得尤為重要。本文將介紹 八爪魚 這一…

IDI_APPLICATION 與 IDC_ARROW資源存放在工程的哪個路徑?

書籍&#xff1a;《windows程序設計(第五版)》的開始 環境&#xff1a;visual studio 2022 內容&#xff1a;HELLOWIN程序 說明&#xff1a;以下內容大部分來自騰訊元寶。 IDI_APPLICATION 和 IDC_ARROW 是 ?Windows 系統預定義的資源標識符&#xff0c;它們并不以文件形式…