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

查看: 4933|回复: 5

[STM32L476] 【NUCLEO-L476RG开发】EV1527解码

[复制链接]

3

主题

102

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2015-11-24 14:27:31 | 显示全部楼层 |阅读模式
本帖最后由 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, 下载次数: 76, 下载积分: ST金币 -1

评分

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

查看全部评分

回复

使用道具 举报

3

主题

102

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
 楼主| 发表于 2015-11-24 14:30:40 | 显示全部楼层
@沐紫,不好意思这些天太忙了
回复 支持 反对

使用道具 举报

307

主题

3125

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-7-17
发表于 2015-11-24 14:47:32 | 显示全部楼层
DAHAIGE-355079 发表于 2015-11-24 14:30
@沐紫,不好意思这些天太忙了

谢谢你的分享~
回复 支持 反对

使用道具 举报

41

主题

2476

回帖

282

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2015-11-24 21:07:40 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

1

回帖

0

蝴蝶豆

新手上路

最后登录
2016-9-27
发表于 2016-9-2 10:55:37 | 显示全部楼层
请问下:
// 4t = 1.81ms
//time 180us调用
怎么算的?
回复 支持 反对

使用道具 举报

0

主题

21

回帖

0

蝴蝶豆

初级会员

最后登录
2020-5-31
发表于 2016-9-20 00:55:09 | 显示全部楼层
下载来看看啊,。。
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版