这几天研究了市场上常见的无线遥控开关,它们的无线部分大都是用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,根据CC1101手册说明,异步接收时,其发送频率的误差应在设定接收频率的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单片机模拟2262-2272解码相关推荐

  1. CC1101与STC单片机通信

    这是我第一次发表这种技术类文章,不当之处,多多批评指正.谢谢! 有次偶然的机会我在网上淘到了一块CC1101与STC单片机通信的电路板,原理图如下: 我也是第一次接触CC1101这种通信模块,在网上找 ...

  2. ev1527、pt2262等433/315MHZ芯片用stc单片机解码,含源程序

    ev1527.pt2262等433/315MHZ芯片用stc15w204s-sop8单片机解码,含源程序 硬件介绍: 软件介绍: 单片机引脚定义: 解码原理: 最终结果: 主要代码 pt2262.c ...

  3. STC单片机获取红外解码从串口输出

    STC单片机获取红外解码从串口输出 串口数据演示 所使用的红外接收头VS1838 VS1838引脚定义 电气特性 所使用的红外按键板 红外遥控接收模块 VS/HX1838 相关的资料: https:/ ...

  4. 【IoT】STC 系列单片机模拟串口

    STC MCU STC15F204EA 模拟串口的示例程序: 例程使用 Timer0 中断,同步完成接受和发送的工作,属于双工首发. 串口将收到的信息在下一个发送周期转发出去:收发波特率可变,其它设置 ...

  5. 单片机c语言中void key(void),STC单片机C语言通用万能编程模板

    <STC单片机C语言通用万能编程模板>由会员分享,可在线阅读,更多相关<STC单片机C语言通用万能编程模板(23页珍藏版)>请在人人文库网上搜索. 1.8051 单片机 C 语 ...

  6. STC单片机驱动1.8‘TFT SPI屏幕示例模板(含资料包)

    STC单片机驱动1.8'TFT SPI屏幕示例模板(含资料包) 驱动演示 STC单片机采用的是: STC12C5A60S2,采用的自制开发板:<[开源]STC12C5A60S2开发板> 1 ...

  7. 基于STC单片机的两轮平衡车设计

    给大家传福利了..后续继续共享基于Arduino/安卓Android/树莓派raspberry等平台的两轮车设计 这是我前年暑假做的一个小项目,今年拿出来整理了下当毕设了(当然毕设里添加了许多其他元素 ...

  8. 基于STC单片机的排队管理系统的设计

    摘要:为改善营业窗口的服务质量和工作效率,解决枯燥无序的排队问题,采用STC89C52单片机控制语音芯片.打印机.LCD显示屏来模拟人工叫号过程,完成号码的打印.存储.显示及播报工作:采用MAX485 ...

  9. 如何用stc单片机内部ad采集多路交流信号

    用stc单片机内部ad采集多路交流信号,有两种办法: 一.用两个AD转换芯片,两路模拟量分别接一个.用单片机控制两个AD芯片同时启动转换,这样基本可以实现采集到同一时刻的两路模拟量值. 二.用两个采样 ...

最新文章

  1. matlab仿真谱间干扰,内外分解和谱分解问题解析计算及其MATLAB仿真.pdf
  2. python 读取地震道头数据_python地震数据可视化详解
  3. cookie 和 token 都存放在 header 中,为什么不会劫持 token?____token和cookie的区别
  4. java图片上传并解析,详解SpringMVC实现图片上传以及该注意的小细节
  5. 启动Eclipse 报错:java was started but returned exit
  6. 三连击 P1008 洛谷 python写法
  7. 无线联网常见问题[1]-搜不到无线网络(请先耐心看完)
  8. Bugku CTF 每日一题 旋转跳跃 BUUCTF 九连环
  9. ISA防火墙之利用DHCP部署WPAD
  10. 怎么用CDN给网站加速?大热的CDN,你确定你还不想了解?
  11. glm/glm.hpp_从GLM到GBM(第2部分)
  12. 根据表达式序列(前缀、中缀、后缀)构建表达式树
  13. 重要的xcel文件e报表丢了如何恢复呢
  14. linux系统如何改电脑地址,如何修改电脑的操作系统MAC地址
  15. 谣言检测论文精读——11.PAKDD2020-SAFE: Similarity-Aware Multi-Modal Fake News Detection
  16. outlook添加账号接受服务器,如何在outlook添加账号
  17. [每周心学]浙江大学公开课:王阳明心学
  18. 《三国塔防》为什么成功?
  19. 口袋妖怪php源码,查看“主题:宝可梦”的源代码
  20. 欧尼酱讲JVM(01)——整体概览(导航)

热门文章

  1. vue调用百度地图文档与说明
  2. Android实现动态任意拖动图片
  3. 字节顺序-大端/小端、big-endian/little-endian
  4. 【面经】陌陌-2017年8月28日,散招实习生
  5. 电脑的任务栏卡,但是桌面可以正常使用
  6. win7映射linux硬盘_win7旗舰版安装系统看不到硬盘解决方法(usb3.0问题)
  7. matlab运行后没反映,这个matlab程序运行没反应是怎么回事?在线急等
  8. Ni Multisim 101序列检测器实验报告
  9. 计划行为理论和技术接受模型整合模型图形_音乐与语言加工的二元模型(dual modal)...
  10. 【Java】两层for循环 break跳出