1. 程式人生 > >SPI方式讀取外部FLASH抓取時序圖

SPI方式讀取外部FLASH抓取時序圖

使用STM32的SPI控制器,對外部的W25X16 FLASH(2M位元組)晶片進行操作。以下為邏輯分析儀抓取的時序。

         以下是該FLASH晶片的命令表。

    image

1、          1、讀取器件ID。

先拉低片選訊號CS,再發送命令0XAB,再發送三個位元組的dummy。讀取第四個位元組資料,資料就是device ID。最後拉高CS,結束一次操作。

    image

         以下是傳送命令0XAB放大的圖。可以看出CLK空閒狀態是高電平(CPOL = 1),偶數邊沿為取樣時刻(CPHA = 1)。

    image

2、          2、讀取jedec標準ID

先拉低片選訊號CS,再發送命令0X9f,讀取三個資料。最後拉高CS,結束一次操作。

第一個資料:生產廠商

第二個資料:儲存器型別

第三個資料:容量

    image

3、         3、 寫使能

Flash在寫資料,擦除,寫狀態暫存器之前,首先要開啟寫使能。開啟寫使能的方法也很簡單,傳送命令0x06即可。

    image

4、         4、 寫資料

拉低片選,傳送命令0x02,表示寫操作。傳送3個位元組的地址。因為選用的flash晶片大小為2M,地址範圍為0x00_0000 – 0x1f_ffff。所以需要24位表示地址。因此要傳送3個位元組來表徵寫入的地址。

   image

         三個地址傳送完畢後,就開始傳送要寫入的資料。

         資料寫完畢後,拉高片選即可。

    image

         在寫資料完成後,要讀取flash晶片的狀態暫存器,判斷器件狀態。

         讀取狀態暫存器,所用命令為0x05,第二個SPI週期即為讀取的狀態暫存器值,可以一直讀取該狀態暫存器的值。

image

當讀到狀態暫存器的值為0x00後,表示器件完成寫操作。

    image

5、          5、扇區擦除

使用命令0x20對扇區進行擦除。

         擦除是從寫入扇區地址開始到扇區結束地址之間的內容擦除。即如果寫入擦除的地址是0x00_0010,那麼就會將0x00_0010 – 0x00_0FFF(一個扇區大小是4k)之間的記憶體區域擦除為0xff。

    image

6、          

                6、塊擦除

和扇區擦除一樣,只是發的命令為0xd8,擦除的最大大小是64KB。

7、          7、晶片擦除

擦除整個晶片,傳送命令0xc7。

image

8、         8、 讀資料

FLASH的讀資料有三種方式:

第一種是普通讀方式:

先拉低片選訊號CS,再發送命令0X03,傳送讀取資料的地址,3個位元組。後面每個SPI週期,就是讀取的資料。

    image

         第二種是快速讀方式(fast read):

先拉低片選訊號CS,再發送命令0X0b,傳送讀取資料的地址,3個位元組。傳送一個dummy的SPI週期,後面每個SPI週期,就是讀取的資料。

         快速讀方式,要等待5個SPI週期後,才開始讀取有效資訊。而普通讀模式下,只需等待4個SPI週期後,就可以讀取有效資訊了。

    image

         第三種是快速雙通道讀方式(fast read dual output)

拉低片選CS,傳送命令0x3b,傳送讀取資料的地址,3個位元組。傳送一個dummy的SPI週期,後面每個SPI週期,就是讀取的資料。

image

         從時序圖。看出這種讀方式下,MOSI和MISO都參與了讀資料的傳輸。所以在這種模式下,一個SPI可以讀取兩個位元組。

                        第一個位元組              第二個位元組

         MISO    (1D7, 1D5, 1D3, 1D2)    (2D7, 2D5, 2D3, 2D2)

         MOSI        (1D6, 1D4, 1D2, 1D0)    (2D6, 2D4, 2D2, 2D0)

         下面通過波形圖比較一下三種讀取資料方式:

普通read讀取的波形圖。第一個有效資料在第5個SPI處,值為0x69, 第二個有效資料在第6個SPI處,值為0x20。

     image

Fast read讀取的波形圖。第一個有效資料在第6個SPI處,值為0x69,第二個有效資料在第7個SPI處,值為0x20。

      image

Fast read dual讀取的波形圖。MOSI和MISO同時參與資料的讀取。第一個有效資料和第二個有效資料在第6個SPI處。

MISO   0 1 1 0  0 1 0 0         ( 1D7, 1D5, 1D3, 1D1)    ( 2D7, 2D5, 2D3, 2D1) 

         MOSI   1 0 0 1  0 0 0 0   (1D6, 1D4, 1D2, 1D0)  (2D6, 2D4, 2D2, 2D0)

         組合得到第一個資料   01 10 10 01  0x69

組合得到第二個資料   00 10 00 00  0x20

      image

       從抓取的波形圖,來學習SPI驅動外部的FLASH,是可以很直觀的看到資料傳輸的過程,從而對SPI協議及外部的FLASH驅動有更深的瞭解。

    可以下載pdf,檢視清晰波形圖片資訊。

相關推薦

SPI方式讀取外部FLASH時序

使用STM32的SPI控制器,對外部的W25X16 FLASH(2M位元組)晶片進行操作。以下為邏輯分析儀抓取的時序。          以下是該FLASH晶片的命令表。      1、          1、讀取器件ID。 先拉低片選訊號CS,再發送命令0X

spring boot框架學習之重要註解3註解方式讀取外部資源配置文件

凱哥java java註解 本節主要內容:1:是用非註解方式怎麽獲取配置文件中的配置項2:使用註解實戰獲取外部properties文件配置項聲明:本文是《凱哥陪你學系列-框架學習之spring boot框架學習》中spring boot框架學習學前掌握之重要註解(3)-通過註解方式讀取外部資源配置文件

