关于SST26VF016B的一些使用问题

本文介绍了在使用SST26VF016 Flash存储器时遇到的写入和擦除操作问题。尽管数据手册未明确指出,但在实际调试中发现,必须先发送全局块解锁(98H)指令才能成功执行写使能(WREN)和写操作。代码示例展示了正确的操作顺序,包括解锁、再次写使能、写入数据及等待空闲状态的过程。对于数据手册的不完整描述,作者提出了疑问并分享了解决方案。
摘要由CSDN通过智能技术生成

1.在使用该Flash时Security ID占用地址0000-07FFH空间,最好不用在此地址中存储用户数据

2.在使用的写(02H)以及擦除(20H、D8H、C7H)操作时,我们可以看到在数据手册中的是这样描述的:

在进行写与擦除操作的时候需要先发送WREN(写使能)指令,但当我在实际的调试中发现,并不能成功将数据写入。

在我发送写使能指令后读取状态寄存器STATUS REGISTER,可以得到当前的写使能bit位是成功置位了的。

经过调试最后发现,需要在写使能之前发送全局块解锁(98H),解锁块保护。

最后的代码结构是这样的:

    uint8 SST26VF016_Write_Tx[4] = {0xFF,0xFF,0xFF,0xFF};
    uint8 SST26VF016_Write_Rx[260] = {0};

    OUT_SST26VF016DRV_WREN();        //写使能
    OUT_SST26VF016DRV_ULBPR();        //解锁块保护

    OUT_SST26VF016DRV_WREN();//写使能

    Out_SST26VF016_CS_LOW;                //拉低使能引脚
    SST26VF016_Write_Tx[0] = PAGE_PROGRAM;
    SST26VF016_Write_Tx[1] = (addr&0xFFFFFF)>>16;
    SST26VF016_Write_Tx[2] = (addr&0xFFFF)>>8;
    SST26VF016_Write_Tx[3] = addr&0xFF;
    OUT_HcSST26VF016_ESH_Transmit(SST26VF016_Write_Tx,SST26VF016_Write_Rx,0x04);//发送地址

    OUT_HcSST26VF016_ESH_Transmit(buffer,SST26VF016_Write_Rx,Size);        //将数据写入Flash
    Out_SST26VF016_CS_HIGH;        //拉高片选引脚
    OUT_SST26VF016DRV_Wait_Busy();        //状态寄存器检测,直到空闲状态

    OUT_SST26VF016DRV_WRDI();                //写失能

需要注意的是,在写入(98H)指令后会是写使能状态位清0,需要重新写入(06H)指令。

在数据手册中没有直接说明需要在写数据的过程前写入(98H)指令,不能理解为什么,还请相关大佬可以解答一下,在此感谢。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山石未开,古灯长燃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值