打印
[PIC®/AVR®/dsPIC®产品]

SST26VF064B读数据为全0xFF

[复制链接]
3278|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kfawj|  楼主 | 2015-12-11 11:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kfawj 于 2015-12-12 18:35 编辑

void SST26VF_WR(byte dat)
{
        byte i, j;
        j = dat;
        for(i = 0x00; i < 0x08; i++){
                if(j & 0x80){
                        SST26VF_D = 1;
                }
                else{
                        SST26VF_D = 0;
                }
                SST26VF_C = 1;
                Nop();
                j <<= 0x01;
                SST26VF_C = 0;
        }
}

byte SST26VF_RD(void)
{
        byte i, j, dat;
        dat = 0x00;
        for(i = 0x00; i < 0x08; i++){
                dat <<= 0x01;
                j = SST26VF_Q;
                SST26VF_C = 1;
                if(j){
                        dat |= 0x01;
                }
                Nop();
                SST26VF_C = 0;
        }
        return dat;
}

void SST26VFxxx_Read_Bytes(byte addh, word addl, byte *dat, word len)
{
        word dl;
        byte *p;
        while(SST26VF_RStat() & 0x81);        
        p = dat;
        SST26VF_S = 0;
        SST26VF_WR(SST26VF_READ);
        SST26VF_WR(addh);
        SST26VF_WR(addl >> 0x08);
        SST26VF_WR(addl & 0xFF);
        for(dl = 0x00; dl < len; dl++){
                *p = SST26VF_RD();
                p++;
        }
        SST26VF_S = 1;
}

void SST26VFxxx_Write_Bytes(byte addh, word addl, byte *dat, word len)
{
        word dl;
        byte *p;
        while(SST26VF_RStat() & 0x81);
        SST26VF_WriteEN();
        _T2IE = 0;
        p = dat;
        SST26VF_S = 0;
        SST26VF_WR(SST26VF_PP);
        SST26VF_WR(addh);
        SST26VF_WR(addl >> 0x08);
        SST26VF_WR(addl & 0xFF);
        for(dl = 0x00; dl < len; dl++){
                SST26VF_WR(*p);
                p++;
        }
        SST26VF_S = 1;
        _T2IE = 1;
        SST26VF_WriteDI();
}

沙发
kfawj|  楼主 | 2015-12-11 11:31 | 只看该作者
单片机PIC24FJ256GA108 晶振 32M
调用函数如下:
        SST26VF_Init();
        Buf[0x00] = 0x01;
        Buf[0x01] = 0x02;
        Buf[0x02] = 0x03;
        Buf[0x03] = 0x04;
        Buf[0x04] = 0x05;
        Buf[0x05] = 0xA3;
        Buf[0x06] = 0xA3;
        Buf[0x07] = 0xA3;
        Buf[0x08] = 0x00;
        SST26VFxxx_ChipE();
        SST26VFxxx_Write_Bytes(0x00, 0x2000, Buf, 0x08);
        SST26VFxxx_RdID(Buf);//读出数据为0x00,0x00,0x00,0x8A,0x36, 0x0A,0xf8,0x11
        SST26VFxxx_Read_Bytes(0x00, 0x2000, Buf, 0x08);//数据读出为全“0xFF"

使用特权

评论回复
板凳
kfawj|  楼主 | 2015-12-11 11:35 | 只看该作者
1)上升沿,下降沿写数据都已经试过;
2)波形未发现明显异常。
盼大牛忙解决,谢谢!!

使用特权

评论回复
地板
yewuyi| | 2015-12-11 13:25 | 只看该作者
是否本身就是空的新片,没写入新数据直接读的话

使用特权

评论回复
5
kfawj|  楼主 | 2015-12-11 16:51 | 只看该作者
yewuyi 发表于 2015-12-11 13:25
是否本身就是空的新片,没写入新数据直接读的话

Buf[0x00] = 0x01;
        Buf[0x01] = 0x02;
        Buf[0x02] = 0x03;
        Buf[0x03] = 0x04;
        Buf[0x04] = 0x05;
        Buf[0x05] = 0xA3;
        Buf[0x06] = 0xA3;
        Buf[0x07] = 0xA3;
SST26VFxxx_Write_Bytes(0x00, 0x2000, Buf, 0x08);
//有写入操作

使用特权

评论回复
6
kfawj|  楼主 | 2015-12-12 18:34 | 只看该作者
问题已经由技术支持解决,
原因为块保护未关闭,而默认打开。

使用特权

评论回复
7
catcat123| | 2017-6-28 11:26 | 只看该作者
你好  目前我也在用这块flash  能把可用的驱动发一份给我看看不   邮箱1069080064@qq.com   谢谢

使用特权

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

本版积分规则

44

主题

293

帖子

1

粉丝