微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1125 双向通信,导致死机

CC1125 双向通信,导致死机

时间:12-23 整理:3721RD 点击:

您好!

   在CC1125使用过程中,发射器定时100ms,发送数据,接收器在收到数据后马上反馈1个信号;

在信号环境好的时候,都是OK的,但是在反馈信号很差时,发射端出现死机状态,此时不再产生中断,也不会有数据发出;

程序如下:

发射程序

char runTX1(unsigned char *txBuff,unsigned char len)
{

  u32 i;
//trxSpiCmdStrobe(CC112X_SIDLE);
//trxSpiCmdStrobe(CC112X_SFSTXON);
//    trxSpiCmdStrobe(CC112X_SFRX);
//    trxSpiCmdStrobe(CC112X_SFTX);
   
        
    // Write packet to tx fifo
       cc112xSpiWriteTxFifo(txBuff,len);
        
     // Strobe TX to send packet
     trxSpiCmdStrobe(CC112X_STX);
        
     // Wait for interrupt that packet has been sent.
     // (Assumes the GPIO connected to the radioRxTxISR function is set
     // to GPIOx_CFG = 0x06)

     RF_status =1;

    i=0;
   while(packetSemaphore != ISR_ACTION_REQUIRED)
     {
        i++;
        if(i>1400000)   //20ms delay
        {
            return 0;
        }
     }
 
      // Clear semaphore flag
      packetSemaphore = ISR_IDLE;
             
     trxSpiCmdStrobe(CC112X_SRX);    

     RF_status =0;
}

接收:

 
void runRX(void){

  u8 rxBuffer[64] = {0};
  u8 rxBytes;
    
   // Wait for packet received interrupt
    // cc112xSpiReadReg(CC112X_MARC_STATUS1, &marcStatus, 1);  //read CC112X_MARC_STATUS1
     //if(marcStatus ==0x80)//    
        
    if(packetSemaphore == ISR_ACTION_REQUIRED)        

   {
      // Read number of bytes in rx fifo
      cc112xSpiReadReg(CC112X_NUM_RXBYTES, &rxBytes, 1);      
      // Read n bytes from rx fifo
      cc112xSpiReadRxFifo(rxBuffer, rxBytes);
         

if()

{

.....

}
            
      // Reset packet semaphore
      packetSemaphore = ISR_IDLE;    
      // Set radio back in RX
      //trxSpiCmdStrobe(CC112X_SRX);    
            RF_status =1;        
                
     }        
}

其中RF_status是程序中用来判断中断是发射产生的中断,还是接收产生的中断;

冰天雪地跪等回复!

补充说明:接收端一直工作正常,发射端注释掉接收程序后,也一直工作正常;

也就是说,仅在发射端要同时处理发、收时,且反馈信号很差时出问题;

硬件完全采用的是官网的DEMO,程序上我也试各种方式,譬如,修改中断方式,用读取状态寄存器,

或者发送前清空缓存等,都没有任务作用。唯一的是有改善的是,在出现死机时,设置一个时间,超时后重新初始化高频,

但是也只是改善,偶尔还是会出现不断电初始化都不行的,并且这个出现死机现象完全没有规律,

这是CC1125固有的bug吗,拜托各位TI的技术给个建议啊;

或者有成功的双向通信的范例吗,急等啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top