TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430连接CC1101时的GDO2设置问题?

MCU采用过MSP430的F2132、F247、F5510,遇到一个奇怪的问题。

由于将CC1101的GDO2接至MSP430的P2.0的外部中断模式,希望当收到同步字时(GDO2=0x06)进入中断,然后用RF接收程序检查是否成功接收到数据。

相关设置如下:

 

//====================== GDO2的外部中断设置 ====================
void GDO2_ISR(void)
{
  TI_CC_GDO2_PxSEL &=~TI_CC_GDO2_PIN;      // 普通IO
  TI_CC_GDO2_PxDIR &=~TI_CC_GDO2_PIN;       // input
  TI_CC_GDO2_PxREN |= TI_CC_GDO2_PIN;        // Enable P2.0 internal resistance
  TI_CC_GDO2_PxOUT &=~TI_CC_GDO2_PIN;      // Set P2.0 as pull-Down resistance
  TI_CC_GDO2_PxIES &=~TI_CC_GDO2_PIN;        // P2.0 Lo->Hi edge、出问题的地方!!!
  TI_CC_GDO2_PxIFG &=~TI_CC_GDO2_PIN;       // P2.0 IFG cleared   TI_CC_GDO2_PxIE  |= TI_CC_GDO2_PIN;           // P2.0 interrupt enabled,GDO2

}

 

根据CC1101的数据手机,当GDO2=0x06时,应该是接收到同步字时该引脚置位,可如果设定为 P2IES &=~BIT0 则始终收不到另一模块发过来的数据,而如果修改成 P2IES |= BIT0 却能正确地接收到RF传过来的数据。感觉这与手册上的说明是反着的?

以下是RF接收程序的代码:

 

//================= RF接收程序 ==================

char RFReceivePacket(char *rxBuffer, char *length)
{
  char status[2];
  char pktLen;

  INT8U i=(*length)*4;          //等待时间,具体多少要根据datarate和length来决定
  TI_CC_Wait(30);
  while (TI_CC_GDO0_PxIN&TI_CC_GDO0_PIN)
  {
    TI_CC_Wait(30);
    –i;
    if(i<1)
      return 0;       } 

  
  if ((TI_CC_SPIReadStatus(TI_CCxxx0_RXBYTES) & TI_CCxxx0_NUM_RXBYTES))
  {
    pktLen = TI_CC_SPIReadReg(TI_CCxxx0_RXFIFO);
    
    TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, rxBuffer, pktLen); // Pull data
    *length = pktLen;                       // Return the actual size

    TI_CC_SPIReadBurstReg(TI_CCxxx0_RXFIFO, status, 2);

    return (char)(status[TI_CCxxx0_LQI_RX]&TI_CCxxx0_CRC_OK);
  }
  else
    return 0;                               // Error
}

 

Peter_Zheng:

PxIES的bit=0是low-high,bit=1是high-low,你的问题中就是中断是上升沿还是下降沿的问题,那么中断就是根据GDO2的电平跳变一致

Yun Zhang:

回复 Peter_Zheng:

为什么设置 TI_CC_GDO2_PxIES 为0时收不到数据、而设置为1却能收到呢?

仔细想了一下,可能的原因:

设置为0时,当GDO2出现 Low->High ,此时是接收到同步信号,如果立即切换为检查收到的RF数据,可能因为后续的数据包传输的时间因素,而未能收到,造成RF接收失败。

也许在GDO2中断后,在RF接收程序中根据数据包长加入适当的延时,就能正确地接收了?

待验证……

赞(0)
未经允许不得转载:TI中文支持网 » MSP430连接CC1101时的GDO2设置问题?
分享到: 更多 (0)