国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何開發(fā)功能齊全的QSPI驅(qū)動

嵌入式程序員 ? 來源:嵌入式程序猿 ? 作者:嵌入式程序猿 ? 2020-09-25 14:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 摘要

本篇筆記主要介紹,如何開發(fā)穩(wěn)定可靠,功能齊全的QSPI驅(qū)動。

2. 準(zhǔn)備工作

1, IAR 8.32.1

2, STM32Cube_FW_H7_V1.6.0

3. QSPI簡介

4. QSPI驅(qū)動

在項目的開發(fā)中,我們經(jīng)常會使用外掛Flash在做一些應(yīng)用,而STM32H743帶QSPI接口,可以用來外掛QSPI Flash,在之前的推送中我們以winbond華邦的W25Q256為例給大家說明了下QSPI的操作,借助ST的HAL庫例程可以快速驗證,不同型號的QSPI Flash會有一些參數(shù)和命令區(qū)別,大家應(yīng)用時候要注意,例如美光和華邦的有的命令碼就不同。ST的驅(qū)動里STM32H743的評估板是以美光的MT25T_QLKT_L_01G為例。如果你使用不同的型號,請注意區(qū)分,既然是評估板,那么就只是給大家參考,在正式的項目中,還需要考慮一些其他的問題。

5. 驅(qū)動架構(gòu)

驅(qū)動的架構(gòu)可以參考STM32Cube_FW_H7中對QSPI Flash驅(qū)動架構(gòu),也可以自己做架構(gòu),盡量簡單明了,易用且穩(wěn)定。對具體型號Flash的驅(qū)動可以放在一個文件下建立一個.c和.h. 如我們以華邦的W25Q系列為例,

還可以建立一個文本文檔,用來記錄驅(qū)動的一些變更,發(fā)布筆記等。

BSP層可以在BSP文件夾下建立QSPI的驅(qū)動,名字可以參考ST庫,也可以按照自己的命名規(guī)則來定,或者企業(yè)的軟件文件命名規(guī)則來定。

建立好這些文件后,接下來可以動手開發(fā)了。開發(fā)的時候可以先畫一些圖,除過正常的初始化,去初始化,外,考慮都包含那些功能,那些模式,那些命令,那些安全管理。那些中斷,是否可以用DMA操作等。還要考慮數(shù)據(jù)結(jié)構(gòu)類型,配置信息,錯誤碼等。這些一定要結(jié)合數(shù)據(jù)手冊來考慮和分析。

5.1 初始化和去初始化

這部分相對比較簡單,可以參考例程,市面上的開發(fā)板,編碼風(fēng)格和良莠不齊,大家盡量參考官方的資料和文檔,要考慮檢查返回值,初始化有沒有成功。跟硬件相關(guān)的管腳,時鐘等大家根據(jù)自己的應(yīng)用去定,H743我一般跑400M. 官方的大部分例程也都是跑在400M.

5.2 驅(qū)動模式

從手冊可以知道分為間接模式,狀態(tài)輪詢模式,內(nèi)存映射模式,那么我們的驅(qū)動就要能夠分別支持這三種模式。在stm32h743i_eval_qspi.h里面定義這些模式和其他數(shù)據(jù)類型。這些可以參考官方的定義

在w25q256.h中定義跟flash相關(guān)的數(shù)據(jù)類型,結(jié)構(gòu)體,宏定義等。如QSPI的操作模式,這里要明白1-1-1,1-1-2,1-1-4,1-4-4等的含義,因為QSPI包含這四種,指令單線,地址單線/4線,數(shù)據(jù)單線/兩線/四線,這些在flash的數(shù)據(jù)手冊指令表里都會標(biāo)出,支持那種操作,而我們在驅(qū)動中要綜合考慮這四種。

命令表的定義,這個要注意不同型號的FLASH,會稍有區(qū)別,即使同一家的不同型號的可能也有區(qū)別,如華邦256M和1G的指令就有一些個別的不同。恰好這兩款我都用過,在這里給大家提一下。由于指令比較多,這里就不一一列舉了,只截取其中一部分,具體指令表的定義可以參考flash手冊,

