查看: 2953|回复: 4

[分享] k60读sst25vf016b.c

[复制链接]

该用户从未签到

11

主题

25

帖子

0

新手上路

Rank: 1

积分
88
最后登录
1970-1-1
发表于 2013-6-27 17:14:28 | 显示全部楼层 |阅读模式
 利用K60的SPI2读写sst25vf016b.c ,现在遇到问题是连sst25vf016b.c的状态寄存器都读不出来,测试代码在附件的工程里面,SPI的片选是模拟出来的,这样比较灵活。下面贴上部分代码,主要是读、写寄存器。请大家帮忙分析下,先谢啦。
void SPI_FLASH_Write_SR(Uint8 sr)  
{  
    SST25_CS_LOW;                              /* 片选*/
#if NOP==1
    for(Uint8 j=NOP_NUM;j>0;j--)
      asm("NOP");
#endif
    SPI_Write(SPI2, CMD_EWSR);                /* 使能写状态寄存器命令*/  
    SST25_CS_HIGH;                             /* 取消片选*/
#if NOP==1
    for(Uint8 j=NOP_NUM;j>0;j--)
      asm("NOP");
#endif    
    SST25_CS_LOW;                              /* 片选  */    
#if NOP==1
    for(Uint8 j=NOP_NUM;j>0;j--)
      asm("NOP");
#endif
    SPI_Write(SPI2, CMD_WRSR);                /* 发送写取状态寄存器命令  */ 
    SPI_Write(SPI2, sr);                      /* 写入一个字节 */
    SST25_CS_HIGH;                             /* 取消片选*/                

Uint8 SPI_Flash_ReadSR(void)  

    Uint8 byte=0;  
       
    SST25_CS_LOW;                              /* 使能器件  */
#if NOP==1
    for(Uint8 j=NOP_NUM;j>0;j--)
    asm("NOP");
#endif
    SPI_Write(SPI2, CMD_RDSR);                /* 发送读取状态寄存器命令*/   
    byte = SPI_Read(SPI2);             /* 读取一个字节 */
    SST25_CS_HIGH;                             /* 取消片选  */  
    return byte;  
}

测试程序:
while(1)
     {
      RecTmp = SPI_Flash_ReadSR();
      
      SPI_FLASH_Write_SR(0x04);
      RecTmp = SPI_Flash_ReadSR();
      asm("NOP");
      SPI_FLASH_Write_SR(0x0C);
      RecTmp = SPI_Flash_ReadSR();
      asm("NOP");
      SPI_FLASH_Write_SR(0x1C);
      RecTmp = SPI_Flash_ReadSR();
      asm("NOP");
      SPI_FLASH_Write_SR(0x3C);
      RecTmp = SPI_Flash_ReadSR();
      asm("NOP");
      
      SPI_FLASH_Write_SR(0x84);
      RecTmp = SPI_Flash_ReadSR();
      asm("NOP");
      SPI_FLASH_Write_SR(0x8C);
      RecTmp = SPI_Flash_ReadSR();
      asm("NOP");
      SPI_FLASH_Write_SR(0x9C);
      RecTmp = SPI_Flash_ReadSR();
      asm("NOP");
      SPI_FLASH_Write_SR(0xBC);
      RecTmp = SPI_Flash_ReadSR();
      asm("NOP");
     }
读出来的寄存器状态不对,基本是0x80或是0x82
回复

使用道具 举报

该用户从未签到

11

主题

25

帖子

0

新手上路

Rank: 1

积分
88
最后登录
1970-1-1
 楼主| 发表于 2013-6-27 17:15:23 | 显示全部楼层

回复:k60读sst25vf016b.c

 附上测试工程

Kinetis SPI.rar

226.18 KB, 下载次数: 4

回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

4

帖子

0

新手上路

Rank: 1

积分
2
最后登录
1970-1-1
发表于 2014-3-20 14:50:39 | 显示全部楼层

回复:k60读sst25vf016b.c

看看
回复 支持 反对

使用道具 举报

该用户从未签到

37

主题

327

帖子

1

高级会员

Rank: 4

积分
886
最后登录
2023-7-19
发表于 2014-3-21 11:56:05 | 显示全部楼层

RE:k60读sst25vf016b.c

CPHA CPOL 对不对,他们分别为0,1 可以配成4种SPI模式。看看和你的flash配不配。
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

79

帖子

0

中级会员

Rank: 3Rank: 3

积分
278
最后登录
1970-1-1
发表于 2014-3-26 08:49:33 | 显示全部楼层

回复:k60读sst25vf016b.c

 自己用的代码,给你参考下

K60_MQX_SST25VF064.rar

8.66 KB, 下载次数: 1

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-19 05:35 , Processed in 0.099784 second(s), 24 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表