你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-L476RG开发】EV1527解码

[复制链接]
陈金华 提问时间:2015-11-24 14:27 /
本帖最后由 DAHAIGE-355079 于 2015-11-24 14:27 编辑

  现在低功耗,无线发射接收应用很普遍,本文就电动车遥控器常用的发射IC:EV1527解码做介绍。EV1527发射出来的波是进行调制过后的,借条电路有很多种,有专用的IC解调,有用分立元件搭的超再生解调电路,本文不做电路讲解;
需要知道的就是一条,经过解调出来的波形就是一串高低电平。
本测试EV1527的参数是:
工作电压:DC6V
OSC电阻:360K。
具体见EV1527的数据手册。
  1. //************************************************************************************************************
  2. unsigned char hh_w,ll_w;           //高,低电平宽度
  3. unsigned char ma_x;                //接收到第几位编码了
  4. unsigned char mma1,mma2,mma3,mma4; //用于解码过程
  5. unsigned char old_rc5;             //保存上一次查询到的电平状态
  6. unsigned char tb_ok;               //接收到同步的马时置1

  7. unsigned char rf_ok;               //接收到一个完整的遥控命令后置1,通知解码程序可以解码了
  8. unsigned char bma1,bma2,bma3,bma4; //用于接收过程存放遥控编码

  9. // 4t = 1.81ms
  10. //time 180us调用
  11. void DecodingEv1527(void)
  12. {
  13.   unsigned char RC5;
  14.   
  15. //  GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);    //连接逻辑分析仪,查看T0中断时间间隔
  16.   
  17.   RC5 = GPIO_ReadInputPin(Ev1527_GPIO_PORT, Ev1527_GPIO_PINS);
  18.   if(!RC5)  // 检测到低电平 低电平时间加1,记录本次电平状态
  19.   {
  20.     ll_w++;
  21.     old_rc5=0;
  22.   }         
  23.   else                                      // 检测到高电平
  24.   {
  25.     hh_w++;
  26.     if (!old_rc5)                          // 检测到从低到高的跳变,已检测到一个完整(高-低)电平周期
  27.     {
  28.       if (((hh_w>=2)&&(hh_w<=3))&&((ll_w>=60)&&(ll_w<=93)))          //判同步码
  29.       {
  30.         ma_x=0; tb_ok=1; bma1=0; bma2=0; bma3=0; bma4=0;
  31.       }
  32.       else if ((tb_ok)&&((ll_w>=6)&&(ll_w<=9))) //已经接收到同步码,判0
  33.       {
  34.         ma_x++;
  35.       }   
  36.       else if ((tb_ok)&&((ll_w>=2)&&(ll_w<=3)))  
  37.       {
  38.         switch (ma_x)
  39.          {
  40.            case 0 : { bma1=bma1 | 0x80; break; }//遥控编码第1位
  41.            case 1 : { bma1=bma1 | 0x40; break; }
  42.            case 2 : { bma1=bma1 | 0x20; break; }
  43.            case 3 : { bma1=bma1 | 0x10; break; }
  44.            case 4 : { bma1=bma1 | 0x08; break; }
  45.            case 5 : { bma1=bma1 | 0x04; break; }
  46.            case 6 : { bma1=bma1 | 0x02; break; }
  47.            case 7 : { bma1=bma1 | 0x01; break; }
  48.            case 8 : { bma2=bma2 | 0x80; break; }
  49.            case 9 : { bma2=bma2 | 0x40; break; }
  50.            case 10: { bma2=bma2 | 0x20; break; }
  51.            case 11: { bma2=bma2 | 0x10; break; }
  52.            case 12: { bma2=bma2 | 0x08; break; }
  53.            case 13: { bma2=bma2 | 0x04; break; }
  54.            case 14: { bma2=bma2 | 0x02; break; }
  55.            case 15: { bma2=bma2 | 0x01; break; }
  56.            case 16: { bma3=bma3 | 0x80; break; }
  57.            case 17: { bma3=bma3 | 0x40; break; }
  58.            case 18: { bma3=bma3 | 0x20; break; }
  59.            case 19: { bma3=bma3 | 0x10; break; }
  60.            case 20: { bma4=bma4 | 0x80; break; }//按键状态第1位
  61.            case 21: { bma4=bma4 | 0x40; break; }
  62.            case 22: { bma4=bma4 | 0x20; break; }
  63.            case 23: { bma4=bma4 | 0x10;
  64.              //         mma1=bma1;mma2=bma2;mma3=bma3;mma4=bma4;//将接收到的编码复制到解码寄存器中
  65.                                                               //在下一行设一个断点,用ICD2调试                                 
  66.              //         rf_ok=1;                                // 通知解码子程序可以解码了
  67.                       break;
  68.                     }
  69.            default:break;
  70.          }
  71.         ma_x++;
  72.     }
  73.     else //接收到不符合的高-低电平序列
  74.     {
  75.       ma_x=0; tb_ok=0; bma1=0; bma2=0; bma3=0; bma4=0;
  76.     }
  77.     if(ma_x == 23)
  78.     {
  79.         mma1=bma1;mma2=bma2;mma3=bma3;mma4=bma4;//将接收到的编码复制到解码寄存器中
  80.                                               //在下一行设一个断点,用ICD2调试                                 
  81.         rf_ok=1;
  82.      }
  83.     ll_w=0;hh_w=1;
  84.    }         
  85.    old_rc5=1;      // 记录本次电平状态
  86. }




  87. }

复制代码


QQ截图20151124142419.png

ev1527.pdf

下载

143.56 KB, 下载次数: 78, 下载积分: ST金币 -1

评分

参与人数 1 ST金币 +10 收起 理由
沐紫 + 10

查看全部评分

收藏 5 评论5 发布时间:2015-11-24 14:27

举报

5个回答
陈金华 回答时间:2015-11-24 14:30:40
@沐紫,不好意思这些天太忙了
沐紫 回答时间:2015-11-24 14:47:32
DAHAIGE-355079 发表于 2015-11-24 14:30
@沐紫,不好意思这些天太忙了

谢谢你的分享~
埃斯提爱慕 回答时间:2015-11-24 21:07:40
提示: 作者被禁止或删除 内容自动屏蔽
1107869545 回答时间:2016-9-2 10:55:37
请问下:
// 4t = 1.81ms
//time 180us调用
怎么算的?
kernel_sa 回答时间:2016-9-20 00:55:09
下载来看看啊,。。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版