共2条
1/1 1 跳转至页
nbsp,nbsp,K9F5608U0C 求助 关于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++ )
{}
}
答 1: 我只用51操作过K9F6408注意时序就可以了。 答 2: 顺便请教楼上 FLASH芯片(如:K9F6408)的电压是3.3V的,可以与51直接连接吗?是否51芯片也要选用3.3V的工作电压的?? 答 3: 应该可以用5V的我是直接连5V的系统的 除了闪存芯片电源供电部分
有地方好像是这么用的
不过这么连接后闪存的电压都上到了4V :(
系统正在调试中, 还不能工作
R/B状态已经正常了 , 硬件部分忘了加阻容了
时序估计还有点问题 答 4: 谢谢回答。 是不是可以这样认为:51的电源是5V的,FLASH的电源是3.3V的,当然两者是共地的,FLASH芯片的数据(地址)线以及控制线直接与51的IO口连接,用51来读写FLASH。
我就是当心,会不会因51IO口的电压太高而烧坏FLASH,没有做过,所以总觉的是不是会不会有问题。 答 5: 我的软件还没写好不过根据现在的状态判断,应该是没烧坏 答 6: 可以肯定了 5V可用刚已经读出了Device Code 了
不过Marker Code 还不对 软件还有问题 ;) 答 7: Device Code 的问题解决了 :) 答 8: 感谢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);
for ( temp=0 ; temp<200 ; temp++ )
{}
// 7 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;
// if (tempchar==0xEC)
// {
//tempchar = XBYTE[FLASHREAdd];
tempchar = PSD8xx_reg.DATAIN_B;
// }
for ( temp=0 ; temp<200 ; temp++ )
{}
// 8 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;
PSD8xx_reg.DIRECTION_B=0xff;
putmes(&tempchar,1);
// 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++ )
{}
return (tempchar);
}
答 9: 这么大的flash,得多少银子啊! 答 10: 6408才8M字节的不会很贵的 答 11: K9F5608U0CK9F5608U0C闪存 是32M 的
忘了是35 还是 45 元钱 答 12: 今天到买PC外设的朋友那帮忙,看到128M的U盘才75元... 答 13: NAND flash这么便宜呀!那其他flash还有市场吗?8M才20多,32M才45,这个价格比其他并行串行的flash合适多了!
答 14: 能读出id未必读写程序对!我现在遇到了
时序绝对没错,我用示波器测过!
也就是说 一直处于 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++ )
{}
}
答 1: 我只用51操作过K9F6408注意时序就可以了。 答 2: 顺便请教楼上 FLASH芯片(如:K9F6408)的电压是3.3V的,可以与51直接连接吗?是否51芯片也要选用3.3V的工作电压的?? 答 3: 应该可以用5V的我是直接连5V的系统的 除了闪存芯片电源供电部分
有地方好像是这么用的
不过这么连接后闪存的电压都上到了4V :(
系统正在调试中, 还不能工作
R/B状态已经正常了 , 硬件部分忘了加阻容了
时序估计还有点问题 答 4: 谢谢回答。 是不是可以这样认为:51的电源是5V的,FLASH的电源是3.3V的,当然两者是共地的,FLASH芯片的数据(地址)线以及控制线直接与51的IO口连接,用51来读写FLASH。
我就是当心,会不会因51IO口的电压太高而烧坏FLASH,没有做过,所以总觉的是不是会不会有问题。 答 5: 我的软件还没写好不过根据现在的状态判断,应该是没烧坏 答 6: 可以肯定了 5V可用刚已经读出了Device Code 了
不过Marker Code 还不对 软件还有问题 ;) 答 7: Device Code 的问题解决了 :) 答 8: 感谢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);
for ( temp=0 ; temp<200 ; temp++ )
{}
// 7 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;
// if (tempchar==0xEC)
// {
//tempchar = XBYTE[FLASHREAdd];
tempchar = PSD8xx_reg.DATAIN_B;
// }
for ( temp=0 ; temp<200 ; temp++ )
{}
// 8 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;
PSD8xx_reg.DIRECTION_B=0xff;
putmes(&tempchar,1);
// 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++ )
{}
return (tempchar);
}
答 9: 这么大的flash,得多少银子啊! 答 10: 6408才8M字节的不会很贵的 答 11: K9F5608U0CK9F5608U0C闪存 是32M 的
忘了是35 还是 45 元钱 答 12: 今天到买PC外设的朋友那帮忙,看到128M的U盘才75元... 答 13: NAND flash这么便宜呀!那其他flash还有市场吗?8M才20多,32M才45,这个价格比其他并行串行的flash合适多了!
答 14: 能读出id未必读写程序对!我现在遇到了
时序绝对没错,我用示波器测过!
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |