登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

求助  关于K9F5608U0C闪存的读写程序

作者:temp2003 栏目:技术交流
求助  关于K9F5608U0C闪存的读写程序
我刚接触闪存, 在测试过程中发现 芯片的R/B  一直是低电平
也就是说 一直处于 BUSY状态
读出的数据一直是00H

使用复位命令也没有效果

不知道是什么原因
硬件部分好像是没问题

可能是我编的软件有没有问题

各位有做过闪存编程的,方便的话,给我参考下你们的程序
感激不尽
邮箱:   guanglv2005@163.com

CPU用的ST的UPSD3234  设置比较复杂
我察看了upsd对各个端口的写状态都对
就是R/B一直是忙状态  郁闷
我写的复位程序如下:
void k9f_reset ()
{
    int TEMP;
    //    start        pa4=cle=0    pa3=ce=1    pa6=we=1    pa5=ale=0    pa2=re=1
    //                pa=    1100 1111    bin    =    CFH        
    PSD8xx_reg.DATAOUT_A    =    0xCF;
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}
    //    2            pa4=cle=1    pa3=ce=0    pa6=we=0    pa5=ale=0    pa2=re=1
    //                pa=    1001 0111    bin    =    97H        
    PSD8xx_reg.DATAOUT_A    =    0x97;
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}    
                                     
    XBYTE[FLASHWEAdd]    =    COMRESET;
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}
    //    3            pa7=mwp=1    pa6=we=1    pa5=ale=1    pa4=cle=0    pa3=ce=0    pa2=re=1    pa1=mrb=1    pa0=cscan=1
    //                pa=    1110 0111    bin    =    E7H    
    PSD8xx_reg.DATAOUT_A    =    0xE7;
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}
}




2楼: >>参与讨论
cxc51
我只用51操作过K9F6408
注意时序就可以了。

3楼: >>参与讨论
扬欣电子
顺便请教楼上
    FLASH芯片(如:K9F6408)的电压是3.3V的,可以与51直接连接吗?是否51芯片也要选用3.3V的工作电压的??

4楼: >>参与讨论
temp2003
应该可以用5V的
我是直接连5V的系统的  除了闪存芯片电源供电部分
有地方好像是这么用的

不过这么连接后闪存的电压都上到了4V  :(

系统正在调试中, 还不能工作

R/B状态已经正常了 , 硬件部分忘了加阻容了

时序估计还有点问题

5楼: >>参与讨论
扬欣电子
谢谢回答。
    是不是可以这样认为:51的电源是5V的,FLASH的电源是3.3V的,当然两者是共地的,FLASH芯片的数据(地址)线以及控制线直接与51的IO口连接,用51来读写FLASH
    我就是当心,会不会因51IO口的电压太高而烧坏FLASH,没有做过,所以总觉的是不是会不会有问题。

6楼: >>参与讨论
temp2003
我的软件还没写好
不过根据现在的状态判断,应该是没烧坏

7楼: >>参与讨论
temp2003
可以肯定了 5V可用
刚已经读出了DEVICE Code 了
不过Marker Code 还不对  软件还有问题  ;)

8楼: >>参与讨论
temp2003
DEVICE Code 的问题解决了  :)
 
9楼: >>参与讨论
temp2003
感谢21IC 感谢大家 附上我写的读设备ID部分源代码  见笑了
由于是进行实验,程序写得很粗糙 , 还在改进中
各位同行  多提宝贵意见
UPSD3234的PA口必须一次写入数据,控制比较麻烦

unsigned CHAR k9f_readid ( unsigned CHAR n )
{
    unsigned CHAR TEMPCHAR;
    int TEMP;

    PSD8xx_reg.DIRECTION_B=0xff;
    //    start        pa4=cle=0    pa3=ce=1    pa6=we=1    pa5=ale=0    pa2=re=1
    //                pa=    1100 1111    bin    =    CFH        
    PSD8xx_reg.DATAOUT_A    =    0xCF;
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}


    //    2            pa4=cle=1    pa3=ce=0    pa6=we=0    pa5=ale=0    pa2=re=1
    //                pa=    1001 0111    bin    =    97H        
    PSD8xx_reg.DATAOUT_A    =    0x97;
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}


    
    //    2B            pa4=cle=1    pa3=ce=0    pa6=we=0    pa5=ale=0    pa2=re=1
    //                pa=    1001 0111    bin    =    97H        
    PSD8xx_reg.DATAOUT_A    =    0x97;
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}    
                                     
//    XBYTE[FLASHWEAdd]    =    COMREADID;
    PSD8xx_reg.DATAOUT_B    =    COMREADID;
    
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}
    
    //    3            pa7=mwp=1    pa6=we=1    pa5=ale=1    pa4=cle=0    pa3=ce=0    pa2=re=1    pa1=mrb=1    pa0=cscan=1
    //                pa=    1110 0111    bin    =    E7H    
    PSD8xx_reg.DATAOUT_A    =    0xE7;
    
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}

    //    3B            pa7=mwp=1    pa6=we=0    pa5=ale=1    pa4=cle=0    pa3=ce=0    pa2=re=1    pa1=mrb=1    pa0=cscan=1
    //                pa=    1010 0111    bin    =    A7H    
    PSD8xx_reg.DATAOUT_A    =    0xA7;


//    XBYTE[FLASHWEAdd]    =    0x00;
    PSD8xx_reg.DATAOUT_B    =    0x00;
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}

    //    4            pa7=mwp=1    pa6=we=1    pa5=ale=0    pa4=cle=0    pa3=ce=0    pa2=re=1    pa1=mrb=1    pa0=cscan=1
    //                pa=    1100 0111    bin    =    C7H    
    PSD8xx_reg.DATAOUT_A    =    0xC7;
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}

    PSD8xx_reg.DIRECTION_B=0x0;
    //    5            pa7=mwp=1    pa6=we=1    pa5=ale=0    pa4=cle=0    pa3=ce=0    pa2=re=0    pa1=mrb=1    pa0=cscan=1
    //                pa=    1100 0011    bin    =    C3H    
    PSD8xx_reg.DATAOUT_A    =    0xC3;

    //TEMPCHAR = XBYTE[FLASHREAdd];

    TEMPCHAR = PSD8xx_reg.DATAIN_B;
    
    for ( TEMP=0 ; TEMP<200 ; TEMP++ )
    {}

    
    //    6            pa7=mwp=1    pa6=we=1    pa5=ale=0    pa4=cle=0    pa3=ce=0    pa2=re=1    pa1=mrb=1    pa0=cscan=1
    //                pa=    1100 0111    bin    =    C7H    
    PSD8xx_reg.DATAOUT_A    =    0xC7;    
    
    putmes(&TEMPCHAR,1);
    
    
 
10楼: >>参与讨论
12864
这么大的FLASH,得多少银子啊!
 
11楼: >>参与讨论
cxc51
6408才8M字节的
不会很贵的

12楼: >>参与讨论
temp2003
K9F5608U0C
K9F5608U0C闪存  是32M 的
忘了是35  还是 45 元钱

13楼: >>参与讨论
xwj
今天到买PC外设的朋友那帮忙,看到128M的U盘才75元...
 
14楼: >>参与讨论
12864
NAND FLASH这么便宜呀!那其他FLASH还有市场吗?
8M才20多,32M才45,这个价格比其他并行串行的FLASH合适多了!


15楼: >>参与讨论
xxdcq
能读出id未必读写程序对!
我现在遇到了
时序绝对没错,我用示波器测过!

参与讨论
昵称:
讨论内容:
 
 
相关帖子
请帮忙介绍几个比OP07好点的放大器,谢谢。
电压射随器在输入悬空的情况下输出值多少阿??
求继电器防火花电路原理图
压力传感器的数字温度补偿。。。
请问单电源运放在反向端输入正信号能得到一个负电压输出吗?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号