5258|4

7

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

QSPI读写flash及擦除 [复制链接]

本来是想测试一下低功耗,看到要割板子,就留后面再测试,先来跑一下外挂flash的功能。

1.确定硬件部分

1)我们先查看datasheet确定SPI0接口如下

     PB3SPI_SCK

     PB4SPI0_MISO

     PB5SPI0_MOSI

     PB6SPI0_IO2

     PB7SPI0_IO3

     PB1SPI0_CS

2)查找一下flash管脚图

 

3)搭一个flash小板,对应上面IO,电源,GND连到开发板。

 

 

2.添加软件部分

  1. 添加驱动部分Soft_Drivegd25qxx.cgd25qxx.h);
  2. 初始化SPI0 GPIO and parameter

spi_flash_init(); 

  1. 擦除flash

void spi_flash_sector_erase(uint32_t sector_addr);  

擦除一个sector  0x0000-0x0fff  

void spi_flash_block_erase(uint8_t block_addr);  

擦除一个block  0x000000-0x00ffff 

void spi_flash_bulk_erase(void);  

擦除整个chip

  1. 读写flash

/* write block of data to the flash using qspi */  

void qspi_flash_buffer_write(uint8_t *pbuffer, uint32_t write_addr, uint16_t num_byte_to_write); 

 /* read a block of data from the flash using qspi */  

void qspi_flash_buffer_read(uint8_t *pbuffer, uint32_t read_addr, uint16_t num_byte_to_read);

(5)下载程序,打印结果

 

3.关于不同flash,quad模式的设置

  1. void qspi_flash_quad_enable(void)  
  2. {  
  3.     /* enable the write access to the flash */  
  4.     spi_flash_write_enable();  
  5.     /* select the flash: chip select low */  
  6.     SPI_FLASH_CS_LOW();  
  7.     /* send "write status register" instruction */  
  8.     spi_flash_send_byte(WRSR);  
  9.  
  10.     spi_flash_send_byte(0x00);  
  11.     spi_flash_send_byte(0x20);  
  12.  
  13.     /* deselect the flash: chip select high */  
  14.     SPI_FLASH_CS_HIGH();  
  15.     /* wait the end of flash writing */  
  16.     spi_flash_wait_for_write_end();  

查阅GDdatasheet,可以看到QE的设置

  1.     spi_flash_send_byte(0x00);  
  2.     spi_flash_send_byte(0x20);  

查阅KHdatasheet,可以看到QE的设置

  1.     spi_flash_send_byte(0x40);  
  2.     spi_flash_send_byte(0x00);  
此帖出自GD32 MCU论坛

最新回复

能分享一下原历程吗   详情 回复 发表于 2022-6-9 10:33
点赞 关注
 

回复
举报

4008

帖子

0

TA的资源

版主

沙发
 

还差挺多的呢

 

此帖出自GD32 MCU论坛

点评

什么差挺多?  详情 回复 发表于 2022-3-3 21:46
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
huo_hu 发表于 2022-3-3 11:47 还差挺多的呢  

什么差挺多?

此帖出自GD32 MCU论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

4
 

qspi不用dma会很吃力

此帖出自GD32 MCU论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 

能分享一下原历程吗

此帖出自GD32 MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
Protel的应用

Protel的应用

单片机、模电、ARM、DSP、FPGA、PCB等百问百答系列--连载,欢迎补充

单片机应用编程技巧百问 32191

一个老外写的DDS(VHDL)的例子,很经典

-- DDFS.vhd ------------------------------------- -- Direct Digital Freq. Synthesis -- ------------------------------ ...

【PPT下载地址】采用C2000 TMS320F28027的LaunchPad启动开发工作

采用C2000 TMS320F28027的LaunchPad启动开发工作 C2000被广泛用于数字电机驱动、数字电源控制、新能源、等工业、家电、汽车方面 ...

低于 1GHz CC1310 无线 MCU LaunchPad

488706488707488708 开始使用此 LaunchPad 来进行开发: 第 1 步:购买 cc1310 LaunchPad 第 2 步:下载 cc13x0 SDK ...

还是关于RS232接口采用DB9连接器的问题

RS232接口选用了个 金属外壳的DB9连接器,DB9公端子买的是成品线,线拨开后共有10根,内部有裸金属线连接导线两头的DB9金属壳。 ...

放下教科书,来看下三极管的应用电路

三极管有三个工作状态:截止、放大、饱和,放大状态很有学问也很复杂,多用于集成芯片,比如运放,现在不讨论。 其实, ...

39“万里”树莓派小车——ROS学习(ROS项目文件系统结构介绍以及导入外部软件包的...

本帖最后由 lb8820265 于 2022-11-1 16:03 编辑 学习软件最快的方式就是从例程入手,而大部分的软件例程都可以直接用软件 ...

使用 SiC FET 替代机械断路器

本帖最后由 石榴姐 于 2023-6-19 11:18 编辑 机械断路器损耗小,但速度很慢,且容易磨损。本文将概述如何通过采用 SiC FET 的 ...

【瑞萨RA8D1开发板,基于M85内核的图形MCU测评】RT-Thread ADC获取电压值

开发环境: IDE:MKD 5.38a 开发板:CPKCOR-RA8D1B开发板 MCU:R7FA8D1BHEC332AS00 1 RA8D1 ADC简介 RA8 ...

关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表