导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→AT45DB161读写请教

* 105663: AT45DB161读写请教

   lengyue198 
lengyue198发表的帖子 

 AT45DB161读写请教
各位DX请帮小弟看看,我用AT45DB161B做flash的时候,发现读状态的时候读出来的是0XAC是队的,但是在读写页的时候,发现我读的数据是我写进去的数据循环移了一位后的数,比如说我写进去的是0x33读出来的却是0x66,读flash我用的是直接读主存页函数,写的时候是先写到缓冲区一再到页的方法,那位能帮忙看看啊
读写程序如下
void readFlash(u16 page_addr, u16 page_offset, u8 *ram_add, u16 len)
{
 u8 i;
 Disable45db161();
// gsb_CS = 0 ;      writeByte_SPI(0xD2) ;
 writeByte_SPI((u8)(page_addr>  >  6)) ;// 页地址PA11-PA6
 writeByte_SPI((u8)((page_addr  <  <2)|(page_offset>  >  8))) ;
 // 页内偏移BA9-BA8
 writeByte_SPI((u8)(page_offset)) ;// 页内偏移BA7-BA0
 writeByte_SPI(0x00) ;
 writeByte_SPI(0x00) ;
 writeByte_SPI(0x00) ;
 writeByte_SPI(0x00) ;
 for(i = 0; i   < len; i++)
 {
          *(ram_add+i) = readByte_SPI() ;// 读取接收到的
 }
// Disable45db161();
 Enable45db161();
// gsb_CS = 1 ;
}

void writeFlash(u8 *ram_add,u16 page_add,u16 page_offset,u16 len)
{
   u16 i;
   u8  dat; 

// gsb_CS = 0;
   Disable45db161();
   writeByte_SPI(0x84);//读缓冲器1
   writeByte_SPI(0x00);
   writeByte_SPI((u8)(page_offset>  >  8));// 页内偏移BA9-BA8
   writeByte_SPI((u8)(page_offset)) ;  // 页内偏移BA7-BA0
   for(i=0;i  <len;i++)
   {
  dat = ram_add[i];
     writeByte_SPI(dat);
   }
//   gsb_CS = 1;
    Enable45db161();
    Disable45db161();
//   gsb_CS = 0;
    writeByte_SPI(0x83);//察除缓冲器1   
   writeByte_SPI((u8)(page_add>  >  6));
   writeByte_SPI((u8)((page_add  <  <2)+(page_offset>  >  8)));
    writeByte_SPI(0x00) ;
//   gsb_CS = 1;
   Enable45db161();
   delay_DelayMs(400);
}

发表时间:2007年5月9日16:14:58

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  105904.[详细]问题解决了,大家以后有机会讨论啊
摘要:问题解决了,大家以后有机会讨论啊......(32字)
- [lengyue198][1008次] 2007年5月16日

[上一篇帖子]:回复[em05]不知道,抱歉,我也是菜鸟!
[下一篇帖子]:高手请伸把手呀!!急呀!只怕无人知,奈何?奈何?