娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM32入門學習筆記之外置FLASH讀寫實驗(上)

發布者:TranquilDreamer最新更新時間:2024-09-25 來源: elecfans關鍵字:STM32  讀寫實驗 手機看文章 掃描二維碼
隨時隨地手機看文章

15.1 FLASH

Flash,全名叫做Flash EEPROM Memory,即平時所說的“閃存”,它結合了ROM和RAM的長處,不僅可以反復擦除,還可以快速讀取數據,STM32運行的程序其實就是存放在Flash當中,但是由于STM32的Flash一般1M左右,只能存儲程序大小的數據,所以往往需要外擴Flash來存儲數據,比如LCD界面當中的漢字字庫,以及文件系統中讀取的文件內容。


但是一般Flash的擦除次數有限制,STM32F1系列最新的文檔指出,片內的FLASH擦寫次數大約在1W次左右,所以一般Flash用于擦除次數不多,但是數據量很大的場合。


這個Flash讀寫實驗我們用到的芯片是W25Q128,這是一款采用SPI協議進行讀寫的Flash芯片,存儲容量為128Mbit,合計16Mbyte,工作電壓2.7V~3.6V。這個實驗我們采用STM32內置的SPI模塊來進行對芯片的讀寫操作,STM32F1的SPI功能很強大,SPI時鐘最高可以到18MHz,支持DMA,可以配置為SPI協議或者I2S協議。


15.2 硬件SPI模塊

通過之前51單片機開發我們可以知道,SPI協議一共需要四根線來完成數據通信,即片選CS,總線時鐘SCK,主機輸入從機輸出MISO和主機輸出從機輸入MOSI四根數據線。STM32的內部SPI模塊結構框圖如下圖所示。

圖片

從上面的結構框圖我們可以發現,硬件SPI的優勢就在于開發者不需要考慮SPI的詳細參數以及時序,只需要配置內部的寄存器,設置速率,電平就可以實現SPI通信。


15.3 相關寄存器

15.3.1 SPI控制寄存器1:SPIx_CR1

1514131211109876543210
BIDIMODEBIDIOECRCENCRCNEXTDFFRXONLYSSMSSILSBFIRSTSPEBR[2:0]MSTRCPOLCPHA

Bit 15:雙向數據模式使能

0:選擇雙線雙向模式

1:選擇單線雙向模式

Bit 14:雙向模式下的輸出使能

0:輸出禁止(只收模式)

1:輸出使能(只發模式)

Bit 13:硬件CRC校驗使能

0:禁止CRC計算

1:啟動CRC計算

Bit 12:下一個發送CRC

0:下一個發送的值來自發送緩沖區

1:下一個發送的值來自發送CRC寄存器

Bit 11:數據幀格式

0:使用8位數據幀格式進行發送/接收

1:使用16位數據幀格式進行發送/接收

Bit 10:只接收

0:全雙工(發送和接收)

1:禁止輸出(只接收模式)

Bit 9:軟件從設備管理

0:禁止軟件從設備管理

1:啟用軟件從設備管理

Bit 8:內部從設備選擇

注:該位只在SSM位為1時有意義。它決定了NSS上的電平,在NSS引腳上的I/O操作無效

Bit 7:幀格式

0:先發送MSB

1:先發送LSB

Bit 6:SPI使能

0:禁止SPI設備

1:開啟SPI設備

Bit 5~Bit 3:波特率控制

000:f PCLK /2

001:f PCLK /4

010:f PCLK /8

011:f PCLK /16

100:f PCLK /32

101:f PCLK /64

110:f PCLK /128

111:f PCLK /256

Bit 2:主設備選擇

0:配置為從設備

1:配置為主設備

Bit 1:時鐘極性

0:空閑狀態時,SCK保持低電平

1:空閑狀態時,SCK保持高電平

Bit 0:時鐘相位

0:數據采樣從第一個時鐘邊沿開始

1:數據采樣從第二個時鐘邊沿開始


15.3.2 SPI狀態寄存器:SPIx_SR

