打印
[ZLG-MCU]

LM3S8962 的SPI时序问题

[复制链接]
2712|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JOHN78|  楼主 | 2009-3-22 21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zlgmcu| | 2009-3-23 08:41 | 只看该作者

老兄真强,还用了逻辑分析仪!

建议先断开外设,单独测量LM3S8962的SSI接口,看是否正常。
可能的原因分为软件和硬件两个方面,要仔细排查。
看其它同型号板子是否出现同样的情况,也好做个对比。

使用特权

评论回复
板凳
john78| | 2009-3-23 09:54 | 只看该作者

不理解

有点不理解
只要一个数据写入SPI缓冲,不就由硬件自动完成一个字节数据的数据。时钟信号不应该被中断。和软件好象没有关系
如果和硬件有关,居然还能够成功完成数据传输。(这个SPI的时钟会被什么中断,是否和使用什么功能模块相关?)
slave是FRAM。

使用特权

评论回复
地板
john78| | 2009-3-23 20:31 | 只看该作者

郁闷

还是想不明白

既然是硬件SPI,CLK怎么会中断呢? -----  这个模块不会有什么缺陷吧 

把SLAVE芯片拿掉也这样.不明白了.


软件部分

U8 SPI_FRAM_SendByte(U8 byte)
{
  U32 rdata;
  SSIDataPut(SSI_BASE,byte);
  SSIDataGet(SSI_BASE,&rdata);
  return (U8)rdata;
}


void FW_data(U16 addr,U16 val)
{
     U16 bvn;
     addr *=2;
     SSI_CS_OFF;
     SPI_FRAM_SendByte(0X06);   //写使能 
     SSI_CS_ON;
     SSI_CS_OFF;
     SPI_FRAM_SendByte(0X02);
     bvn = addr & 0xFF00;
     bvn = bvn >>8;
     SPI_FRAM_SendByte((u8)(bvn));
     SPI_FRAM_SendByte((u8)(addr & 0xFF));    
     bvn = val&0xFF00;
     bvn = bvn>>8;
     SPI_FRAM_SendByte((u8)(bvn));
     SPI_FRAM_SendByte((u8)(val & 0xFF));

     SSI_CS_ON;
}
u16 FR_data(u16 addr)
{
   U16 vh,vl;
   U16 bvn;
   addr *=2;
   
   SSI_CS_OFF;
   SPI_FRAM_SendByte(0X03);
   bvn = addr&0xFF00;
   bvn = bvn>>8;
   SPI_FRAM_SendByte((u8)bvn);
   SPI_FRAM_SendByte((u8)((addr) & 0xFF));    
   vh = SPI_FRAM_SendByte(0XFF);
   vl = SPI_FRAM_SendByte(0XFF);
   SSI_CS_ON;
    return (vh*0x100+vl);
}

U16 fdata[100];
void main(void)
{  
  //初始化
  SSIConfig(SSI_BASE,SSI_FRF_MOTO_MODE_0,SSI_MODE_MASTER,SSI_SPEED,8);
   SSIEnable(SSI_BASE);
   GPIOPinTypeSSI(GPIO_PORTA_BASE, SSI_CLK|SSI_TX | SSI_RX);
   
   GPIODirModeSet(GPIO_PORTA_BASE,SSI_CS,GPIO_DIR_MODE_OUT);
   GPIOPadConfigSet(GPIO_PORTA_BASE, SSI_CS, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD); 
   SSI_CS_ON;
   ....
  
  
  
  for(i=0;i<10;i++)
  {
      FW_data(i*10,7990+i);
      fdata[100+i] = FR_data(10*i);
  }
   

while(1)
{
;
}
 }  

使用特权

评论回复
5
john78| | 2009-3-25 21:53 | 只看该作者

挂了几天了,没有人理会

ZLG,是否能在你们的开发板上测试一下,
是不是这个现象,给个答复可以?

使用特权

评论回复
6
平常人| | 2009-3-25 22:01 | 只看该作者

从波形上看好像是时钟突然停顿了

好一点的情况是SPI的时钟停顿,坏一点的情况是系统的时钟停顿,最坏的情况是晶振暂时停顿过一会儿又恢复了。不管那种情况,时钟停顿总是很危险。

LZ有没有注意它停了多长时间后又恢复了?时间越长,情况越不好。

使用特权

评论回复
7
xiaoxin1986| | 2009-3-30 00:10 | 只看该作者

学习了

使用特权

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

本版积分规则

70

主题

220

帖子

1

粉丝