谁有AT45DB161B的程序

2019-07-21 06:25发布

 谁有AT45DB161B的程序?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
33条回答
jianglg3
1楼-- · 2019-07-25 03:29
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-25 05:07
回复【26楼】jianglg3:
---------------------------------
表示不明白。
jianglg3
3楼-- · 2019-07-25 09:38
原子哥,请问一下,我把数据一次写30组数据进FLASH,然后读取30组数据,读取时候我是通过死循环不停地读取,通过串口看发现数据有的正确,有时候乱码,为什么?谢谢,还有一件事,就是我写完一个数据,然后我就读,再换地址,我写数据,再读,总共写30次,用串口看是对的。
正点原子
4楼-- · 2019-07-25 10:31
回复【28楼】jianglg3:
---------------------------------
这个看看是不是频率太高了?或者代码有bug?
jianglg3
5楼-- · 2019-07-25 15:10
//页分组,对一组写数据
 uint32_t Flash_Write_r(uint8_t* pBuffer,uint32_t num, uint16_t NumByteToWrite_r)
{     
   uint32_t num_buf=num;    
 uint16_t i; 
 uint16_t paddr,offaddr;

 paddr = num_buf/(SPI_FLASH_PageSize/NUMByte) + page_f;
 offaddr = (num_buf%(SPI_FLASH_PageSize/NUMByte))*NUMByte;

 if(paddr>=SPI_FLASH_PageNum)return 0;
 if(NumByteToWrite_r <= NUMByte)
 {    
          F_CS_DISABLE();  
          DF_mm_to_buf(1,paddr);
        if(DF_wait_busy()==0)return 0;
        F_CS_ENABLE();
        SPI1_ReadWriteByte(BUFFER_1_WRITE);    
        SPI1_ReadWriteByte(0x00);
        SPI1_ReadWriteByte((uint8_t)(offaddr>>8)); 
        SPI1_ReadWriteByte((uint8_t)offaddr);
      for (i=0;i<NumByteToWrite_r;)
        {   
       SPI1_ReadWriteByte(*pBuffer);
       pBuffer++;
       i++;
  }
      }
 F_CS_DISABLE();       
 DF_buf_to_mm(1,paddr); 
 num_buf = num_buf + 1;
  
return num_buf;//统计写次数,这样可以算出来页地址和偏移地址  
}
这程序不可以对当前页的首地址写数据吗?为什么读不来额?
//读取一组数据
void Flash_Read_r(uint8_t* pBuffer, uint32_t num_start,uint16_t NumByteToRead_r)
{
uint16_t offaddr,paddr;
uint32_t i;
paddr = (num_start/(SPI_FLASH_PageSize/NUMByte)) + page_f;
offaddr = (num_start%(SPI_FLASH_PageSize/NUMByte))*NUMByte;

if(NumByteToRead_r > NUMByte) return;
DF_mm_to_buf(1,paddr);     
if(DF_wait_busy()==0)return;
F_CS_ENABLE();
SPI1_ReadWriteByte(BUFFER_1_READ);
SPI1_ReadWriteByte(0x00);
SPI1_ReadWriteByte((uint8_t)(offaddr>>8));
SPI1_ReadWriteByte((uint8_t)offaddr);
SPI1_ReadWriteByte(0x00);

for (i=0;i<NumByteToRead_r;)

 *pBuffer=SPI1_ReadWriteByte(0xff);
  pBuffer++;
  i++;  
}
F_CS_DISABLE();    

我用FOR语句写75组数据,然后再用FOR语句读取75条数据,发现每一页的首地址丢失,但是我调用读函数,只读当前页的首地址有时可以显示的有时不可以显示,原子哥,这是为什么?谢谢
jianglg3
6楼-- · 2019-07-25 16:30
 精彩回答 2  元偷偷看……

一周热门 更多>