CC1101 关于SWOR的的几个理解

2019-07-18 14:10发布

CC1101 关于SWOR的的几个理解
现在我有几个问题需解决

1、CC1101使用手册中提到进入SWOR选通脉冲前启用RC振荡器,但我没有找到RC振荡器启用的地方?

2、WOR的流程是不是这样理解的:a、打开SWOR,之后会休眠;b、休眠时间结束,醒来之后判断是否有数据,没有继续休眠。我想问一下b的这种状况是怎么继续休眠的?因为我的设备休眠醒来之后无法进入休眠,要继续休眠是否需要发送SWOR滤波命令?

3、在发送或者接收之后再回到休眠模式是自动还是需要手动发送SWOR呢?

以下是我的代码设置WOR

void CC1101_WOR_Init( uint8 EN_wor, uint16 t_100ms )//一个单位100ms
{
   uint16 time_Event0;
//time_Event0=t_100ms*3467;//WOR_RES=0的情况下
time_Event0=t_100ms*109;//WOR_RES=1的情况下
//-----------------------------------------------------------------
   halSpiStrobe(CCxxx0_SIDLE);
if(EN_wor)//使能WOR配置
{
  //-----------------------------------------------------------------
  // 设置RX溢出时间:Setting Rx_timeout > 225.0 ms.
  // MCSM2[2:0].RX_TIME = 000b
  // Rx_timeout = T_event0*12.505%=225ms  -- 12.505%(WOR_RES=0)  RX 占空比
  halSpiWriteReg(CCxxx0_MCSM2,0x08);
  //-----------------------------------------------------------------
  // RXOFF_MODE=00b (RX->IDLE: no FS calib: 0.1 us), TXOFF_MODE=00b (TX->IDLE, no FS calib: 0.1 us).
  halSpiWriteReg(CCxxx0_MCSM1,0x00);//RX和TX后都回到空闲状态
  //-----------------------------------------------------------------
  //MCSM0[5:4]FS_AUTOCAL=11b
  halSpiWriteReg(CCxxx0_MCSM0,0x38); //IDLE转到RX、TX自动校准;PO_TIMEOUT=150us
  //-----------------------------------------------------------------
  // 使能自动校准晶振
  // 设置事件1:WORCTRL[6:4]EVENT1 = 111b ;T_event1=1.4 ms
  // Enable RC oscillator before starting with WOR (or else it will not wake up).
  halSpiWriteReg(CCxxx0_WORCTRL,0x79);//WOR_RES[1:0]=01b
  //-----------------------------------------------------------------
  // 设置事件0溢出时间:Set Event0 timeout =  (RX polling interval)
  // 条件1:WOR_RES = 1
  // 条件2:EVENT0 =  
  // 条件3:Assuming f_xosc = 26 MHz
  // 公式:T_event0 = (750 / f_xosc) * EVENT0 * 2**(5*WOR_RES) =  ms  

  halSpiWriteReg(CCxxx0_WOREVT1,0xFF&(time_Event0>>8)); //高字节事件0 超时
  halSpiWriteReg(CCxxx0_WOREVT0,0xFF&(time_Event0));  //低字节事件0 超时

  //halSpiStrobe( CCxxx0_SWORRST );//复位实时时钟为事件1 值
  halSpiStrobe( CCxxx0_SWOR );//
}
else
{
  ;//不执行WOR配置
}
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
广电总局
1楼-- · 2019-07-18 17:26
建议看下http://www.ti.com/lit/an/slaa459a/slaa459a.pdf

打开SWOR之后,周期性定时唤醒通过CS或者PQT方式嗅探空中是否有包,不需要MCU的干预,相当于芯片内部有个定时器

再次回到WOR需要再次手动发送SWOR
无线先森
2楼-- · 2019-07-18 21:47
 精彩回答 2  元偷偷看……
hzeeng
3楼-- · 2019-07-19 01:34
cc1101国产直接替代,可联系我 13823261387黄工
silicontra521
4楼-- · 2019-07-19 04:50

国产替代CC1101、SI4432无线芯片HW3000
满足低功耗要求:极低的接受电流8mA,业内领先的20dBm输出功率
成本低:比CC1101、SI4432无线芯片有价格优势
传输距离可达到2Km@10kbps
www.silicontra.com
DK_Knight
5楼-- · 2019-07-19 06:40
楼主,您好,我现在做毕设用到WOR,我跟您的wor初始化设置差不多,自认为已经知道各个寄存器的配置了,双向通信已经实现了,可就是发送swor之后无法进入休眠,您看能不能指导我一点点,已经卡了很久了!!

一周热门 更多>