1527编码协议_EV1527解码,我也贡献一个,抗干扰,自适应.....
EV1527解码,我也贡献一个,抗干扰,自适应, 经测试比买的解码成功率高,具体多少没计算,通过示波器看到;
/*
中断处理函数 、每次中断查询一下电平;
手册16个CLK(一个数据位)的时间是
最大4.24ms(4240us)/16= 265us; 最小230us/16=14us; 分频时间是4us;
;
同步头高电平至少4个时钟;识别同步头分2步
第一步高电平时间大于等于40us,小于265*4*1.2 = 1060*1.2=1270us;
第二步 低电平时间是高电平时间的31倍,留20%余量26倍-36倍之间;
计算电平时间 (高电平时间 + 低电平时间) / 32 ;
数据宽时间要在这个数值的 正负20% 之间
*/
INTERRUPT_HANDLER(EXTI_PORTA_IRQHandler, 3)
{
static U16 data_h_time; //
static U16 data_l_time; //
static U16 bit_time_min;
static U16 bit_time_max;
static U8 decode_KEY;
static U32 decode_ID;
U16 temp;
static U8 ev1527_rx_last;
U16 ev1527_new_time;
disableInterrupts();
ev1527_new_time = (uint16_t)TIM2->CNTRH << 8;
ev1527_new_time |= (uint16_t)(TIM2->CNTRL);
if(EV1527_RX) //接收编码高电平
{
if(ev1527_rx_last==0) //上次是低电平,有跳变
{
EV1527_COUNT_CLEAR;
if(ev1527_decode_state>sync_h)
{
str_ev1527_data.l_data[str_ev1527_data.l_data_write] = ev1527_new_time;
str_ev1527_data.l_data_write = (str_ev1527_data.l_data_write + 1) % EV1527_DATA_TIME_NUM;
switch(ev1527_decode_state)
{
case sync_l:{
temp = str_ev1527_data.l_data[str_ev1527_data.l_data_read] / str_ev1527_data.h_data[str_ev1527_data.h_data_read];
if((temp >= SYNC_RATIO_MIN) && (temp <= SYNC_RATIO_MAX))
{
temp = str_ev1527_data.l_data[str_ev1527_data.l_data_read] + str_ev1527_data.h_data[str_ev1527_data.h_data_read];
str_ev1527_data.h_data_read = (str_ev1527_data.h_data_read + 1) % EV1527_DATA_TIME_NUM;
str_ev1527_data.l_data_read = (str_ev1527_data.l_data_read + 1) % EV1527_DATA_TIME_NUM;
bit_time_min = temp / 9;
bit_time_max = temp / 7;
decode_ID = 0;
decode_KEY = 0;
data_h_time = 0;
data_l_time = 0;
ev1527_decode_state = chipid_0l;
}
else
{
ev1527_decode_state = sync_h;
}
}break;
case chipid_0l:
case chipid_1l:
case chipid_2l:
case chipid_3l:
case chipid_4l:
case chipid_5l:
case chipid_6l:
case chipid_7l:
case chipid_8l:
case chipid_9l:
case chipid_10l:
case chipid_11l:
case chipid_12l:
case chipid_13l:
case chipid_14l:
case chipid_15l:
case chipid_16l:
case chipid_17l:
case chipid_18l:
case chipid_19l:
{
data_h_time += str_ev1527_data.h_data[str_ev1527_data.h_data_read];
data_l_time += str_ev1527_data.l_data[str_ev1527_data.l_data_read];
str_ev1527_data.l_data_read = (str_ev1527_data.l_data_read + 1) % EV1527_DATA_TIME_NUM;
str_ev1527_data.h_data_read = (str_ev1527_data.h_data_read + 1) % EV1527_DATA_TIME_NUM;
temp = data_h_time + data_l_time;
if(temp >= bit_time_min)
{
if(temp <= bit_time_max)
{
if(data_h_time > data_l_time)
{
decode_ID |= 0x01;
}
decode_ID <<= 1;
ev1527_decode_state++;
data_h_time = 0;
data_l_time = 0;
}
else
{
ev1527_decode_state = sync_h;
}
}
}break;
case data_0l:
case data_1l:
case data_2l:
case data_3l:
{
data_h_time += str_ev1527_data.h_data[str_ev1527_data.h_data_read];
data_l_time += str_ev1527_data.l_data[str_ev1527_data.l_data_read];
str_ev1527_data.l_data_read = (str_ev1527_data.l_data_read + 1) % EV1527_DATA_TIME_NUM;
str_ev1527_data.h_data_read = (str_ev1527_data.h_data_read + 1) % EV1527_DATA_TIME_NUM;
temp = data_h_time + data_l_time;
if(temp >= bit_time_min)
{
if(temp <= bit_time_max)
{
if(data_h_time > data_l_time)
{
decode_KEY |= 0x08;
}
if(ev1527_decode_state == data_3l)
{
ev1527_chip_ID = decode_ID;
ev1527_chip_key = decode_KEY;
ev1527_new_sms = 1;
LED_ON(LED_01);
ev1527_decode_state = sync_h;
}
else
{
decode_KEY >>= 1;
ev1527_decode_state++;
}
data_h_time = 0;
data_l_time = 0;
}
else
{
ev1527_decode_state = sync_h;
}
}
}break;
}
}
}
ev1527_rx_last = 1;
}
else //接收编码低电平
{
if(ev1527_rx_last) //上次是高电平,有跳变
{
EV1527_COUNT_CLEAR;
if(ev1527_decode_state == sync_h)
{
if((ev1527_new_time >= SYNC_H_TIME_MIN) && (ev1527_new_time <= SYNC_H_TIME_MAX))
{
str_ev1527_data.l_data_read = str_ev1527_data.l_data_write=0;
str_ev1527_data.h_data_read = str_ev1527_data.h_data_write=0;
str_ev1527_data.h_data[str_ev1527_data.h_data_write] = ev1527_new_time;
str_ev1527_data.h_data_write = (str_ev1527_data.h_data_write + 1) % EV1527_DATA_TIME_NUM;
ev1527_decode_state = sync_l;
}
}
else
{
str_ev1527_data.h_data[str_ev1527_data.h_data_write] = ev1527_new_time;
str_ev1527_data.h_data_write = (str_ev1527_data.h_data_write + 1) % EV1527_DATA_TIME_NUM;
}
}
ev1527_rx_last = 0;
}
enableInterrupts();
}
1527编码协议_EV1527解码,我也贡献一个,抗干扰,自适应.....相关推荐
- 1527编码协议_一种用射频收发器芯片发射1527编码的方法与流程
本发明属于无线控制.安防及智能家居技术领域. 背景技术: Sub-1GHz的射频收发器芯片,又叫无线数传芯片,如SI4432/CC1101,常用于工业控制/远程抄表及智能家居系统等,实现远距离双向无线 ...
- netty 对 protobuf 协议的解码与包装探究(2)
netty 默认支持protobuf 的封装与解码,如果通信双方都使用netty则没有什么障碍,但如果客户端是其它语言(C#)则需要自己仿写与netty一致的方式(解码+封装),提前是必须很了解net ...
- python decode()函数 (使用登记用于编码的编解码器解码字节)
def decode(self, *args, **kwargs): # real signature unknown"""Decode the bytes using ...
- Dubbo篇:基于Netty实现Dubbo协议编解码源码分析
Dubbo协议解析 Dubbo协议设计参考了TCP/IP协议,包括协议头和协议体两部分.16字节报文头主要携带了魔法数(0xdabb,用于分割两个不同请求),以及当前请求报文是否是Request.Re ...
- Netty使用篇:Http协议编解码
第一章:概述 Http协议是一个应用层协议.在Http协议之上又构建出来了WebSocket这种双向通信的协议.可以主动在服务端帮我们去推数据,实际上我们现在做一些双向通信的比较很重要的东西,比如:推 ...
- c语言的tlv协议编解码函数,基于C语言的TLV格式协议快速解析方法与流程
技术特征: 1.基于C语言的TLV格式协议快速解析方法,其特征在于,在客户机上设有编译器和解析器,在服务器上也设有编译器和解析器,从而使客户机和服务器都同时具备编码能力和解码能力:客户机和服务器通过网 ...
- WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码
转自:http://blog.csdn.net/nonmarking/article/details/47958395 本系列目前共三篇文章,后续还会更新 WebRTC VideoEngine超详细教 ...
- 关于支付接口回调地址参数字段是“notify_url”,签名过后的特殊字符url编码以后再解码后出现错误(¬ , ¢, ¤, £)
今天对接支付接口,参数拼接完了,开始调用的时候,一直报错,签名错误. 但是我用第三方给的签名测试mode测试签名,返回的是true. 这就非常他娘的奇怪. 经过一个个参数对比,我发现,notify_u ...
- des加密+base64编码,base64解码+des解密
des加密+base64编码,base64解码+des解密 des简单介绍 base64简单介绍 运行效果图 TestActivity.java DataEncryptionUtil.java des ...
最新文章
- Extjs grid选中一条记录Ajax访问后台
- 研制一个生产计划编制的软件
- 在LINUX 下安装 Realtek 8110SC 千兆网卡驱动
- sklearn自学指南(part33)--流形学习
- 最近目标检测新范式汇总SparseRCNN,OneNet,DeFCN等
- leetcode950. Reveal Cards In Increasing Order
- 深度学习之激活函数详解
- 2数据库表增加一个字段_详解PostgreSQL用户、数据库及表的管理、操作与授权
- 【python实战】23个爬虫项目源码:微信、淘宝、知乎、微博...
- C语言中向量的加法,向量的加减法运算法则
- windows下V-Rep下载及安装教程
- primeNG组件库在Angular2上的使用
- 屏蔽ENTER键、ESC键的使用
- [20171122]rman filesystemio_options.txt
- 初学c语言试写的答题系统
- springboot+电影售票小程序 毕业设计-附源码201532
- Linux安装CentOS7操作系统详细教程
- Proxy代理简单使用
- 2010年第五届站长大会现场视频直播
- 房地产小程序开发-地产小程序开发
热门文章
- PHP常见的设计模式之:适配器模式
- AT4352 [ARC101C] Ribbons on Tree
- UTF-8和UTF-16简介
- Xcode11没有iOS14的真机包,Xcode12没有iOS8的真机包,用到的时候网上都要积分收费,免费的不好找,因此只有自己保存一份使用到的时候才不慌
- 实验任务(三)---密码破解技术
- 牛客练习赛37 C 筱玛的迷阵探险(Trie+折半)
- 下载神器 Proxyee Down windows10 安装教程
- win7开启ftp被动模式_Win7上防火墙开放FTP服务以及ping解决方案
- 后台是怎么判断管理员用户还是普通用户_深入学习 Java Web(九) :用户管理系统...
- html跳转页面 url不变,实现页面的跳转后,浏览器的地址栏不变