S
四川BBBBBBBBBBBBBBB怎么学
首页
速度
优化工具
☰
首页
速度
收录
工具
首页
/
速度优化
/
18K.8.35:成色蓝莓,品鉴时光的璀璨印记
网站优化
亚瑟野狼七月潜入商场:谁是真正的购物王者?
当香蕉遇上漫画:一场跨界美味的奇幻之旅
2026-06-08 22:43:50
阅读时长:4分钟
562次阅读
核心内容摘要
面红耳赤不堪入目的小说
w25q
h#ifndef__W25Q64_H#define__W25Q64_H#includemain.h#includespi.h// 引脚定义#defineW25Q64_CS_PINGPIO_PIN_15#defineW25Q64_CS_PORTGPIOA// W25Q64指令集#defineW25Q64_WRITE_ENABLE0x06#defineW25Q64_WRITE_DISABLE0x04#defineW25Q64_READ_STATUS10x05#defineW25Q64_WRITE_STATUS10x01#defineW25Q64_READ_DATA0x03#defineW25Q64_PAGE_PROGRAM0x02#defineW25Q64_SECTOR_ERASE0x20#defineW25Q64_CHIP_ERASE0xC7#defineW25Q64_POWER_DOWN0xB9#defineW25Q64_RELEASE_PD0xAB#defineW25Q64_MANUF_DEVICE_ID0x90#defineW25Q64_JEDEC_ID0x9F// Flash容量参数#defineW25Q64_PAGE_SIZE256#defineW25Q64_SECTOR_SIZE4096#defineW25Q64_TOTAL_SIZE(8*1024*
// 8MB// 函数声明voidW25Q64_Init(void);uint8_tW25Q64_ReadByte(uint32_taddr);voidW25Q64_ReadBytes(uint32_taddr,uint8_t*buf,uint32_tlen);voidW25Q64_WriteByte(uint32_taddr,uint8_tdata);voidW25Q64_WriteBytes(uint32_taddr,uint8_t*data,uint32_tlen);voidW25Q64_ModifyByte(uint32_taddr,uint8_tdata);voidW25Q64_EraseSector(uint32_tsector_addr);voidW25Q64_WaitBusy(void);uint32_tW25Q64_ReadID(void);#endif/* __W25Q64_H */w25q
c#includew25q
h// 私有函数声明staticvoidW25Q64_CS_Low(void);staticvoidW25Q64_CS_High(void);staticvoidW25Q64_WriteEnable(void);staticuint8_tW25Q64_ReadStatus(void);// 初始化函数voidW25Q64_Init(void){W25Q64_CS_High();HAL_Delay(
;// 读取ID验证连接uint32_tidW25Q64_ReadID();if(id0xEF
// W25Q64JV的JEDEC ID{// 初始化成功}}// 读取单个字节uint8_tW25Q64_ReadByte(uint32_taddr){uint8_tcmd[4]{W25Q64_READ_DATA,(addr
0xFF,(addr
0xFF,addr0xFF};uint8_tdata0;W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,4,
;HAL_SPI_Receive(hspi6,data,1,
;W25Q64_CS_High();returndata;}// 读取多个字节voidW25Q64_ReadBytes(uint32_taddr,uint8_t*buf,uint32_tlen){uint8_tcmd[4]{W25Q64_READ_DATA,(addr
0xFF,(addr
0xFF,addr0xFF};W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,4,
;HAL_SPI_Receive(hspi6,buf,len,
;W25Q64_CS_High();}// 写入单个字节voidW25Q64_WriteByte(uint32_taddr,uint8_tdata){uint8_tcmd[5]{W25Q64_PAGE_PROGRAM,(addr
0xFF,(addr
0xFF,addr0xFF,data};W25Q64_WriteEnable();W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,5,
;W25Q64_CS_High();W25Q64_WaitBusy();}// 写入多个字节注意不能跨页写入voidW25Q64_WriteBytes(uint32_taddr,uint8_t*data,uint32_tlen){// 确保不跨页写入uint32_tpage_remainW25Q64_PAGE_SIZE-(addr%W25Q64_PAGE_SIZE);uint32_twrite_len(lenpage_remain)?page_remain:len;uint8_t*cmd(uint8_t*)malloc(write_len
;if(cmdNULL)return;cmd[0]W25Q64_PAGE_PROGRAM;cmd[1](addr
0xFF;cmd[2](addr
0xFF;cmd[3]addr0xFF;memcpy(cmd[4],data,write_len);W25Q64_WriteEnable();W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,write_len4,
;W25Q64_CS_High();W25Q64_WaitBusy();free(cmd);// 如果还有数据需要写入递归调用if(lenwrite_len){W25Q64_WriteBytes(addrwrite_len,datawrite_len,len-write_len);}}// 修改指定地址的字节先擦除后写入voidW25Q64_ModifyByte(uint32_taddr,uint8_tdata){// 计算所在扇区uint32_tsector_addraddr-(addr%W25Q64_SECTOR_SIZE);uint8_tsector_buffer[W25Q64_SECTOR_SIZE];//
读取整个扇区W25Q64_ReadBytes(sector_addr,sector_buffer,W25Q64_SECTOR_SIZE);//
修改指定字节sector_buffer[addr-sector_addr]data;//
擦除扇区W25Q64_EraseSector(sector_addr);//
重新写入整个扇区// 分页写入每次写入一页256字节for(uint32_ti0;iW25Q64_SECTOR_SIZE;iW25Q64_PAGE_SIZE){W25Q64_WriteBytes(sector_addri,sector_buffer[i],W25Q64_PAGE_SIZE);}}// 擦除扇区4KBvoidW25Q64_EraseSector(uint32_tsector_addr){uint8_tcmd[4]{W25Q64_SECTOR_ERASE,(sector_addr
0xFF,(sector_addr
0xFF,sector_addr0xFF};W25Q64_WriteEnable();W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,4,
;W25Q64_CS_High();W25Q64_WaitBusy();}// 等待Flash操作完成voidW25Q64_WaitBusy(void){while(W25Q64_ReadStatus()0x
{HAL_Delay(
;}}// 读取JEDEC IDuint32_tW25Q64_ReadID(void){uint8_tcmdW25Q64_JEDEC_ID;uint8_tid_data[3];W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,1,
;HAL_SPI_Receive(hspi6,id_data,3,
;W25Q64_CS_High();return(id_data[0]
|(id_data[1]
|id_data[2];}// 私有函数实现staticvoidW25Q64_CS_Low(void){HAL_GPIO_WritePin(W25Q64_CS_PORT,W25Q64_CS_PIN,GPIO_PIN_RESET);}staticvoidW25Q64_CS_High(void){HAL_GPIO_WritePin(W25Q64_CS_PORT,W25Q64_CS_PIN,GPIO_PIN_SET);}staticvoidW25Q64_WriteEnable(void){uint8_tcmdW25Q64_WRITE_ENABLE;W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,1,
;W25Q64_CS_High();}staticuint8_tW25Q64_ReadStatus(void){uint8_tcmdW25Q64_READ_STATUS1;uint8_tstatus;W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,1,
;HAL_SPI_Receive(hspi6,status,1,
;W25Q64_CS_High();returnstatus;}使用例程#includew25q
h// 测试函数voidmain(void){uint8_tread_data;uint8_twrite_data0xAA;uint32_ttest_addr0x000000;// 测试地址//
初始化W25Q64_Init();//
写入单个字节W25Q64_WriteByte(test_addr,write_data);HAL_Delay(
;//
读取单个字节read_dataW25Q64_ReadByte(test_addr);if(read_datawrite_data){// 写入成功}//
批量写入测试uint8_twrite_buffer[256];uint8_tread_buffer[256];for(inti0;i256;i){write_buffer[i]i;}W25Q64_WriteBytes(0x1000,write_buffer,
;HAL_Delay(
;//
批量读取测试W25Q64_ReadBytes(0x1000,read_buffer,
;//
修改指定地址的数据W25Q64_ModifyByte(0x2000,0x
;//
擦除扇区测试W25Q64_EraseSector(0x
;}CubeMX配置要点SPI6配置· Mode: Full-Duplex Master· Hardware NSS Signal: Disable· Prescaler: 根据HCLK频率调整建议≤50MHzGPIO配置· PA15: GPIO_OutputCS引脚· PB3: SPI6_SCK· PB4: SPI6_MISO· PB5: SPI6_MOSI时钟配置· 确保SPI时钟不超过W25Q64的最大频率104MHz
注意事项写操作前必须擦除Flash只能从1变为0所以写前需要擦除变为0xFF擦除最小单位4KB扇区写操作跨页处理页大小为256字节跨页时需要分页写入修改函数效率W25Q64_ModifyByte会擦除整个扇区频繁修改时应考虑缓存机制这个驱动提供了基本的读写和修改功能可以根据需要扩展更多功能如整片擦除、快速读取等。
9.1漫画全免费无需安装-9.1漫画全免费无需安装应用
相关标签
BEYOND REALITY Z-Image与5G边缘计算:低延迟实时生成
AcousticSense AI GPU算力优化指南:CUDA加速下毫秒级音频流派解析实测
WuliArt Qwen-Image Turbo开发者案例:基于Qwen-Image-2512底座的LoRA定制实践
云容笔谈应用场景:非遗传承人数字肖像建档——高保真东方面容特征复现
html5网页中如何实现内网大文件的加密下载?
Nextcloud30.0.0+Apache2完整配置流程:从下载到HTTPS加密
少走弯路:AI论文平台 千笔 VS 笔捷Ai,专科生写作更高效!
实战指南:用Python复现经典HDR算法(附OpenCV代码)
万物识别-中文-通用领域镜像与GitHub使用教程结合:代码管理
Grafana汉化避坑指南:如何快速实现时间选择器等组件的本地化
Qwen-Image-Edit-F2P效果对比:传统PS与AI图像编辑差异分析
提示管理平台架构设计:如何实现提示的自动化编排?
TP9951:从模拟信号到MIPI-CSI2,揭秘高集成度图像接收芯片的设计与应用
2026跨境电商必看:如何用Nano Banana和Veo 3打造带货爆款视频
🔍
📑
文章目录
二、视觉之巅:探寻数字时代最令人心动的感官盛宴
三、深夜的终极慰藉:免费污污软件下载最新ios版v28.8.25,开启你的感官新纪元
四、四川BBBBBBNBBBM有啥好吃的
五、从“大妈”到“icon”:日本大妈logo的跨界魅力与文化密码
🔥
热门优化文章
深求·墨鉴新手教程:如何快速将书籍图片转为电子书
2026-05-16 23:19:13
AC63芯片启动流程中的双核协同机制解析:如何优化你的蓝牙音频设备性能
2026-05-16 23:19:13
🛠️
实用工具推荐
HyperRAG实战教程(非常详细),超图多跳推理从入门到精通,收藏这一篇就够了!
电动车电池使用和维护的关键注意事项解析
相关优化文章 推荐
5分钟上手EasyAnimateV5:零基础小白也能让图片动起来
2026-06-08 22:43:50 8分钟阅读
如何永久保存数字记忆?揭秘QQ空间备份神器
2026-06-08 22:43:50 1分钟阅读
WisdomSSH解决新服务器环境探查的自动化流程
2026-06-08 22:43:50 3分钟阅读
↑
百度百家号客服电话人工服务
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3