SPI切换Norflash的4Byte地址模式,MX25的Nor

#灵感来源
感谢芯来科技的海少,给与的思路方法指导,以及国旭给与的代码参考。
##参考代码(CSDN付费资源)
MX25L128_MX25L256_SPI驱动代码.rar_MX25L128_MX25L128 程序_MX25L256驱动代码_
##参考文章
《STM32使用QSPI控制FLASH(FLASH芯片型号:MX25L25645G)》http://t.csdnimg.cn/sgFmj
#一、代码思路
由于要用到大数据量的norflash进行数据读写,而3byte地址模式,只能访问16M的地址空间,不够用的。所以我们想到了4Byte地址模式。在这里感谢芯来科技的海少,给出框架步骤,国旭给出了quad功能spi的参考代码。

int32_t selftest_spi_4Byte(void) 
{
    //第一步:先把qspi切换成普通模式
	GD25Q32_Init();	//GD25Q32初始化,先初始化,后面的发送命令才能完成。
	//第二步:设置norflash这边为4Byte模式
	SET_4B_MODE(ENABLE);
	//第三步:设置SPI这边的地址模式,从3byte,变为4byte
	qspi_ffmt_addr_len_cfg(QSPI_BASE, 4);
	//第4步:设置SPI这边切回xip模式
	qspi_fctrl_flashxip_enable(QSPI_BASE);
	//第5步:切换回对norflash的操作,因为后面要读写了。
	GD25Q32_CS_ON;
	return 0;
}

(本次使用的Norflash型号为MX25U51245G,代码里有些别的型号,纯属巧合,请忽略。)
#二、具体实现原理
在这里插入图片描述
具体实现命令如下
在这里插入图片描述
三、代码详细解析
下图是第二步的代码

//适配芯来科技后的,参考mx25U51245G的PDF的P44
void SET_4B_MODE(unsigned char enable)
{
	qspi_csid_cfg(QSPI_BASE, 0x1);	//CS#goes high,to trans instruction to the norflash
	SPI1_ReadWriteByte((enable?MX25_CMD_EN4B: MX25_CMD_EX4B));
	qspi_csid_cfg(QSPI_BASE, 0x0);	//CS#goes low
}

后续由于要继续XIP读写,所以我有了框架中的第4步和第5步。
代码需要的话,看本文资源列表,如果还不够的话,推荐下载文章一开始的另一个作者的那个代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值