AS32A601芯片QSPI 調試技術解析與與實戰經驗分享

一、概述

(一)QSPI 簡介

QSPI(Quad Serial Peripheral Interface)是一種高速串行通信接口,在標準 SPI(Serial Peripheral Interface)的基礎上擴展至 4 條數據線(Quad Mode),顯著提升數據傳輸速率。它廣泛應用于 Flash 存儲器、傳感器和微控制器之間的通信。

(二)主要特性

  • 多種模式支持 :兼容 Standard SPI(1 - bit 模式)、Dual SPI(2 - bit 模式)以及 Quad SPI(4 - bit 模式,最高吞吐量)。

  • 高時鐘頻率 :通常支持 50MHz - 133MHz(取決于芯片),為數據傳輸提供高速時鐘保障。

  • 低引腳占用 :僅需 6 個引腳(CLK, CS, IO0 - IO3)即可實現全雙工通信,有效節省硬件資源。

  • 內存映射模式(XIP, Execute - In - Place) :允許 CPU 直接訪問 QSPI Flash,無需額外緩存,提升系統運行效率。

(三)應用場景

在嵌入式系統中,QSPI 常用于連接微控制器與外部 Flash 存儲器,實現程序代碼和數據的高速讀寫操作;還可與各類傳感器配合,快速傳輸傳感器采集到的數據,滿足工業控制、汽車電子、物聯網等諸多領域的實時性與大數據量傳輸需求。

二、AS32A601 QSPI 硬件設計