1514131211109876543210
-BSYOVRMODFCRCERRUDRCHSIDETXERXNE






Bit 7:忙標志

0:SPI不忙

1:SPI正忙于通信,或者發送緩沖非空

Bit 6:溢出標志

0:沒有出現溢出錯誤

1:出現溢出錯誤

Bit 5:模式錯誤(在SPI模式下不使用)

0:沒有出現模式錯誤

1:出現模式錯誤

Bit 4:CRC錯誤標志(在SPI模式下不使用)

0:收到的CRC值和SPI_RXCRCR寄存器中的值匹配

1:收到的CRC值和SPI_RXCRCR寄存器中的值不匹配

Bit 3:下溢標志位(在SPI模式下不使用)

0:未發生下溢

1:發生下溢

Bit 2:聲道(在SPI模式下不使用)

0:需要傳輸或者接收左聲道

1:需要傳輸或者接收右聲道

Bit 1:發送緩沖為空

0:發送緩沖非空

1:發送緩沖為空

Bit 0:接收緩沖非空

0:接收緩沖為空

1:接收緩沖非空


關鍵字:STM32  讀寫實驗 引用地址:STM32入門學習筆記之外置FLASH讀寫實驗(上)

上一篇:STM32入門學習筆記之外置FLASH讀寫實驗(下)
下一篇:在STM32中的func1和func2函數,哪個效率高?

推薦閱讀最新更新時間:2025-04-15 21:43