spring boot框架學習學前掌握之重要註解(4)-通過註解方式讀取外部資源配置文件2

spring boot kaigejava 凱哥java本節主要內容:1:思考問題:怎麽讀取多個配置文件,如果文件不存在怎麽辦2:配置數據庫連接池聲明:本文是《凱哥陪你學系列-框架學習之spring boot框架學習》中spring boot框架學習學前掌握之重要註解(4)-通過註解方式讀取外部資源配置文件2

Java配置方式讀取外部的資源配置文件

eba hsi ptp vlt uwp img dbm woe fsp 通過@PropertySource可以指定讀取的配置文件,通過@Value註解獲取值,具體用法: package cn.qlq; import org.springframework.con

小白爬蟲第一彈之妹子【更新版】

mozilla dir mac print 1.0 bsp 實例化 com def 最近對爬蟲感興趣,參考了 http://cuiqingcai.com/3179.html 這篇文章,琢磨的小試身手,但是按照原文發現圖片下載下來全是打不開的圖片,這不是我想要的啊,嘗試

在python3下使用OpenCV 攝像頭像提取藍色

bit back str num https mage windows www. splay 工作中需要對攝像頭進行調試, Python平臺大大提高調試效率. 從網找到段代碼, 可以從攝像頭圖像中摳出藍色. import cv2 import numpy as np cap

在python3下使用OpenCV 攝像頭像並實時顯示3色直方圖

rom vid mar inline oat ima tps ble log 以下代碼為在Python3環境下利用OpenCV 抓取攝像頭的實時圖像, 通過OpenCV的 calHist函數計算直方圖, 並顯示在3個不同窗口中.import cv2 import numpy

Python妹子

前言 如果你對python爬蟲感興趣,不妨試一下python語言的魅力。 學習一門新的語言怎麼樣才有動力呢,我比較喜歡妹子,如果在我python入門後,想學習下python爬蟲技術,物件如果是一個豐富的妹子圖網站,這是不是一個增益buff呢 [滑稽]

【Hibernate學習】 —— 策略(註解方式)

屬性的方法 ould per hql 項目 操作記錄 新建 應用程序 span 當應用程序須要在關聯關系間進行導航的時候。hibernate怎樣獲取關聯對象的策略。 抓取策略的方式: FetchType.LAZY:懶載入。載入一個實體時。定

Python實例之網易雲課堂搜索數據(post方式json型數據)並保存為TXT

網易雲 pytho sco 關鍵詞 page json ner urn 頁碼 本實例實現了抓取網易雲課堂中以‘java’為關鍵字的搜索結果,經詳細查看請求的方式為post,請求的結果為JSON數據 具體實現代碼如下: import requests import json

Python數據的幾種方式

cnblogs 方式 edit api lencod nco financial 取數 .org import urllib.requestresponse = urllib.request.urlopen(‘http://python.org/‘)html = res

實例:使用puppeteer headless方式JS網頁

puppeteer chromium 爬蟲 puppeteer google chrome團隊出品的puppeteer 是依賴nodejs和chromium的自動化測試庫,它的最大優點就是可以處理網頁中的動態內容,如JavaScript,能夠更好的模擬用戶。 有些網站的反爬蟲手段是將部分內容隱藏

flash讀取外部xml配置檔案基本方法

XML,xml是可擴充套件標記語言的縮寫,全稱為Extensible Markup Language,主要研究什麼 是資料和資料的儲存問題。簡單的說就是如果你想通過讀取外部配置來改變程式載入的功能,可以用到它。         1.一個簡單的XML示例

hibernate的查詢方式策略

查詢方式       根據唯一標識id進行檢索:                   get與load方法(https://blog.csdn.net/qq_4060591

vue專案中jsonp資料實現方式

先安裝依賴:cnpm install --save jsonp 程式碼如下: 1. 然後建立一個jsonp.js import originJSONP from 'jsonp'   //引用jsonp   export default function jsonp(url,data,opt

PHP頁面的幾種方式

我們在開發網路程式時,往往需要抓取非本地檔案,一般情況下都是利用php模擬瀏覽器的訪問,通過http請求訪問url地址, 然後得到html原始碼或者xml資料,得到資料我們不能直接輸出,往往需要對內容進行提取,然後再進行格式化,

Hibernate第四天:Hibernate的查詢方式策略

 目錄 1Hibernate的查詢的方式 1.1Hibernate的查詢方式:OID查詢 1.1.1使用get方法 1.1.2使用load方法 1.2Hibernate的查詢方式:物件導航檢索 1.3Hibernate的查詢方式:HQL檢索 1.3.1初始化一些

Hibernate查詢方式策略(優化)

4. Hibernate查詢方式與抓取策略(優化) 申明:本篇部落格引用黑馬教育;Hibernate其他系列為博主根據黑馬教育整理得到。 上接Hibernate關聯對映(一對多/多對多):https://blog.csdn.net/biggerchong/article/details/

Hibernate查詢方式&策略

Hibernate的查詢方式 1、OID查詢 hibernate根據物件的OID(主鍵)進行檢索   使用get方法 Customer customer=session.get(Customer.class,1l);   使用load方法 Customer customer=s

智聯招聘---scrapy框架和requests庫兩種方式實現

#首先分析目標站點,分析得出結果是在json接口裡,然後抓取企業資訊需要再次請求頁面進行抓取 #1.直接requests請求進行抓取儲存 ##需要注意點: 可能不同企業單頁排版不一樣,需要判斷採取不同形式 儲存為csv檔案注意格式,保證資料表格不換行需要新增