Flash存储器的使用

[复制链接]
2155|32
 楼主| shimx 发表于 2018-9-19 13:23 | 显示全部楼层 |阅读模式

void SPI_init()           
{            
        P5DIR  |=BIT3;  //P5.3 CE
        
        P5DIR  |=BIT2;
        P5OUT  |=BIT2;//WP引脚
        //P5OUT  &=~BIT2;//WP引脚
        
        //P5DIR  |=BIT0;  //P5.0 Hold
        //P5OUT  |=BIT0;
        //P5OUT  &=~BIT0;
        
        P3SEL  |=BIT1+BIT2+BIT3;  //SIMO SOMI UCLK                  
          U0CTL  =CHAR+SYNC+MM+SWRST;  //8位SPI,SPI模式,主机模式,保持在复位状态;   零;   
          U0TCTL =SSEL1+STC;     //时钟源为SMCLK,3线模式;   
          U0BR0  =0x002;   
          U0BR1  =0x000;                //波特率设定   
          U0MCTL =0x000;                //调整寄存器没有调整;
        ME1    =USPIE0;               //打开SPI使能  
          U0CTL &=~SWRST;             //关复位  
      
        //WRSR(0x00);                 //Flash去保护
}   
void SPI_send(unsigned char byte)   //发送一个数据
{                  
              while((IFG1 & UTXIFG0) == 0); //等待发送数据缓存是否准备好接收新数据      
        TXBUF0=byte;            //发送一个字节;
}
unsigned char SPI_get()       //接收一个数据
{   
            unsigned char in;   
        
            while((IFG1 & URXIFG0)==0);        //等待接收完成
        in=U0RXBUF;
           return in;   
}   
执行读操作时只能读出一个数据,再然后程序就卡在 while((IFG1 & URXIFG0)==0);        //等待接收完成  这一步不走了。
SST25VF016B WP引脚和Hold引脚怎样连接? 芯片怎样去除写保护?

void WRSR(unsigned char byte)           //往状态寄存器里写一个字节 系统启动首先写WRSR(0x00)去除写保护
{   
            CE0;         
        SPI_send(0x06);
        CE1;
        CE0;  
            SPI_send(0x01);        //发送写状态寄存器   
            SPI_send(byte);        
            CE1;            
}   
去除写保护  WRSR(0x00);?
 楼主| shimx 发表于 2018-9-19 13:27 | 显示全部楼层

unsigned char SPI_get()       //接收一个数据
{   
            unsigned char in;   
        
            while((IFG1 & URXIFG0)==0);        //等待接收完成
        in=U0RXBUF;
           return in;   
}   

这一步in=U0RXBUF;是in=RXBUF0;
dengdc 发表于 2018-9-19 13:30 | 显示全部楼层
楼主有什么问题?
 楼主| shimx 发表于 2018-9-19 13:34 | 显示全部楼层
执行读操作时只能读出一个数据,再然后程序就卡在 “while((IFG1 & URXIFG0)==0);        //等待接收完成”  这一步不走了。
SST25VF016B WP引脚和Hold引脚怎样连接? 芯片怎样去除写保护?
wuhany 发表于 2018-9-19 13:41 | 显示全部楼层

SST25VF016B WP引脚和Hold引脚连接,以及写保护,手册上有介绍啊
http://wenku.baidu.com/view/2f18961a6c175f0e7cd137a5.html
 楼主| shimx 发表于 2018-9-19 13:44 | 显示全部楼层

我看这个手册啦!
wp应该接高电平,hold怎么接,不懂啊。
zhenykun 发表于 2018-9-19 13:47 | 显示全部楼层

帮顶 学习中
 楼主| shimx 发表于 2018-9-19 13:49 | 显示全部楼层

这个我知道了,wp,hold都接高电平,一般来说用不到hold引脚
jlyuan 发表于 2018-9-19 13:53 | 显示全部楼层
flash的读写操作的注意读写前的保护机制的。
 楼主| shimx 发表于 2018-9-19 13:56 | 显示全部楼层

嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽
aspoke 发表于 2018-9-22 20:16 | 显示全部楼层
这个是什么芯片?
232321122 发表于 2018-9-22 20:19 | 显示全部楼层
这个有中断吗?
ghuca 发表于 2018-9-22 20:19 | 显示全部楼层
这个也判断不出的
soodesyt 发表于 2018-9-22 20:20 | 显示全部楼层
写保护不要了。
mnynt121 发表于 2018-9-22 20:20 | 显示全部楼层
shimx 发表于 2018-9-19 13:27
unsigned char SPI_get()       //接收一个数据
{   
            unsigned char in;   

这个网上的代码有吗
plsbackup 发表于 2018-9-22 20:21 | 显示全部楼层
硬件怎么设计的
kmzuaz 发表于 2018-9-22 20:21 | 显示全部楼层
读写速度有关系?
qiufengsd 发表于 2018-9-22 20:21 | 显示全部楼层
shimx 发表于 2018-9-19 13:34
执行读操作时只能读出一个数据,再然后程序就卡在 “while((IFG1 & URXIFG0)==0);        //等待接收完成” ...

去除写保护
wengh2016 发表于 2018-9-22 20:22 | 显示全部楼层
shimx 发表于 2018-9-19 13:27
unsigned char SPI_get()       //接收一个数据
{   
            unsigned char in;   

看看手册怎么写的
maqianqu 发表于 2018-9-22 20:22 | 显示全部楼层
SPI接口吗  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

857

主题

10661

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部