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

查看: 4946|回复: 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版