[求助] 请仙人指路! LPC1114 与外部flash SST25配置的相关问题

f_haizao   2010-11-11 12:45 楼主
我是这样配置SPI的:
void SPIInit()
{
  uint8 i;
  //LPC_SYSCON->PRESETCTRL &= (0x01<<0);
  //for(i=0; i<100; i++);

  LPC_SYSCON->PRESETCTRL      |= (0X01<<0);                          //禁止SSP复位
  LPC_SYSCON->SYSAHBCLKCTRL   |= (1<<11);         //使能SSP时钟
  LPC_SYSCON->SSP0CLKDIV       = 0X02;                          //设置SSP分频值
  LPC_IOCON->SCK_LOC           = 0x02;         //选择P0.6为SSP时钟功能
  //LPC_SSP0->CR0 = 0x0707;
  LPC_SSP0->CR0 = (0x07<<0)|           //每帧数据长8位
                   (0x00<<4)|           //设置帧格式为SPI
                         (0x01<<6)|           //空闲时SCK为高电平有效
                (0x01<<7)|           //数据在SCK第2个时钟沿采样
                (0X00<<8);           //设置SCR串行时钟速率SPI时钟分频
  
                                    
  LPC_SSP0->CR1 = (0x00<<3)|           //从机输出使能
                  (0x00<<2)|           //SSP为主机模式
               (0x01<<1)|           //使能SSP
                       (0x00<<0);           //不使用回写模式
  LPC_SSP0->CPSR = 0x2;                   //PCLK分频值
  LPC_SSP0->ICR  = 0X03;                   //中断清除寄存器                                                                           
}

主函数是这样测试的:
main
{
uint8 a[20],b[20];
SSTF016B_Erase(0, 511);
    for(i=0;i<10;i++)
   {
                  a=i;

  }
   
        SSTF016B_WR(0x00,a,10);
  
  while(1)
  {
     
       
         //SendByte(sign);
   
        //SendByte(sign);
        SSTF016B_RD(0x00, 10,b);
        //SendByte(sign);
        for(i=0;i<10;i++)
        {
          Delay(1000000);

          SendByte(b);
        }
    Delay(1000000);
}       
}
读出来的数据全是FF,这些程序曾经正常工作过也正常使用过一段时间,但现在不知怎么回事就不行了,以为是新编写的程序与其有冲突
但把其余所有程序注释掉之后还是不行,以为是flash芯片坏了但换过后还是不行,哪位高人曾遇到过这种或类似的问题,给小弟指点一二
不胜感激

先谢过了
注:
flash SST25的擦出,读,写函数是正确的

回复评论 (2)

读出FF说明擦除和读取成功了,但是没有写入成功。可以尝试检查写函数,即SSTF016B_WR。
每次写入或者擦除等有更改的操作之前都要WREN的,即置写入使能。还有可以看下WP引脚是不是写保护状态。貌似你也是用Keil嘛~终于找到不是周公,不是那个EclipseIDE的啦~
还有种可能是没有检验WIP位,即擦除后可能芯片在忙,无法响应写入的请求。
M0有附带的SSP程序,可以参考的。

[ 本帖最后由 elulis 于 2010-11-22 01:30 编辑 ]
Python全文搜索引擎:<url>http://code.google.com/p/ming-search/</url>
点赞  2010-11-22 01:28
经过一番痛苦的挣扎,终于发现问题所在,在设置SPI速率的问题上出现了错误,小弟参考了绝大部分周工提供的SSP设置,下面那段程序,把其中的SSP分频值改为1就行了,具体什么缘由,由于时间紧迫还没来得及研究,等出国产品有时间了再搞吧...
点赞  2010-11-25 11:31
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复