打印

Flash存储器的使用

[复制链接]
519|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shimx|  楼主 | 2016-7-23 22:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


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|  楼主 | 2016-7-23 22:14 | 只看该作者

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

这一步in=U0RXBUF;是in=RXBUF0;

使用特权

评论回复
板凳
dengdc| | 2016-7-23 22:16 | 只看该作者

楼主有什么问题?

使用特权

评论回复
地板
shimx|  楼主 | 2016-7-23 22:16 | 只看该作者
执行读操作时只能读出一个数据,再然后程序就卡在 “while((IFG1 & URXIFG0)==0);        //等待接收完成”  这一步不走了。
SST25VF016B WP引脚和Hold引脚怎样连接? 芯片怎样去除写保护?

使用特权

评论回复
5
wuhany| | 2016-7-23 22:17 | 只看该作者
SST25VF016B WP引脚和Hold引脚连接,以及写保护,手册上有介绍啊
http://wenku.baidu.com/view/2f18961a6c175f0e7cd137a5.html

使用特权

评论回复
6
shimx|  楼主 | 2016-7-23 22:18 | 只看该作者
我看这个手册啦!
wp应该接高电平,hold怎么接,不懂啊。

使用特权

评论回复
7
lizye| | 2016-7-23 22:19 | 只看该作者
帮顶 学习中

使用特权

评论回复
8
shimx|  楼主 | 2016-7-23 22:20 | 只看该作者
这个我知道了,wp,hold都接高电平,一般来说用不到hold引脚

使用特权

评论回复
9
chuntian2016| | 2016-7-24 12:20 | 只看该作者
flash的读写操作的注意读写前的保护机制的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

857

主题

10661

帖子

5

粉丝