EV1527 功能描述

1:每一帧码有 25 位,同步位(syn)的高低电平宽度为 t:31t(先高后低),其余每一位码的码形有两种,称为“0”码和“1”码;“0”码是一个高低电平宽度比为 t:3t 的脉冲(先高后低),“1”码是一个高低电平宽度比为 3t:t 的脉冲(先高后低);一帧码发完马上发下一帧码。其中 t 为振荡频率的 32 倍。

2:发码时依次将 syn、C0、C1、C2、C3、C4、C5、C6、C7、C8、C9、C10、C11、C12、C13、C14、C15、C16、C17、C18、C19、D0、D1、D2、D3 的编码发出。 C0-C19组成20位的地址码,以区分不同的遥控设备,D0-D3组成4位按键码,以实现不同的功能。

以433Mhz的EV1527遥控器为例

同步码:350us高电平+10ms低电平

0码:350us高电平+1ms低电平

1码:1ms高电平+350us低电平

解码代码

#include <linux/hrtimer.h>
#include <linux/ktime.h>
#include <linux/delay.h>
static struct hrtimer hr_timer;
static ktime_t ktime;
static unsigned int interval=50; /* unit: us */
#define _start_us_min   160
#define _start_us_max   240
#define _num0_us_min    15
#define _num0_us_max    25
#define _num1_us_min    0
#define _num1_us_max    10
int get_gpio_rx433(void);//获取gpio口状态函数,请自行实现ulong RF_data;
uchar Temp_addrl,Temp_addrh,Address_l,Address_h;//地址码
uchar cntint,IR_Key;                //接收位数据的个数,数据
bool   start_flag=0,IR_OVER;   //检测到码头start_flag置1,反之置0,接收完一组数据后IR_OVER置1,反之清0
bool   Jump_flag;                       //电平跳变标志
uint  release_key;                  //松手计数
uint  Low;                                  //低电平计数
uint  RF_Value_Cnt;                 //长按计数/**----------------------------------------------------------------------------------------------****函数名  :低电平脉宽测量函数**功能说明:计算低电平时间(LOW),50us调用一次**----------------------------------------------------------------------------------------------**/
void soft_count(void)//接受码计数函数
{if(get_gpio_rx433()==0)    //低电平{    Low++;if(Jump_flag)Jump_flag=0;  //Jump_flag由0→1代表 低→高 跳变    }else if(get_gpio_rx433()==1)   //高电平{if(!Jump_flag){ Jump_flag=1;           //Jump_flag由1→0代表 高→低 跳变soft_decode();Low=0;}}
}void soft_decode(void)
{if(start_flag==0){if(( Low > _start_us_min ) && ( Low < _start_us_max ))           //同步码{start_flag=1;cntint=0;//数据长度IR_Key=0;RF_data=0;}else {RF_Value_Cnt=0;release_key++;if(release_key>500)release_key=500;}}else if((start_flag==1)&&(cntint<24)){if(( Low > _num0_us_min ) && ( Low < _num0_us_max ))              //数据 0 {RF_data=RF_data<<1;cntint++;}else if(( Low > _num1_us_min ) && ( Low < _num1_us_max ))           //数据 1  {RF_data=RF_data<<1;RF_data|=1;cntint++;}else {start_flag=0;cntint=0;}}if(cntint==24){release_key=0;RF_Value_Cnt++;if(RF_Value_Cnt>500)RF_Value_Cnt=500;cntint=0;start_flag=0;IR_Key=RF_data&0x0000000f;    //取4位数据Temp_addrl=(RF_data>>4)&0x000000ff; //地址共20位,只取16位。Temp_addrh=(RF_data>>12)&0x000000ff;IR_OVER=1;      }
}
enum hrtimer_restart my_hrtimer_callback( struct hrtimer *timer )
{soft_count();hrtimer_forward_now(&hr_timer, ktime_set(0, (interval%1000000)*1000)); return HRTIMER_RESTART;
}
在接收开始的地方调用
hrtimer_init( &hr_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL );
ktime = ktime_set( interval/1000000, (interval%1000000)*1000 );
hr_timer.function = my_hrtimer_callback;
hrtimer_start( &hr_timer, ktime, HRTIMER_MODE_REL );代码有参考如下博文
————————————————
版权声明:本文为CSDN博主「冷冷凉凉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hallo8888/article/details/84952641

编码代码

int gpio_tx433;
void set_gpio_tx433(int enable)
{gpio_set_value(gpio_tx433, enable);
}
void set_tx433_0(void)
{gpio_set_value(gpio_tx433, 1);udelay(360);gpio_set_value(gpio_tx433, 0);mdelay(1);
}
void set_tx433_1(void)
{gpio_set_value(gpio_tx433, 1);mdelay(1);gpio_set_value(gpio_tx433, 0);udelay(320);
}
void set_tx433(unsigned long addr,unsigned int key)
{
int i=0;
int j=0;
for (i=0;i<4;i++)//需要重复发射4次
{
//同步码gpio_set_value(gpio_tx433, 1);udelay(320);gpio_set_value(gpio_tx433, 0);mdelay(10);
//地址码for(j=0;j<20;j++){if((addr>>(19-j))&0x1)set_tx433_1();elseset_tx433_0();}//按键码for(j=0;j<4;j++){if((key>>(3-j))&0x1)set_tx433_1();elseset_tx433_0();}
}
}

MTK平台基于EV1527的无线接收和发射程序相关推荐

  1. 新浪微博开发平台基于php的sdk包(包含demo程序),新浪微博API开发教程(一)-体验篇...

    现在新浪微博开放平台(http://open.weibo.com)非常火啊,所以...,你懂的! 首先,想要开发新浪微博API,你就必须获取APP KEY和APP SECRET,我毫不犹豫的就用新浪微 ...

  2. 在STM32上对EV1527等无线编码格式的C程序编码实现

    测调 西安.老雷子 2020年6月1日 软件平台 WINDOWS Keil uVision,STM32 ST-LINK 硬件平台 STM32S108C8B6 通用32开发板调试 发射端: 蜂鸟远T1 ...

  3. 基于STM32和EV1527的无线接收解码程序

    一.1527的数据帧结构 无线遥控的编码,从编码类型上来说,分为2类,一类是固定码,也就是编码芯片的地址是不变的,芯片型号以 EV1527.PT2262 为代表.另一种是滚动码,芯片的地址码是变化的, ...

  4. 新浪微博开发平台基于php的sdk包(包含demo程序),新浪微博API开发简介之用户授权(PHP基础篇)...

    现在玩微博的人越来越多了,而关于微博的第三方应用开发也越来越多,自己在偶然间开始接触了新浪微博API开发,新浪微博API开发的资源比较多,新浪微博提供了一个开发者的平台,网址是:http://open ...

  5. 基于mtk平台调试FM发射芯片KT0805

    一个比较简单的i2c设备,原理图如下, 主要是供电,硬件连接好了,软件不需要处理,音频数据是接在耳机模式上AU_HPL,AU_HPR,数据芯片自己接受发射, 软件需要处理的是SW1或者SW2,连接的G ...

  6. 浅谈mtk平台手机通过gprs网络连接pc

    GPRS:通用分组无线技术(General packet radios service),GSM网络覆盖的区域都可快速实现GPRS的覆盖. gprs的特点:高速率的数据传输.目前gprs速率达到40k ...

  7. 智能家电项目Linux程序,基于ARM-Linux的无线智能家居系统

    设计.发明的目的和基本思路.创新点.技术关键和主要技术指标 本科技制作主要是基于ARM9的软硬件平台和ZigBee无线技术来实现智能化的家居生活,让我们的家居生活更方便更省心更体贴.基本思路是通过Zi ...

  8. OFDM子载波频率 知乎_基于软件无线电的无线设备指纹识别

    文章信息:张靖志,郑娜娥,田英华.基于软件无线电的无线设备指纹识别[J].太赫兹科学与电子信息学报,2020,18(01):72-76. 摘要: 摘要:无线局域网由于其开放的信道环境和传统的密钥身份验 ...

  9. matlab多径信道模型,基于matlab的无线多径信道建模与仿真分析

    基于matlab的无线多径信道建模与仿真分析 基于MATLAB的无线多径信道建模与仿真分析 摘 要:对于无线通信, 衰落是影响系统性能的重要因素, 而不同形式的衰落对于信号产生的影响 也不相同.本文在 ...

最新文章

  1. The alias LM/W3SVC/1/Root/XX already exists. Please choose a different alias
  2. UI component html code 查看工具
  3. 160 - 30 cracking4all.1
  4. LeetCode 33. 搜索旋转排序数组 golang
  5. [转]使用Navicat for Oracle工具连接oracle的
  6. 从会计到IT老兵,我的11年转行经历
  7. 1.7编程基础之字符串 03 基因相关性 python
  8. Rust中Turbofish之函数后面双冒号(::)用法
  9. 【gateway系列】手把手教你gateway整合nacos注册中心
  10. Ubuntu解决ifconfig command not found的办法
  11. 数据科学包4-pandas核心数据结构
  12. 2020软件测试最新视频教程大合集汇总
  13. 基于java+jsp的户籍管理系统
  14. Unity绿幕视频后期制作方案探索
  15. Python 3.6 使用wordcloud制作词云(可设背景图像)
  16. JS基础之强制类型转换
  17. 给幼儿园小朋友看的网络安全扫盲篇
  18. C语言零碎知识点之定义指针时星号靠近类型名还是变量名
  19. 第一章 认识Java 2019-09-28
  20. @font-face使用自定义字体

热门文章

  1. Windows上那些值得推荐的良心软件-整理
  2. 软件实习项目2——贪吃喵(猫吃鱼版贪吃蛇)(成品展示)
  3. 布隆过滤器的误判率该如何计算?
  4. python笔记手册_《Python 学习手册》读书笔记
  5. SODA10M 数据集下载记录
  6. 大学计算机二级必考,计算机二级大学生必考吗
  7. FPGA入门实验之串口发送
  8. js return加分号_JavaScript语句后应该加分号么?
  9. 怎么快速暂停Google账户广告系列?
  10. 高项_第十一章项目风险管理