STM32學習筆記7.1】定時器基本原理
前言 本系列文章統一圍繞STM32F103C8T6最小系統開發板進行記錄,如涉及其他開發板將會特別說明。 基本概念 主要功能 嵌入式領域中廣泛應用, 主要通過計時、計數的方式,周期性執行某件工作,如檢測、響應、控制等。 應用場合:輸入捕獲、輸出波形、計時等。 類型 由硬件資源決定,其精度主要由硬件時鐘決定 單個硬件定時器可以擴充出多個軟件定時器 硬件定時器 軟件定時器:由軟件實現 – 循環延時 工作原理:本質上是一個計數器,當計數器計滿溢出時,代表著一次事件,即完成一次計時。 STM32F1x定時器 8個Timer定時器+1個系統嘀嗒定時器(SysTick)+2個看門狗定時器 Timer定時器
[單片機]
STM32新建匯編工程
學習stm32過程中,發現網上絕大部分的教程都是C語言的教程,當然在所有公司的嵌入式開發過程中也是絕大部分使用的都是C語言,但是也會有一部分需要直接操作內核寄存器的需求,例如RTOS中切換任務的時候,也確實沒有找到有人專門用匯編語言做項目,故而專門用匯編語言實現一些外設的操作,以此來熟練掌握匯編語言,方便后續繼續學習rtos或者深入單片機的內核做一些研究,文章會記錄開發的流程和實現的代碼,有任何問題也請指出,方便一起學習,共同進步 新建匯編工程 第一步點擊工程,新建,由于我的開發板是如下的型號,所以選擇對應的芯片 新建工程 第二步選擇啟動文件,keil官方給芯片提供了啟動文件,按照如下選擇,啟動文件是匯編語言實現的,主要的
[單片機]
STM32—HAL庫
以stm32f4xx.h舉例,HAL庫是和CubeMX軟件來互相配合使用。用CubeMx來配置STM32芯片的時鐘、管腳、各個外設的底層配置,再用HAL庫去調用這些底層配置文件來實現快速開發的目的。讓我們省去了配置大量底層驅動的工作,集中精力專注于應用層實現功能的目的。 stm32f4xx_hal.h:stm32f4xx_hal.c/h 主要實現HAL庫的初始化、系統滴答相關函數、及CPU的調試模式配置 stm32f4xx_hal_conf.h : 該文件是一個用戶級別的配置文件,用來實現對HAL庫的裁剪,其位于用戶文件目錄,不要放在庫目錄中。 接下來對于HAL庫的源碼文件進行一下說明,后面加上_外設或者模塊名(如:stm
[單片機]
STM32學習筆記(三)Register Map
本節與 微處理器原理與應用 課程內容類似 系統架構 CM3內核 基于CM3的MCU Cortex-M3采用了哈佛結構,擁有獨立的指令總線和數據總線,可以讓取指與數據訪問并行不悖。但是另一方面,指令總線和數據總線共享同一個存儲器空間(一個統一的存儲器系統),可尋址空間為 4GB。 Cortex-M3三級流水線 Cortex-M3處理器使用一個3級流水線。流水線的3個級分別是:取指,解碼和執行。 STM32系統架構 系統架構圖 閃存存儲器接口 --- FLITF(The Flash memory interface):ICode與Flash的接口。 閃存 --- Flash:系統掉電后也能正常保存,用于存放靜止態的程序
[單片機]
STM32之五外部中斷(下)
通過對外部中斷理論的些許理解,這次我們利用兩個按鍵key1和key2來控制led1和led2的亮滅,按key1進入key1的中斷,控制對應的led亮滅,按key2進入key2的中斷,控制相應的led的亮滅 同樣,涉及到中斷,我們要建立兩個文件,exti.c及exti.h,首先來看看exti.c 用到中斷,自然我們要用到stm32f10x_it.c函數,將中斷響應函數放在里面,打開這個文件你會發現里面只是給出了部分中斷函數,找來找去也沒有我們需要的中斷函數體,這時需要我們自己添加函數體,看下我添加的函數體: 但是這個函數名可不是隨便起的,具體每個中斷函數體的函數名怎么書寫,我們可以打開startup_stm32f10x_hd.
[單片機]
<font color='red'>STM32</font>之五外部中斷(下)
手把手之STM32內核定時器
●什么是SysTick SysTick是一個定時器,這個定時器的特殊之處在于,它是有內核來管理的,因此SysTick也被稱作是內核定時器。它完全獨立于STM32芯片,無論是哪款芯片都會有SysTick定時器只要芯片的內核一樣,那么SysTick的使用方法就一樣 ●SysTick的作用 對于STM32這樣的高級芯片,我們可以給它搭載一個操作系統。操作系統是有定時器的,那么操作系統的定時器就是基于SysTick來設計出來的。操作系統在設計定時器的時候無法估計它本身是搭載在哪一種芯片上的,而對于一個系列的芯片它們的內核是一樣的,因此操作系統的定時器需要基于內核來設計。只有基于SysTick設計出來的操作系統才能移植到更多的芯
[單片機]
手把手之<font color='red'>STM32</font>內核定時器
gentoo stm32 交叉編譯環境
crossdev -t s4 --gcc =5.4.0 -v arm-none-eabi gcc版本為當前系統安裝的版本,通過gcc -v 可以獲得 編譯完成后: arm-none-eabi-addr2line arm-none-eabi-elfedit arm-none-eabi-gcc-ranlib arm-none-eabi-ld.gold arm-none-eabi-size arm-none-eabi-ar arm-none-eabi-emerge arm-none-eabi-gcov arm-none-eabi-nm arm-none-eabi-strings arm-none-ea
[單片機]
STM32 Bootloader 跳轉
1. Bootload #define ApplicationAddress 0x08003000 2. App 修改
[單片機]
<font color='red'>STM32</font> Bootloader 跳轉
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 历史| 大方县| 漳州市| 元江| 天柱县| 北宁市| 江门市| 方山县| 红原县| 准格尔旗| 贡觉县| 巩义市| 合作市| 昌乐县| 理塘县| 二连浩特市| 江源县| 玉林市| 巍山| 绥芬河市| 深水埗区| 大城县| 顺义区| 鄯善县| 荥经县| 广州市| 嘉祥县| 吴江市| 巨鹿县| 纳雍县| 宿迁市| 金乡县| 登封市| 台前县| 长沙县| 宁远县| 常山县| 德清县| 龙江县| 中阳县| 和硕县|