STM32F0單片機入門——用SPI HAL庫讀寫W25Q128

2021-01-17 OFweek維科網

1.W25Q128 介紹

當我們有比較多的數據需要掉電存儲時,上一篇文章所介紹的 24C02 (256個字節EEPROM)就不夠了。此時我們會用到另外一種類型的存儲器,即 Flash。比如具有 SPI 接口的 W25Q128。這顆小晶片雖然也只有簡單的 8 個引腳,但存儲容量卻達到了128M-bit,也就是 16M 字節,同時它的讀寫速度可以達到 66MB/S。但是由於 STM32F030 不支持 Quad/Dual SPI,只能以標準 SPI 方式讀寫,所以速度會低一些。以下是 W25Q128 的主要特點:

a.133MHz SPI Clock。

b.10萬次擦寫壽命,20年數據保持時間。

c.每顆具有64-Bit唯一序列號 Unique ID。

d.每次可以寫入 1 到 256 字節數據。

e.寫之前需要對目的地址所在扇區進行擦除操作。

( Winbond W25Q128 datasheet )

我們通過以下連線使 W25Q128 連至 STM32F030 的 SPI1:

W25Q128                   STM32F030

Pin 1   /CS               PA4 也可以用其它 GPIO 引腳

Pin 2   DO                PA6 SPI1_MISO

Pin 3   /WP              ( VCC )

Pin 4   GND              ( GND )    

Pin 5   DI                PA7 SPI1_MOSI

Pin 6   CLK               PA5 SPI1_SCK

Pin 7   /HOLD or /RESET   ( VCC )

Pin 8   VCC               ( VCC )

2.代碼

代碼的開發如果想提高效率,一個方法就是充分利用前人的成果,而不是自己一再的去造輪子。對於W25Q128 我們可以從Github上找到驅動代碼:https://github.com/nimaltd/w25qxxGNU General Public License v3.0我們把它集成進SPI例程裡,完成 W25Q128 的讀寫功能。Step 1,下載後把解壓的文件夾 w25qxx-master 放在 STM32Cube_FW_F0_V1.11.0DriversBSPComponents

Step 2, 我們用 Keil 打開下面這個工程:STM32Cube_FW_F0_V1.11.0ProjectsSTM32F030R8-NucleoExamplesSPISPI_FullDuplex_ComPollingMDK-ARMProject.uvprojx在項目(STM32F030R8-Nucleo)上點滑鼠右鍵,選擇Add Group...新建 Group 並改名稱為 DriversBSPComponentsw25qxx-master

