神奇的并行Flash,快救救我吧,搞了一周没搞定。

2020-02-04 09:26发布

AT89S52 + SST39SF020,代码与电路如下,读取ChipID一直错误,到底是我电路有问题,还是代码有问题?

正确ID应该是B 6BF,我读出的却是 02 1C

电路图中有处错误,WR与RD应该对换下。


(原文件名:无标题.jpg)


sbit LED = P1^0;

sbit A16 = P3^4;
sbit A17 = P3^5;
sbit CE  = P1^1;
        
void main(void)
{
    unsigned int i;
    char c;

    UART_Init();
    UART_Puts("uart is ready! ");
   
    A16 = 0;
    A17 = 0;
        
    while(1)
    {    LED ^= 1;      

        CE = 0;        
        XBYTE[0x5555] = 0xAA;
        XBYTE[0x2AAA] = 0x55;
        XBYTE[0x5555] = 0x90;

        c = XBYTE[0x0001];
        UART_Putc(c);
        c = XBYTE[0x0000];
        UART_Putc(c);

        XBYTE[0x5555] = 0xAA;
        XBYTE[0x2AAA] = 0x55;
        XBYTE[0x5555] = 0xF0;

        CE = 1;

        for(i=10000;i>0;i--);
    }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
root_007
1楼-- · 2020-02-06 11:08
回复【12楼】makesoft
回复【10楼】root_007   
回复【5楼】makesoft  
并行flash一般读id需要高电压的吧?
-----------------------------------------------------------------------
数据手册上没说需要高压啊,只要5v即可。
-----------------------------------------------------------------------
</img>
-----------------------------------------------------------------------

真的啊,竟然没留意到这个。。。。

真是太感谢了。

仔细翻了下手册,还有点不明,这个Vh 12V是加到A9管脚上的吧?那2AAA地址时A9是0,是不是需要另加元件,在写完地址后读之前拉高A9到12V?
makesoft
2楼-- · 2020-02-06 12:52
当然需要硬件支持了,最简单的用两个二极管加一个地电阻组成一个信号和一个可控+12V的或电路就可以了。
root_007
3楼-- · 2020-02-06 14:19
 精彩回答 2  元偷偷看……
root_007
4楼-- · 2020-02-06 19:46
真是Fuck。。。。。

竟然是芯片坏了,竟然还是连着两片都是坏的。

换上第三片,Hardware mode 与 Software mode都正常了,不加12V用software也能读取ID。

晦啊,就这么浪费一周。。。。。。
XA144F
5楼-- · 2020-02-07 00:02
还有,单片机的EA接地吗?
sky5566
6楼-- · 2020-02-07 01:37
MASK

一周热门 更多>