打印
[STM32L4]

求助!关于SST39VF6401B无法擦除问题!

[复制链接]
2447|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本人最近在用SST39VF6401B这颗NORFLASH做项目,发现能正常读写,,但是按照芯片手册上的擦除命令发送擦除指令,却无法擦除,有没有用过的朋友指点一下。  图为擦除程序代码。

QQ图片20170506125633.png (33.85 KB )

QQ图片20170506125633.png
沙发
范寿铭|  楼主 | 2017-5-6 19:28 | 只看该作者
自己顶一下iai

使用特权

评论回复
板凳
yiyigirl2014| | 2017-5-6 19:29 | 只看该作者
http://ww1.microchip.com/downloads/en/DeviceDoc/SST39VF640XB.cpp下载这个官方的驱动函数文件。

使用特权

评论回复
地板
yiyigirl2014| | 2017-5-6 19:30 | 只看该作者
#define FALSE                   0
#define TRUE                    1

#define SECTOR_SIZE             2048    // Must be 2048 words for 39VF640XB
#define BLOCK_SIZE              32768   // Must be 32K words for 39VF640XB

#define SST_ID                  0x00BF  // SST Manufacturer's ID code
#define SST_39VF6401B            0x236D  // SST39VF6401B device code
#define SST_39VF6402B            0x236C  // SST39VF6402B device code

typedef unsigned char           BYTE;     // BYTE is 8-bit in length
//typedef unsigned int            WORD;     // WORD is 16-bit in length
typedef unsigned short            WORD;     // WORD is 16-bit in length, ARM
//typedef unsigned long int       Uint32;   // Uint32 is 32-bit in length
typedef unsigned int       Uint32;   // Uint32 is 32-bit in length, ARM

//Uint32 system_base = 0x4000000;  // 4GByte System Memory Address.

#define system_base  0x4000000
        // This sample code uses 0x4000000 as the system_base address in ARM system.
           // The user should modify this address accordingly.

//#define sysAddress(offset) ((volatile WORD *)(system_base + offset))
#define sysAddress(offset) ((volatile WORD *)(system_base + (((WORD)offset)<<1))) //For ARM CPU


#define MAX_TIMEOUT        0x07FFFFFF   // A ceiling constant used by Check_Toggle_
        // Ready() and Check_Data_Polling().
              // The user should modify this constant accordingly.

// --------------------------------------------------------------------
//                       EXTERNAL ROUTINES
// --------------------------------------------------------------------
extern void     Delay_10_Micro_Seconds();
extern void     Delay_20_Micro_Seconds();
extern void     Delay_150_Nano_Seconds();
extern void     Delay_25_Milli_Seconds();
extern void     Delay_50_Milli_Seconds();



// --------------------------------------------------------------------

int Check_SST_39VF640XB(void);
void CFI_Query(WORD*);
void SecID_Query(WORD*, WORD*);
int Erase_One_Sector(Uint32);
int Erase_One_Block (Uint32);
int Erase_Entire_Chip(void);
int Program_One_Word (WORD*, Uint32);
int Program_One_Sector (WORD*, Uint32);
int Program_One_Block (WORD *Src, Uint32 Dst);
int SecID_Lock_Status(void);
int User_SecID_Word_Program (WORD*, WORD*, int);
void User_SecID_Lock_Out (void);
void Erase_Suspend (void);
void Erase_Resume (void);
int Check_Toggle_Ready (Uint32);
int Check_Data_Polling (Uint32, WORD);

使用特权

评论回复
5
yiyigirl2014| | 2017-5-6 19:30 | 只看该作者
直接用这个函数里面定义的这些操作函数搞就行了,你自己写的不一定靠谱。

使用特权

评论回复
6
范寿铭|  楼主 | 2017-5-6 21:10 | 只看该作者
yiyigirl2014 发表于 2017-5-6 19:30
直接用这个函数里面定义的这些操作函数搞就行了,你自己写的不一定靠谱。 ...

用了你发的驱动 还是不行

使用特权

评论回复
7
huarana| | 2017-5-6 21:54 | 只看该作者
写 不就是擦除吗?

使用特权

评论回复
8
范寿铭|  楼主 | 2017-5-6 21:56 | 只看该作者
huarana 发表于 2017-5-6 21:54
写 不就是擦除吗?

NORFLASH   只能写0  不能写1

使用特权

评论回复
9
yiyigirl2014| | 2017-5-6 22:39 | 只看该作者
范寿铭 发表于 2017-5-6 21:10
用了你发的驱动 还是不行

官方提供的应该没有问题啊,你看看是哪儿没有对,什么宏了之类的。。

使用特权

评论回复
10
范寿铭|  楼主 | 2017-5-7 00:02 | 只看该作者
yiyigirl2014 发表于 2017-5-6 22:39
官方提供的应该没有问题啊,你看看是哪儿没有对,什么宏了之类的。。

哎~咋都不行  就差抓时序了

使用特权

评论回复
11
uptown| | 2017-5-7 17:11 | 只看该作者
读写一个字节能够行?

使用特权

评论回复
12
uptown| | 2017-5-7 17:13 | 只看该作者
楼主应该先试试一个字节的写入和读取是否可行,检查硬件电路的问题。

使用特权

评论回复
13
范寿铭|  楼主 | 2017-5-8 10:16 | 只看该作者
问题解决了,芯片有个引脚是#WP,用来保护底部或者顶部的BOOT块的,我给接地了,实行整片擦出的时候就变成无效了,当时以为这个引脚接地只是保护boot区不被擦出,谁成想芯片为了保护这个块,干脆整片擦除命令就不执行

使用特权

评论回复
14
范寿铭|  楼主 | 2017-5-8 10:17 | 只看该作者
uptown 发表于 2017-5-7 17:13
楼主应该先试试一个字节的写入和读取是否可行,检查硬件电路的问题。

还真让你说对了  硬件的事情

使用特权

评论回复
15
yiyigirl2014| | 2017-5-8 14:20 | 只看该作者
范寿铭 发表于 2017-5-8 10:16
问题解决了,芯片有个引脚是#WP,用来保护底部或者顶部的BOOT块的,我给接地了,实行整片擦出的时候就变成无 ...

牛叉,竟然还要这等情况。

使用特权

评论回复
16
范寿铭|  楼主 | 2017-5-8 15:20 | 只看该作者
yiyigirl2014 发表于 2017-5-8 14:20
牛叉,竟然还要这等情况。

纠结了我三天   破芯片

使用特权

评论回复
17
yiyigirl2014| | 2017-5-8 15:22 | 只看该作者
范寿铭 发表于 2017-5-8 15:20
纠结了我三天   破芯片

哈哈,你没看清楚板子上的开关,还怨芯片了。哈哈。

使用特权

评论回复
18
范寿铭|  楼主 | 2017-5-8 15:24 | 只看该作者
yiyigirl2014 发表于 2017-5-8 15:22
哈哈,你没看清楚板子上的开关,还怨芯片了。哈哈。

主要是它不按套路出牌啊

使用特权

评论回复
19
yiyigirl2014| | 2017-5-8 15:25 | 只看该作者
范寿铭 发表于 2017-5-8 15:24
主要是它不按套路出牌啊

每一个芯片都这样,我之前有个芯片忘了哪个了,那鸟芯片标志位清零不好使,后来仔细查手册,发现是写1是清零,真不按逻辑出牌。

使用特权

评论回复
20
范寿铭|  楼主 | 2017-5-8 15:29 | 只看该作者
哈哈 有点意思  设计芯片的脑洞大开

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

69

帖子

0

粉丝