相關焦點

  • STM32教程(五)HAL庫之GPIO函數及實例詳細介紹!
    今天介紹STM32 HAL庫的GPIO函數庫,首先打開stm32f4xx_hal_gpio.h文件,我們能看到一些結構體定義以及GPIO引腳的地址定義等等,這些都很好理解,我們需要重點看HAL庫中GPIO的函數庫有哪些?以及這些函數庫有什麼作用以及怎麼使用這些函數?
  • STM8S單片機入門2(關機模式開關機按鈕)
    所以電池供電系統一般採用按鈕開關,用一個按鈕配合軟體實現按一次開機、再按一次關機的功能及自動關機的功能。本文引用地址:http://www.eepw.com.cn/article/201807/383977.htm這部分內容就講述如何在上實現一鍵式的開關機功能。
  • 正點原子-戰艦V3第四章 STM32F1 基礎知識入門
    下面我們想著重講解位操作在單片機開發中的一些實用技巧。1) 不改變其他位的值的狀況下,對某幾個位進行設值。這個場景單片機開發中經常使用,方法就是先對需要設置的位用&操作符進行清零操作,然後用|操作符設值。
  • STM8 STM32 數據類型
    ▲STM32的數據類型的宏定義STM32採用了大量的固件庫,其中在2.0庫中有24個數據類型如下typedef unsigned char u8;0~255一字節typedef signed char s8;-128~127typedef volatile unsigned char vu8;typedef volatile
  • spi與i2c總線有什麼區別
    SPI,是一種高速的,全雙工,同步的通信總線,並且在晶片的管腳上只佔用四根線,節約了晶片的管腳,同時為PCB的布局上節省空間,提供方便,正是出於這種簡單易用的特性,如今越來越多的晶片集成了這種通信協議,比如AT91RM9200。
  • 怎麼學習STM32單片機?看老司機是怎麼說的!
    本文引用地址:http://www.eepw.com.cn/article/201705/359058.htm  我不是說STM32不好,而是這種為了學習單片機而去學習單片機的思路不對。  你問,如何系統地入門學習stm32?  本身就是一個錯誤的問題。
  • STM32F1與STM32F0在GPIO_TypeDef 寄存器方面的不同
    STM32F103+NRF24L01用最小系統板搭了個平臺,加上網上的例程,問題是檢查NRF24L01的時候,一直沒法找到,讀寫地址寄存器失敗,起初懷疑是引線的問題,自己檢查連線以及針腳定義,都沒有發現問題,既然針腳沒有問題懷疑是SPI通訊的問題,接著檢查SPI配置,都沒有發現明顯的錯誤,儘管分頻到256還是不行,十分不解,檢查時序代碼,因為是網上現成的代碼本來想不應該有問題,但是還真的發現問題了,
  • 如何實現STM32F407單片機的ADC轉換
    用到的引腳是PA3也就是ADC1的通道3 1、ADC的主要參數 a、解析度----stm32f407的解析度有6位、8位、10位、12位,參考電壓如果是3.3 那麼最小解析度就是3.3/4095。 b、轉換時間----stm32f407的最高允許頻率是36M,最快轉換時間 = 3+12個周期 =0.71us。
  • 如何用Pandas庫實現MySQL資料庫的讀寫?
    本次分享將介紹如何在Python中使用Pandas庫實現MySQL資料庫的讀寫。首先我們需要了解點ORM方面的知識。可以使用pip命令安裝SQLAlchemy模塊:  '資料庫類型+資料庫驅動名稱://用戶名:口令@機器地址:埠號/資料庫名'  Pandas讀寫MySQL資料庫  我們需要以下三個庫來實現Pandas讀寫MySQL資料庫:  pandas  sqlalchemy
  • STM32四種庫對比:寄存器、標準外設庫、HAL、LL
    相信學習過STM32的朋友,對標準外設庫都不陌生,是一組外圍設備的C語言代碼集合。也是目前ST官方主推的一套開發STM32的庫。 HAL針對的是具有一定嵌入式基礎的開發人員,HAL具有很好的移植性。
  • 射頻讀寫系統的構成和基本原理
    ②閱讀器,讀寫電子標籤信息的設備。主要任務是控制射頻模塊向標籤發射讀取信號,並接收標籤的應答;對標籤的對象標識信息進行解碼,將對象標識信息連帶標籤上其他相關信息傳輸到主機以供處理。③天線,標籤與閱讀器之間傳輸數據的發射、接收裝置。射頻讀寫系統基本原理如下:讀寫器向卡片發一組固定頻率的電磁波,卡片內有一個LC串聯諧振電路,其頻率與讀寫器發射的頻率相同。
  • STM32學習筆記——使用函數庫編程控制GPIO口輸出
    看了網上許多人的代碼以及各類開發板所帶的例程,大多數使用的都是官方發布的函數庫來編程,通過查詢後發現,使用函數庫來編程可以簡化開發過程,並不需要追溯到各個寄存器,通過查看庫手冊,新手也可以快速應用STM32,因此
  • NumPy庫中數組數據文件的讀寫
    數組數據文件的讀寫我們還沒有講如何讀取文件中的數據。NumPy這方面的內容很重要,用處很大,尤其是在處理數組中包含大量數據的情況時。二進位文件的讀寫NumPy的save( )方法二進位格式保存數據,load( )方法則從二進位文件中讀取數據。假如你有一個數組要保存,例如數據分析過程中產生的結果,調用save( )函數即可,參數有兩個:要保存到的文件名和要保存的數組,其中文件名中的.npy擴展名系統會自動添加。
  • 通俗易懂講PIC單片機:從一竅不通到入門進步
    單片機入門不難------談PIC系列(轉自礦石收音機論壇---嶗山)十年前的老帖子,講得通俗易懂,分享之。單片機正常運行時接高電平。當有一個低電平脈衝輸入到這個腳時單片機就復位。所謂復位就是單片機內部所有的工作部件統統回到規定的狀態,程序也復位到頭一句上開始逐條運行。例如,你設計的一個報警鎖定的 LED紅燈亮後,當需要解除報警時,用一個按鈕給這個腳瞬時接地一下,相當於給它一個夫脈衝,系統就復位了,led燈就熄滅了,程序從頭開始。
  • 基於ISO14443 TypeA標準讀寫器的設計與實現
    摘要:文中以ST公司的超低功耗單片機STMS8L152C6T6為主控晶片,控制恩智浦公司的高集成度讀寫器晶片MFRC1522,設計實現了遵循ISO/IEC14443AA協議的讀寫器模塊,該模塊提供了用戶二次開發功能。可方便地集成到用戶應用系統中。
  • STM32F1通用定時器配置步驟(使用HAL庫)
    定時器定時時間計算公式如下:Tout= ((per)*(psc+1))/Tclk;(3)設置定時器中斷類型,並使能void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);(4)設置定時器中斷優先級,使能定時器中斷通道NVIC初始化庫函數是
  • avr單片機和stm32區別與優缺點分析
    通常時鐘頻率用4~8MHz,故 最短指令執行時間為250~125ns。   avr單片機缺點:   1. 是沒有位操作,都是以字節形式來控制和判斷相關寄存器位的   2. C語言與51的C語言在寫法上存在很大的差異,這讓從開始學習51單片機的朋友很不習慣   3.
  • 跌破300元關口 6款128GB SSD對比評測(全文)_固態硬碟_固態硬碟...
    入門級的英睿達BX100 SSD    為此本文集合6款288-359元的入門級128GB SSD進行性能對比,分析哪些影馳鎧甲戰將 128GB SSD    影馳鎧甲戰將 128GB SSD屬於影馳入門級SSD體系當中的高階產品,其特點是「土豪金」外殼,這預示它的性能高於普通的戰將
  • 基於51單片機的TFT液晶顯示設計
    , 處理速度等都無法與新型高速單片機相提並論, 但其低廉的價格, 極低的入門難度以及適用於簡單場合應用等特點, 依然是開發者的常用選擇之一。  用51單片機驅動液晶模塊通常都使用1602和12864等極為簡單的液晶模塊, 這裡介紹用51單片機驅動QVGA解析度的TFT液晶模塊, 以實現彩色和更為複雜的內容顯示的方法。同時, 本文還將使用DS1302晶片和DS18B20晶片來實現在液晶屏上顯示實時時鐘和溫度。
  • 射頻識別系統中讀寫模塊的軟硬體設計介紹
    讀寫器在整個射頻識別系統中起著舉足輕重的作用。讀寫器的頻率決定了射頻識別系統的工作頻段, 其功率直接影響射頻識別的距離。人們通過計算機應用軟體來處理對射頻標籤寫入或讀取其攜帶的數據信息,由於標籤的非接觸性,人們必須藉助處於應用系統與標 籤之間的讀寫器來實現數據的讀寫功能。這使得讀寫器在整個通信過程中起著關鍵性的橋梁作用。