2268|2

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

MSP430F47187和SST25VF080B的SPI通信有问题,主控芯片发送的时序正确,但是一直是FF [复制链接]

void Init_CLK(void)
{
  unsigned int i;

  FLL_CTL0 |= XCAP10PF;                     // Set load capacitance
  FLL_CTL1 &= ~XT2OFF;                      // 打开 XT2

  do
  {                   // 清除OSCFault标志
    IFG1 &= ~OFIFG;
    for(i = 0x20; i > 0; i--);
  }
  while((IFG1 & OFIFG) == OFIFG);//如果OSCFault =1

  FLL_CTL1 = SELS;                          // Select SMCLK source as XT2CLK
  FLL_CTL2 |= XT2S_2;       //XT2频率范围选择为3~16MHz
  FLL_CTL1 += SELM_XT2;   //MCLK的时钟源为XT2CLK
  return;
}

void delayus(uint x)
{
  uint a;
  for(a=0;a //   for(b=4;b>0;b--);   //之前没有
}
void delayms(uint y)
{
  uint a,b;
  for(a=0;a     for(b=800;b>0;b--);  //b=800  3200
}

//***************************************************************************//
//                                                                             //
//函数:void Init_SSTSPI(void)                                               //
//说明: 初始化SPI接口,P1.3:CE,P2.1:SIMO,P2.2:SOMI,P2.3:CLK                  //
//                                                                             //
//***************************************************************************//
void Init_SSTSPI(void)
{  
  P2SEL = 0x0E;         //setup P2 for SPI mode
  P1DIR |= BIT3 + BIT7;
  P1OUT |= BIT3 + BIT7; //STE = 1
  //P2REN |= 0x01;
  UCB1CTL0 = UCMSB + UCMST  + UCSYNC;  //Polarity,Master,8-bit, 3-Pin SPI
  UCB1CTL1 = UCSSEL1 + UCSWRST;  //SMCLK,UCSSEL1

  UCB1BR0 = 0x04; //setup baud rate,2M
  UCB1BR1 = 0x00;//
  UCB1CTL1 &= ~UCSWRST;  //SPI Enable
}

//***************************************************************************//
//                                                                             //
//函数:void SSTSPI_SendByte(unsigned long, unsigned char)                      //
//说明: SPI发送一个数据                                                       //
//参数:                                                                     //
//                                                                             //
//***************************************************************************//
void SSTSPI_SendByte(uchar byte)   
{
  while((UC1IFG & UCB1TXIFG)==0);
  UCB1TXBUF = byte ;                       
  delayus(1);
}

//***************************************************************************//
//                                                                             //
//函数:void SSTSPI_SendByte(unsigned long, unsigned char)                      //
//说明: SPI发送一个数据                                                       //
//参数:                                                                     //
//                                                                             //
//***************************************************************************//
uchar SSTSPI_ReciveByte(void)   
{
  uchar data=0;
  while((UC1IFG & UCB1RXIFG)==0); //等待发送完成
  data = UCB1RXBUF;
  return data;
}

//***************************************************************************//
//                                                                             //
//函数:void Read_JEDECID(char *)                                            //
//说明: 读取SST25VF016B器件ID                                                      //
//                                                                             //
//***************************************************************************//
uchar Read_JEDECID(void)
{
  uchar data = 0;
  P1OUT &= ~BIT3;
  SSTSPI_SendByte(0x9F); // 读JEDEC ID
  SSTSPI_SendByte(0xFF);
  data = SSTSPI_ReciveByte();
  //SSTSPI_SendByte(0xFF);
  //*(data+1) = SSTSPI_ReciveByte();
  //SSTSPI_SendByte(0xFF);
  //*(data+2)  = SSTSPI_ReciveByte();
  //delayus(1);
  P1OUT |= BIT3;
  return data;
}

/********************Main********************/
void main(void)
{
  uchar a=0;

  WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

  Init_CLK();               //初始化时钟
  Init_SSTSPI();              //初始化SPI
  delayms(100);             //延时

  a = Read_JEDECID();
}
以上是我的程序,查看了也没发现问题,SOMI线的时序是像下面这张图一样的,黄色的是SOMI线,蓝色的是SCLK线


IMG_1392.JPG (1.63 MB, 下载次数: 0)

IMG_1392.JPG

最新回复

要注意SPI极性是否与器件要求的一致  详情 回复 发表于 2016-8-18 19:15
 
点赞 关注

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
SOMI信号线一直处于抖动状态,硬件结构部分已经加了3.3V上拉
 
 

回复

721

帖子

1

TA的资源

一粒金砂(高级)

板凳
 
要注意SPI极性是否与器件要求的一致
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表