引腳名稱功能說明
CLK時鐘信號主設備輸出,從設備同步數據
CS片選信號(低電平有效)使能從設備通信
IO0 (DQ0)數據線0(MOSI in SPI模式)單線模式:單向數據輸入/輸出
IO1 (DQ1)數據線1(MISO in SPI模式)單線模式:單向數據輸入/輸出
IO2 (DQ2)數據線2(WP# in SPI模式)Quad模式:雙向數據傳輸
IO3 (DQ3)數據線3(HOLD# in SPI模式)Quad模式:雙向數據傳輸

(二)開發板配置

在 AS32A601 開發板上,QSPI 經過一個 BUFFER 芯片接入 QSPI_FLASH,所選 FLASH 型號為 S25FL512SAGMFVG13,該型號 QSPI 支持最大速率可達 45MHz,為系統穩定運行提供可靠存儲支持。

三、QSPI 時序解析

(一)指令階段

這一階段,將在QSPI_CCR[7:0]寄存器的instruction字段中配置的一條8位指令發送到Flash,指定待執行操作的類型。

盡管大多數Flash從IO0/SO信號(單線SPI模式)只能以一次1位的方式接收指令,但指令階段可選擇一次發送2位(在雙線SPI模式中通過IO0/IO1)或一次發送4位(在四線SPI模式中通過IO0/IO1/IO2/IO3)。這可通過QSPI_CCR[9:8]寄存器中的IMODE[1:0]字段進行配置。若IMODE = 00,則跳過指令階段,命令序列從地址階段(如果存在)開始。

(二)地址階段

在地址階段,將1-4字節發送到Flash,指示操作地址。待發送的地址字節數在QSPI_CCR[13:12]寄存器的ADSIZE[1:0]字段中進行配置。在間接模式和自動輪詢模式下,待發送的地址字節在QSPI_AR寄存器的ADDRESS[31:0]中指定;在內存映射模式下,則通過AHB(來自于內核或DMA)直接給出地址。地址階段可一次發送1位(單線SPI模式通過SO)、2位(雙線SPI模式中通過IO0/IO1)或4位(在四線SPI模式中通過IO0/IO1/IO2/IO3)。這可通過QUADSPI_CCR[11:10]寄存器中的ADMODE[1:0]字段進行配置。若ADMODE = 00,則跳過地址階段,命令序列直接進入下一階段(如果存在)。

(三)交替字節階段

在交替字節階段,將1-4字節發送到Flash,一般用于控制操作模式。待發送的交替字節數在QSPI_CCR[17:16]寄存器的ABSIZE[1:0]字段中進行配置。待發送的字節在QSPI_ABR寄存器中指定。

交替字節階段可一次發送1位(在單線SPI模式中通過SO)、2位(在雙線SPI模式中通過IO0/IO1)或4位(在四線SPI模式中通過IO0/IO1/IO2/IO3)。這可通過QSPI_CCR[15:14]寄存器中的ABMODE[1:0]字段進行配置。若ABMODE = 00,則跳過交替字節階段,命令序列直接進入下一階段(如果存在)。

交替字節階段存在僅需發送單個半字節而不是一個全字節的情況,比如采用雙線模式并且僅使用兩個周期發送交替字節時。在這種情況下,固件可采用四線模式(ABMODE = 11)并發送一個字節,方法是ALTERNATE的位7和3置“1”(IO3保持高電平)且位6和2置“0”(IO2線保持低電平)。此時,半字節的高2位存放在ALTERNATE的位4:3,低2位存放在位1和0中。例如,如果半字節2 (0010)通過IO0/IO1發送,則ALTERNATE應設置為0x8A (1000_1010)。

(四)空指令周期階段

在空指令周期階段,給定的1-31個周期內不發送或接收任何數據,目的是當采用更高的時鐘頻率時,給Flash留出準備數據階段的時間。這一階段中給定的周期數在QSPI_CCR[22:18]寄存器的DCYC[4:0]字段中指定。在SDR和DDR模式下,持續時間被指定為一定個數的全時鐘周期。若DCYC為零,則跳過空指令周期階段,命令序列直接進入數據階段(如果存在)。空指令周期階段的操作模式由DMODE確定。為確保數據信號從輸出模式轉變為輸入模式有足夠的“周轉”時間,使用雙線和四線模式從Flash接收數據時,至少需要指定一個空指令周期。

(五)數據階段

在數據階段,可從Flash接收或向其發送任意數量的字節。在間接模式和自動輪詢模式下,待發送/接收的字節數在QSPI_DLR寄存器中指定。在間接寫入模式下,發送到Flash的數據必須寫入QSPI_DR寄存器。在間接讀取模式下,通過讀取QSPI_DR寄存器獲得從Flash接收的數據。在內存映射模式下,讀取的數據通過AHB直接發送回Cortex或DMA。數據階段可一次發送/接收1位(在單線SPI模式中通過SO)、2位(在雙線SPI模式中通過IO0/IO1)或4位(在四線SPI模式中通過IO0/IO1/IO2/IO3)。這可通過QUADSPI_CCR[15:14]寄存器中的ABMODE[1:0] 字段進行配置。若DMODE = 00,則跳過數據階段,命令序列在拉高nCS時立即完成。這一配置僅可用于僅間接寫入模式。

四、QSPI 與 SPI 異同比較

QSPI(Quad SPI)和SPI(Serial Peripheral Interface)是兩種串行通信協議,用于在主設備和從設備之間進行數據傳輸。它們有一些相似之處,但也有一些重要的區別。

(一)相似之處

  1. 串行通信本質 :二者均為串行通信協議,通過少量引腳實現數據傳輸,在硬件資源有限的場景下具有顯著優勢。

  2. 主從架構 :均基于主從結構,主設備主導通信發起與時序控制,從設備依主設備指令響應并完成數據交互,便于系統級的設備管理和任務調度。

(二)不同之處

  1. 傳輸速率差異 :QSPI 憑借四條數據線(Quad 模式)可同時傳輸四個數據位,支持更高傳輸速率;SPI 通常僅使用一條數據線,每次僅能傳輸一個數據位,傳輸速率相對較低。

  2. 總線模式多樣性 :QSPI 支持單線、雙線、四線等多種總線模式,可根據應用場景靈活選擇;SPI 一般僅支持單線模式,難以滿足對高帶寬有需求的復雜應用。

  3. 時鐘頻率范圍 :QSPI 為匹配高速數據傳輸,通常支持更高時鐘頻率;SPI 的時鐘頻率設計相對較低,適用于對實時性要求不苛刻的場景。

  4. 引腳占用情況 :QSPI 為實現四線模式高速數據傳輸,需更多引腳;SPI 僅需少量引腳即可完成基本通信功能,在簡單應用中硬件連接更為簡便。

  5. 片選信號運用 :QSPI 與 SPI 均使用片選信號(Chip Select)選擇通信從設備,但在復雜多設備系統中,QSPI 的多線模式可減少總線切換次數,提升整體通信效率。

總之,需要根據具體的應用需求和設備支持來選擇使用QSPI還是SPI。QSPI適用于需要更高傳輸速率和更大帶寬的應用,而SPI適用于傳輸速率要求不高的應用。

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

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

相關文章

TDengine 轉化函數 TO_TIMESTAMP 用戶手冊

TDengine TO_TIMESTAMP 函數用戶使用手冊 函數概述 TO_TIMESTAMP 是 TDengine 中的標量函數,用于將字符串按照指定格式轉換為時間戳。該函數在數據導入、時間格式轉換、以及處理各種時間字符串格式時非常有用。 語法 TO_TIMESTAMP(ts_str_literal, format_str_liter…

關于我司即將對商業間諜行為進行法律訴訟的通知

最后警告我司所屬社交媒體中所有友商間諜:請于2025年7月26日上午十點前,自行刪除我方好友,并停止通過欺詐行為(包括但不限于冒充客戶等)盜取我司商業秘密的行為。十點后,我司將開始進行逐一排查&#xff0c…

【打怪升級 - 03】YOLO11/YOLO12/YOLOv10/YOLOv8 完全指南:從理論到代碼實戰,新手入門必看教程

引言:為什么選擇 YOLO? 在目標檢測領域,YOLO(You Only Look Once)系列模型一直以其高效性和準確性備受關注。作為新版本,YOLO系列的新版本總能在前輩的基礎上進行了多項改進,包括更高的檢測精度…

JMeter每次壓測前清除全部以確保異常率準確(以黑馬點評為例、詳細圖解)

目錄 一、前言 二、未清除全部會出現的情況(以樂觀鎖解決超賣問題為例) 三、清除全部就能得到準確的結果 一、前言 在學習黑馬點評之前我并沒有接觸過JMeter這個壓測軟件,然后在黑馬點評視頻中老師也是直接拿起JMeter就開始使用,所以我一直在不斷搜索…

關于新學C++編程Visual Studio 2022開始,使用Cmake工具構建Opencv和SDK在VS里編譯項目開發簡介筆記

1. C 項目build文件夾 2. VS解決方案管理器Solution——.sln文件 3. CMake 自動化構建工具 4. SDK軟件開發工具包作為初學者,從工程項目開始接觸完整一套流程工具和編譯,有助于快速上手。 一、C 項目build文件夾在 VS2022 中打開 C 項目后,在…

測試ppyoloe的小樣本few-shot能力,10張圖片精度達到69.8%

近期公司有個項目,需要解決長尾樣本的問題,所以測試了一下paddlepaddle小樣本的能力。 環境::T4 、ubuntu 、cuda-11.6 、py3.9、 paddlepaddle-gpu2.6.0、pip install opencv-python4.5.5.64 -i https://pypi.tuna.tsinghua.…

結構化布線系統詳解

1. 結構化布線系統概述 結構化布線系統(Structured Cabling System, SCS)是一種標準化、模塊化的建筑物或建筑群內信息傳輸基礎設施,它為語音、數據、圖像等多媒體業務提供了統一的物理傳輸介質。與傳統的點對點布線方式不同,結構化布線采用層次化、標準…

【Java學習】匿名內部類的向外訪問機制

目錄 一、方法局部變量的訪問 1.生命周期 1.1方法生命周期 1.2匿名實例生命周期 1.3生命超時性 2.變量捕獲 2.1按值捕獲 2.1.1值捕獲優勢 2.1.1.1生命及時訪問 2.1.1.2線程安全 2.1.2常量值捕獲優勢 2.2按引用捕獲 引用捕獲風險 (1)生命超時訪問 (2)線程不安全 …

LinkedList的模擬實現+LinkedList和ArrayList的區別

目錄 LinkedList的模擬實現 什么是雙向鏈表 增加數據 頭插法: 尾插法: 指定的下標插入: 刪除數據 刪除雙向鏈表中出現的第一個key 置空所有數據 LinkedList和ArrayList的區別 順序表對應的集合類是ArrayList;鏈表對應的集…

Vue + WebSocket 實時數據可視化實戰:多源融合與模擬數據雙模式設計

在現代交通大屏項目中,實時數據的采集和可視化尤為重要。本文結合 Vue3 和 ECharts,分享一個支持多 WebSocket 數據源實時合并、模擬數據調試、自動重連的完整設計方案,幫助你快速搭建健壯的數據可視化組件。一、項目背景與核心需求實時接收多…

C#索引器、接口、泛型

以下是對提供的 C# 代碼中涉及的核心知識點的梳理和總結,涵蓋索引器、接口、泛型三大核心內容,以及相關實踐要點:一、索引器(Indexer)索引器是一種允許類或結構體像數組一樣通過[]語法訪問成員的特殊成員,本…

界面組件DevExpress WPF中文教程:Grid - 如何過濾節點?

DevExpress WPF擁有120個控件和庫,將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序,這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件…

Excel——INDEX和MATCH傻傻分不清?

核心邏輯?先用 MATCH 找到目標姓名在表格中的 ?行號,再用 INDEX 根據行號 ?提取對應信息。就像查字典:先用拼音找到字的頁碼(MATCH 找行號)再翻到該頁看具體解釋(INDEX 取數據)?分步拆解(以…

制造業低代碼平臺實戰評測:簡道云、釘釘宜搭、華為云Astro、金蝶云·蒼穹、斑斑低代碼,誰更值得選?

上回聊了斑斑和簡道云,不少同行私信問我其他幾個低代碼平臺怎么樣,今天就給大家來個"五大門派"終極對決! 一、先說痛點 制造業搞數字化最怕三件事: 1.錢花了沒效果(大平臺用不起,小工具不夠用&…

Jenkins中HTML文件顯示樣式問題解決方案

Jenkins中HTML文件顯示樣式問題解決方案 問題描述 在Jenkins中歸檔的HTML文件顯示格式失效,樣式無法正常顯示,但在本地瀏覽器中打開卻能正常顯示。 問題原因 Jenkins為了安全考慮,默認設置了嚴格的內容安全策略(Content Security Policy, CSP…

四、配置文件

文章目錄1. 文件類型1.1 properties1.2 yaml1.2.1 簡介1.2.2 基本語法1.2.3 數據類型1.2.4 示例2. 配置提示1. 文件類型 1.1 properties 同以前的properties的用法 1.2 yaml 1.2.1 簡介 YAML 是 “YAML Ain’t Markup Language”(YAML 不是一種標記語言&#x…

Python常用醫療AI庫以及案例解析(場景化進階版)

?? 框架應用拓撲圖用例 #mermaid-svg-lZ1J5KCaVWBV2kAu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lZ1J5KCaVWBV2kAu .error-icon{fill:#552222;}#mermaid-svg-lZ1J5KCaVWBV2kAu .error-text{fill:#552222;st…

Python高效操作Kafka實戰指南

Python操作Kafka的高效 以下是使用Python操作Kafka的高效消息發送實例,涵蓋基礎發送、批量處理、異步回調等場景。示例基于confluent-kafka庫(推薦)和kafka-python庫,代碼均經過實測。 流程圖 基礎消息發送(同步) from confluent_kafka import Producerproducer = Pro…

離線快速處理PDF格式轉化的方案

日常辦公中,PDF 幾乎成了我們離不開的文件格式。然而像 WPS 這樣的工具,不少實用功能都需要額外付費才能解鎖。它的打開方式很簡單,雙擊桌面圖標即可運行。它不會彈出主界面,而是默默駐留在系統托盤區,需要時雙擊圖標就…

SpringMVC注解與SpringCloudOpenFeign注解對比

1. 背景知識 梳理SpringMVC和SpringCloudOpenFeign常用注解后: Spring MVC中常用注解_筆記-CSDN博客Spring Cloud OpenFeign 常用注解_筆記-CSDN博客 這里對兩類注解做個對比。理解兩者定位(服務端 vs 客戶端)是掌握注解使用的關鍵&#x…