但是建議大家在做驅(qū)動的時候?qū)λ兄噶钭鲋С郑@樣在用的時候就很方便,而不是用的時候發(fā)現(xiàn)少,在去填補。可以分別做成子函數(shù),例如讀取ID,可以做一些校驗

很多指令的內(nèi)容官網(wǎng)的驅(qū)動里都沒有,需要我們自己去做。

5.3 狀態(tài)寄存器讀寫

W25Q系列一般有三個狀態(tài)寄存器,用來表示一些狀態(tài),如狀態(tài)寄存器1就可以通過讀取來判斷flash的狀態(tài),有沒有忙,寫使能有沒有打開,以及保護位保護了那些地址,這些都要自己去實現(xiàn),市面上包括官方的例程驅(qū)動里都沒有,假如你不判斷的話,如果要寫的地址被保護,是寫不進去的,還有可能出現(xiàn)異常,這些都可以通過讀取狀態(tài)寄存器1和2來判斷和處理。以及結(jié)合WP腳。

這些功能在正式的產(chǎn)品中我們一定要考慮,否則你的驅(qū)動就不穩(wěn)定,不安全,因為工業(yè)現(xiàn)場各種干擾,以及其他異常情況。可能你在實驗室跑的好好的代碼,到現(xiàn)場就不行了

5.4 讀寫擦驅(qū)動

擦除操作比較耗時,所以如果你是用查詢模式的話,要不斷去查詢狀態(tài),而不能死等,從手冊可以看除時間量級,擦除正片最大需要1000s,還是比較耗時,即使最小的擦除單元4k擦除,最壞情況也需要400ms。用中斷或者DMA方式操作的話不涉及,但DMA的話中斷需要好幾個,有命令,完成,狀態(tài)匹配,收發(fā)完成等。要熟悉這些大概時間量級。方便參考。基于不同模式的驅(qū)動我們在公眾號里都給大家介紹過。

讀寫驅(qū)動,可以參考官網(wǎng)的例程,但是要加一些改動,如考慮讀寫失敗怎么辦,超時退出,如果連續(xù)兩次還是失敗,怎么考慮,我們一般會考慮嘗試三次,如果第一次失敗就嘗試第二次讀取,第二次失敗,嘗試第三次,這樣可以大大加強安全性,可能99.99%的情況下一次就成功,但不排除失敗的可能性。此外還要考慮參數(shù)的保護。

5.4.1 擦除

可以按照擦除單位來綜合寫一個函數(shù)

這里要注意就是W25Q256 和W25Q01J 的一些區(qū)別。如有的指令前者支持指令地址四線,而后者不支持。

5.4.2 讀操作

讀操作要考慮是single還是dual模式,分別出兩個子函數(shù),讀的指令不同,時序也不同

建議大家一個指令做一個子函數(shù)。如0x6C和0xEC的時序和操作模式就不同,如0X6c

代碼實現(xiàn)

從時序圖可以看到指令單線,地址單線,數(shù)據(jù)4線即 1-1-4模式。0xEC留給大家去聯(lián)系實現(xiàn)。

5.4.3 寫操作

寫操縱也有幾條不同的命令

不同的時序和方式,可以寫成不同的子函數(shù),我們以34h為例子

通過時序圖可以看到是指令單線,地址單線,數(shù)據(jù)四線,這樣就可以實現(xiàn)寫操作了。

5.5 異常

通常我們還需要去管理和處理一些異常情況,例如下面的定義,你也可以按照自己的方式,總之要對異常和錯誤做一些管理。

官方的例子基本上每個都有返回值,大家可以去參考,這樣使你的驅(qū)動更安全可靠。

5.6 其他

其他一些應(yīng)考慮的問題,大家可以根據(jù)自己的需求和應(yīng)用在添加,這里就不在贅述。

6. 測試驗證

開發(fā)完后,就可以寫一個簡答的測試程序,對自己的驅(qū)動進行測試,因為我是在freeRTOS系統(tǒng)下用的,所以建立一個QSPI的測試任務(wù),去實現(xiàn)擦,寫,讀,比較的功能和驗證。截取幾張測試圖

7. 參考文檔

