新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > CC1101/CC1100、stc单片机模拟2262-2272解码

CC1101/CC1100、stc单片机模拟2262-2272解码

作者:时间:2012-08-24来源:网络收藏

这几天研究了市场上常见的无线遥控开关,它们的无线部分大都是用2262-2272编码实现,在网上找了些2262-2272软解码的资料,发现少的可怜,即使有实用性也不高,于是乎就有了这篇博客。

22262频率计算公式为F=32000/Ros(KΩ)KHz,其中Ros为震荡电阻,发送一位占用32个时钟周期,其中起始位占用128时钟周期。2262编码格式如下图:

‘F’只有地址为才有,数据位只有‘0’‘1’。
点击浏览下一页

cc1101与stc单片机连接如下:

SI-P1.5;

SO-P1.6;

CLK-P1.7;

CS-P3.4;

GDO0-P4.2(CCP0);

GDO2-P4.3(CCP1);

cc1101配置如下:

    0x08,//0x0B,   // FSCTRL1   Frequency synthesizer control. 0x00,   // FSCTRL0   Frequency synthesizer control. 0x0c,   // FREQ2     Frequency control word, high byte. 0x1d,//0xAA,//,   // FREQ1     Frequency control word, middle byte. 0x89,//0x55,//   // FREQ0     Frequency control word, low byte. 0xc6,//0x8A,   //2d MDMCFG4   Modem configuration. 0x45,//0x01,   //3B MDMCFG3   Modem configuration. 0xb2,//0x73,   // MDMCFG2   Modem configuration. 0x02,//0xA2,   // 22  MDMCFG1   Modem configuration. 0xF8,   // MDMCFG0   Modem configuration.0x00,   // CHANNR    Channel number. 0x40,//0x00,   // DEVIATN   Modem deviation setting 
(when FSK modulation is enabled). 0x56,//0xB6,   // FREND1    Front end RX configuration. 0x11,   //10 FREND0    Front end RX configuration. 0x18,   // MCSM0     Main Radio Control State Machine configuration. 0x00, //0x0f,        //MCSM1 //0x30, 0x16,//0x1D,   // FOCCFG    Frequency Offset Compensation Configuration. 0x6c,//0x1C,   // BSCFG     Bit synchronization Configuration. 0x43,//0xC7,   // AGCCTRL2  AGC control. 0x40,//0x00,   // AGCCTRL1  AGC control. 0x93,//0xB2,   // AGCCTRL0  AGC control.0xe9,//0xEA,   // FSCAL3    Frequency synthesizer calibration. 0x2A,//0x0A,   // FSCAL2    Frequency synthesizer calibration. 0x00,   // FSCAL1    Frequency synthesizer calibration. 0x1f,   // FSCAL0    Frequency synthesizer calibration. 0x59,   // FSTEST    Frequency synthesizer calibration. 0x81,//0x88,   // TEST2     Various test settings. 0x35,//0x31,   // TEST1     Various test settings. 0x09,   // TEST0     Various test settings. 0x09,   // IOCFG2    GDO2 output pin configuration. 0x4d,   // IOCFG0D   GDO0 output pin configuration. 
Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.0x00,   // PKTCTRL1  Packet automation control. 0x30,   // 05   PKTCTRL0  Packet automation control. 0x00,   // ADDR      Device address. 0x2e,   // PKTLEN    Packet length.


这里配置异步接收速度大约为2.1K,根据手册说明,异步接收时,其发送频率的误差应在设定接收频率的1/8内,经测试表明,此设置完全可以接受震荡电阻为475的2262编码。

这里要说明一个问题,我也没有找出原因,cc1101在接收2262编码时,第一个起始位和第一个数据电平接收不到,大概会丢失132-140个震荡周期,这个可以用一个cc1101和一个超再生接收模块接收相同的数据在示波器上看出,但并不影响数据接收,因为一般2262编码至少会发送4次以上。

GDO0在接收时为数据输出,在发送时自动配置为数据输入,将STC的ccp0上升沿和下降沿捕获打开,并将ccp0跳转至P4.2。

2262软解码的关键在于找到正确的起始位。使用定时器0资源,配置成16位向上计数器,初始值为0x0000。过程如下:ccp0第一次捕获到上升沿时,启动定时器计数,捕获到下降沿时停止定时器并记录下此时TH0和TL0的计数并重新启动定时器,再一次捕获到上升沿时停止定时器并记录下TH0和TL0的值重启定时器,此时已读取到一个高电平和低电平的宽度了,然后比较,看低电平宽度是否为高电平宽度的30-33倍,如果是则可以认为是2262编码的起始位,如果不是,则如此循环直到找到比例合适的。

找到起始位后,循环捕获,至少捕获两个2262编码周期,因为OOK/ASK方式太不稳定了,取两次解码比较如果相同才能认为是正确的。

假定捕获完毕,到解码过程了,注意到2262编码规则,每位需要四个电平宽度来表示,其实可以不管是否为高电平或低电平,只需注意四个电平的比例规则:

‘0’1:3,1:3

‘1’3:1,3:1

‘F’1:3,3:1

还要注意一点,2262编码中‘F’只能出现在地址码中,如果在数据码中出现了‘F’,则可认为解码错误。



关键词: CC1101 CC1100 stc单片机

评论


相关推荐

技术专区

关闭