微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 本人新学STM32,想通过SPI对AT45DB161D进行读写,求大神指导...

本人新学STM32,想通过SPI对AT45DB161D进行读写,求大神指导...

时间:10-02 整理:3721RD 点击:

想要完成最简单的功能,Flash写满第一页,再把第一页的数据读出来,可是读的时候数据全是00,请大神指点,程序如下:
#include"main.h"
intmain(void)
{
       u8 Read[256];
       u8 Write[256];
       int i;
      
       SPI_Flash_Init();
       USART_Configuration();
      
       for(i=0;i<256;i++)
       {
             Write=i;
       }
       FlashPageWrite(0,&Write[0]);
       FlashPageRead(0,&Read[0]);
}
voidFlashPageWrite(u16 page,u8 *Data)               //写一整页
{
       u16 i;
       FlashWaitBusy();
       AT_CS_LOW();
       SPI2_RWByte(BUFFER_2_WRITE);        // 写入第二缓冲区
       SPI2_RWByte(0x00);
       SPI2_RWByte(0x00);
       SPI2_RWByte(0x00);
       for(i=0;i<SPI_Flash_PageSize;i++)
       {
               SPI2_RWByte(Data);
       }
       AT_CS_HIGH();               
       if ( page < 2048)
       {
               AT_CS_LOW();
              SPI2_RWByte(B2MM_PAGEERASE);   //将第二缓冲区数据写入主储存器,带擦除
              SPI2_RWByte((u8)(page>>6));
              SPI2_RWByte((u8)(page<<2));
               SPI2_RWByte(0x00);
               AT_CS_HIGH();
               FlashWaitBusy();
       }        
}
voidFlashPageRead(u16 page,u8 *Data)
{
       u16 i;        
       FlashWaitBusy();
       AT_CS_LOW();
       SPI2_RWByte(PAGE_READ);                      //页读
       SPI2_RWByte((u8)(page>>6));
         SPI2_RWByte((u8)(page<<2));
         SPI2_RWByte(0x00);
         SPI2_RWByte(0x00);
         SPI2_RWByte(0x00);
         SPI2_RWByte(0x00);
         SPI2_RWByte(0x00);
         for(i=0;i<SPI_Flash_PageSize;i++)
       {
               Data=SPI2_RWByte(Dummy);       //读取一个字节
       }
       AT_CS_HIGH();        
}
u8SPI2_RWByte(u8 byte)
{
       while((SPI2->SR&SPI_I2S_FLAG_TXE)==RESET);
       SPI2->DR = byte;
       while((SPI2->SR&SPI_I2S_FLAG_RXNE)==RESET);
       return(SPI2->DR);
}


小弟初来论坛,没发现还能回复积分,请问怎么设置?各位大神,求帮忙啊。

入群 157556544一起学习下

回复需要积分么?

不要啊,回复要什么积分

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top