序號 文獻
1 STM32H743RM
2 STM32Cube_FW_H7_V1.6.0

原文標(biāo)題:如何寫好QSPI驅(qū)動

文章出處:【微信公眾號:嵌入式程序猿】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 驅(qū)動
    +關(guān)注

    關(guān)注

    12

    文章

    1953

    瀏覽量

    88522
  • QSPI
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    13355

原文標(biāo)題:如何寫好QSPI驅(qū)動

文章出處:【微信號:InterruptISR,微信公眾號:嵌入式程序員】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之QSPI讀寫外部Flash芯片實驗

    因為本章節(jié)的QSPI Flash相關(guān)實驗例程需要用到板子上的串口功能,因此我們可以直接以前面的“19_UART_Receive_Send”工程為基礎(chǔ)進行修改。
    的頭像 發(fā)表于 03-03 13:57 ?2566次閱讀
    瑞薩RA系列FSP庫<b class='flag-5'>開發(fā)</b>實戰(zhàn)指南之<b class='flag-5'>QSPI</b>讀寫外部Flash芯片實驗

    瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之QSPI控制FLASH的指令

    對主機端(RA6M5)來說,只是它遵守最基本的QSPI通訊協(xié)議發(fā)送出的數(shù)據(jù),但在設(shè)備端(FLASH 芯片)把這些數(shù)據(jù)解釋成不同的意義,所以才成為指令。
    的頭像 發(fā)表于 03-03 10:56 ?2740次閱讀
    瑞薩RA系列FSP庫<b class='flag-5'>開發(fā)</b>實戰(zhàn)指南之<b class='flag-5'>QSPI</b>控制FLASH的指令

    瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之QSPI通訊協(xié)議簡介

    QSPI是Queued SPI的簡寫,是Motorola公司推出的SPI接口的擴展,比SPI應(yīng)用更加廣泛。在SPI協(xié)議的基礎(chǔ)上,Motorola公司對其功能進行了增強,增加了隊列傳輸機制,推出了隊列
    的頭像 發(fā)表于 03-03 10:56 ?2519次閱讀
    瑞薩RA系列FSP庫<b class='flag-5'>開發(fā)</b>實戰(zhàn)指南之<b class='flag-5'>QSPI</b>通訊協(xié)議簡介

    基于RT-Thread與瑞薩 VisionBoard 的多功能電機驅(qū)動開發(fā) | 技術(shù)集結(jié)

    1.前言該項目是基于瑞薩VisionBoard主控芯片開發(fā)的多功能電機驅(qū)動器,核心通過485串口協(xié)議實現(xiàn)外部設(shè)備與驅(qū)動器的通訊,進而控制電機啟停等動作。
    的頭像 發(fā)表于 02-12 18:14 ?4423次閱讀
    基于RT-Thread與瑞薩 VisionBoard 的多<b class='flag-5'>功能</b>電機<b class='flag-5'>驅(qū)動</b>器<b class='flag-5'>開發(fā)</b> | 技術(shù)集結(jié)

    RA MCU眾測寶典 | 在瑞薩CPKCOR-RA8D1B核心板上實現(xiàn)QSPI讀取外部Flash

    RA生態(tài)工作室關(guān)注我們“RAMCU眾測寶典”中I2C/SPI通信與顯示驅(qū)動專題更新了。這次我們聚焦瑞薩【CPKCOR-RA8D1B核心板】開發(fā)板,一步步實現(xiàn)QSPI讀取外部Flash。開啟寶典
    的頭像 發(fā)表于 02-06 18:02 ?5230次閱讀
    RA MCU眾測寶典 | 在瑞薩CPKCOR-RA8D1B核心板上實現(xiàn)<b class='flag-5'>QSPI</b>讀取外部Flash

    如何檢查QSPI的固件版本?

    您好,我是 VF2 的新手,我有一些問題。我有最近購買的 Vision Five 2 v1.3B。我嘗試過通過 NVME 啟動,但它無法從 SD 正確啟動。這是我的問題: 如何檢查我的 QSPI
    發(fā)表于 02-05 06:26

    MAX6954:多功能LED顯示驅(qū)動芯片的深度解析

    具有出色的性能和豐富的功能。 文件下載: MAX6954.pdf 一、產(chǎn)品概述 MAX6954是一款緊湊型顯示驅(qū)動芯片,它通過SPI-/QSPI?兼容的4線串行接口,將微處理器與7段、14段和16段LED顯示器連接起來。該芯片的
    的頭像 發(fā)表于 02-03 15:15 ?153次閱讀

    在瑞薩CPKCOR-RA8D1B核心板上實現(xiàn)QSPI讀取外部Flash

    QSPI是Queued SPI的簡寫,是Motorola公司推出的SPI接口的擴展,比SPI應(yīng)用更加廣泛。在SPI協(xié)議的基礎(chǔ)上,Motorola公司對其功能進行了增強,增加了隊列傳輸機制,推出了隊列串行外圍接口協(xié)議(即QSPI協(xié)
    的頭像 發(fā)表于 01-28 17:27 ?3976次閱讀
    在瑞薩CPKCOR-RA8D1B核心板上實現(xiàn)<b class='flag-5'>QSPI</b>讀取外部Flash

    使用極海APM32F427驅(qū)動QSPI XIP內(nèi)存映射流程

    下面這部分源自APM32F4xx_DAL_SDK_V1.3.0中的示例工程,并基于“QSPI_ReadWrite”例程進行修改,演示如何實現(xiàn)W25Q16JV的擦除、寫入、讀取,以及如何進入XIP內(nèi)存映射模式。
    的頭像 發(fā)表于 12-29 11:13 ?3495次閱讀
    使用極海APM32F427<b class='flag-5'>驅(qū)動</b><b class='flag-5'>QSPI</b> XIP內(nèi)存映射流程

    QSPI PSRAM偽靜態(tài)隨機存儲器選型攻略

    QSPI PSRAM是一種集成了QSPI接口與PSRAM存儲功能的高效芯片。QSPI(四線串行外設(shè)接口)是一種高速串行通信接口,用于連接外部設(shè)備;而PSRAM(偽靜態(tài)隨機存儲器)則結(jié)合
    的頭像 發(fā)表于 10-23 15:40 ?528次閱讀

    STM32H743 QSPI初始化成功,讀數(shù)據(jù)失敗怎么解決?

    在實驗野火開發(fā)部STM32H743時,配置了QSPI驅(qū)動W25Q256JV,初始化成功,但后續(xù)都失敗了,如圖1 我的配置過程如下, 1、使用了CubMX,如下圖 2、CubMX生成了代碼 3
    發(fā)表于 10-14 07:14

    【六岳微LY-F335開發(fā)板試用體驗】基本接口/功能/開發(fā)環(huán)境及開發(fā)體驗

    一、開箱與第一印象 收到 六岳微 LY-F335 開發(fā)板后,整體包裝簡潔大方,板卡及配件擺放規(guī)整,附帶的資料也較齊全開發(fā)板基于LY-F335 芯片 ,主頻高,集成度不錯,接口種類豐富。第一眼印象
    發(fā)表于 09-26 14:43

    ZYNQ UltraScalePlus RFSOC QSPI Flash固化常見問題說明

    璞致 ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常見問題說明
    發(fā)表于 08-08 15:49 ?0次下載

    串行通信接口SPI與QSPI的區(qū)別

    在嵌入式系統(tǒng)的世界里,選擇正確的通信技術(shù)可以對項目的性能和可擴展性產(chǎn)生重大影響。讓我們比較兩個流行的串行通信接口:SPI(串行外設(shè)接口)和QSPI(四路SPI)。
    的頭像 發(fā)表于 04-09 15:24 ?3261次閱讀
    串行通信接口SPI與<b class='flag-5'>QSPI</b>的區(qū)別

    MRCANHUBK344測試Qspi_Ip_Example_S32K344,遇到Qspi_Ip_Init返回STATUS_QSPI_IP_BUSY的問題求解

    我目前正在 MRCANHUBK344 開發(fā)人員板上測試Qspi_Ip_Example_S32K344。示例項目使用 MX25L6433FM2R-08G 閃存器件,而 CANHUB 板卡配備了
    發(fā)表于 03-20 07:32