程式設計和擦除快閃儲存器
主儲存塊容量:
小容量產品主儲存塊最大為4k×64
位,每個儲存塊劃分為32個
1k位元組的頁(見表
2)。
中容量產品主儲存塊最大為16k×64
位,每個儲存塊劃分為
128個
1k位元組的頁(見表
3)。
大容量產品主儲存塊最大為64k×64
位,每個儲存塊劃分為
256個
2k位元組的頁(見表
4)。
互聯型產品主儲存塊最大為32k×64
位,每個儲存塊劃分為
128個
2k位元組的頁(見表
5)。 ─
資訊塊容量:
互聯型產品有
2360×64
位(見表5)。
其它產品有
258×64位
(見表2
30/754、表3、表
4)。
快閃儲存器儲存器介面的特性為:
● 帶預取緩衝器的讀介面
(每字為2×
64位)
● 選擇位元組載入器
● 快閃儲存器程式設計
/擦除操作
● 訪問
/寫保護
大容量每個扇區2048個位元組
本文需要注意的問題是就是防止棧溢位,
1、定義區域性變數需要修改啟動檔案棧的大小(預設設定是0x400=1024個位元組)
2、定義乙個全域性變數
#ifndef __stmflash_h__
#define __stmflash_h__
#include "stm32f1xx_hal.h"
enum flash;
uint32_t read_4byte_flash(uint32_t addr );
uint8_t write_4byte_flash(uint32_t addr ,uint32_t data);
uint8_t write_n_4byte_flash(uint32_t addr ,uint32_t *data,uint32_t len);
uint8_t __neeterease(uint32_t start_addr ,uint32_t len);
#endif /* __stmflash_h__ */
#include "flash.h"
#include "string.h"
#include "stdlib.h"
uint32_t read_4byte_flash(uint32_t addr )
uint8_t write_4byte_flash(uint32_t addr ,uint32_t data)
} }else //不需要擦除就從偏移開始
} }
hal_flash_lock();
return flag;}/*
本函式操作的整型資料 4個位元組;flash是以乙個位元組為乙個位址的
addr 起始位址
data 資料開始位址
surplus 整型資料長度1len=4byte ;最大為 stm32_flash_page_size/4; */
uint8_t write_n_4byte_flash(uint32_t addr ,uint32_t *data,uint32_t len)
else
surplus=len;
for(page_offset=0;page_offsetpage_int_size ? page_int_size:surplus;
base_addr = stm32_flash_base + (start_page+page_offset)*stm32_flash_page_size;
surplus = surplus-erease_size;
} write_one_page_data(base_addr,_offset,data,erease_size);
data+=erease_size;
//_offset=0;
}return 1;
}
STM32 片上Flash 操作
之前iap時候記錄過一些,今天對特定地方寫又加深了印象,寫與擦除都需要先unclock 1 讀取指定位址的半字 16位資料 2 faddr 讀位址 此位址必須為2的倍數 3 返回值 對應資料.4u16 stmflash readhalfword u32 faddr 5stmflash readhal...
STM32關於操作內部FLASH整理
stm32的flash分為主儲存塊 資訊塊和快閃儲存器儲存器介面暫存器等 3 部分組成。主儲存塊用於儲存具體的程式 和使用者資料。起始位址0x08000000,b0和b1接gnd從這裡開始執行程式。資訊塊用於負責由stm32出廠時放置2kb的啟動程式 bootloader 和512b的使用者配置資訊...
STM32內部Flash的操作函式
1.iap遠端更新機制說明 3.stm32內部flash的操作函式 stm32 操作內部flash的函式介面 include inflash.h include stm32f10x flash.h 功 能 不檢查的寫入內部flash param1 起始位址 param2 要寫入的資料指標 param...