本文主要是介绍拆解一个无线门铃,学习EV1527芯片的编解码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
EV1527接收发送程序Proteus仿真:
链接:https://pan.baidu.com/s/1wA8AIUhK0yAdBLovfmmOcw
提取码:18jf
EV1527实际硬件接收发送程序: 使用STC15W4K56S4 keil4编译
链接:https://pan.baidu.com/s/12SJHiG7ZZGH0OQcHInX3OQ?pwd=1jy8
提取码:1jy8
EV1527数据手册:
链接:https://pan.baidu.com/s/1RARhTqEsCnwZW7-pIqdTZg
提取码:qmos
通过拆解一个无线门铃,分析EV1527芯片的编码,利用单片机接收并解码。用单片机模拟EV1527数据格式发送。
中间那个声表稳频器件是315M的,可知这个门铃的载波频率是315MHz。
8脚SOP封装芯片就是EV1527,它的3腿是GND,4腿就是数据发送端,分别连接两根导线,接逻辑分析仪。
EV1527管脚分布:
资料上的EV1527数据格式是这样的:
1个T是8个OSC,它由与EV1527芯片相连的特定电阻和电压决定,有个相关表格可以进行查询,见手册。
怎么表示0,1,f,和同步码。
位0:【4T高+12T低】 +【4T高+12T低】
这里,可以将4T称为窄脉冲,将12T称为宽脉冲,还有一种长的宽脉冲,是124T。用它们就可以表示所有数据了。
位1:【12T高+4T低】 +【12T高+4T低】
悬空码F:【4T高+12T低】 + 【12T高 + 4T低】
同步码:【4T高 + 124T低】
再写得简单些:
窄=4T,宽=12T,长宽=124T
位0:00 窄宽,窄宽
位1:11 宽窄,宽窄
悬空吗F:01 窄宽,宽窄
同步码:窄+长宽
实际测量到的波形:
使用逻辑分析仪测量输出波形,每按下一次电铃按键,出现这样的波形:
可以看出,每次按铃,由同步码引导的数据被发送了8次。
测量得到窄脉冲=346us,长宽脉冲=10.732ms,宽脉冲=1.04ms
EV1527的发码格式:
首先发送一个同步码:窄脉冲+长宽脉冲
接着发送20位地址码:
接着发送4位数据码:
解读一下逻辑分析仪测量的数据:
经过实际解读,发现,它和资料上介绍的不太一样。实际硬件的发码方式是同样的数据发8遍,每一遍由同步码,地址码20位,数据码4位组成,而且不重复,也就是0bit,就用窄+宽表示,1bit,用宽+窄表示,没有地址悬空码F。
解读一下这些信息:
其中绿色的是C0---C19共20位地址码:0100 1011 0001 1010 0110
由于发送数据的时候是从最低位开始发送的,因此真正的地址码应该反过来看,也就是:01100101100011010010 就是十六进制数字 Addr=0x658D2;
黄色是D0,D1,D2,D3,共4位数据码: 0001,反过来就是1000就是0x08;
每按下一次电铃按键,相同的信息发送8次,这就是实际硬件的输出信息。
下面使用单片机来模拟信号的发送。
超再生发送模块的1接P3.2,2接Vcc,3接地,连接超再生315M发射模块
使用STC15W4K56S4芯片,11.0592MHz
地址和数据均从最低位开始发送。
编写接收程序:
规定EV1527一共发送8次数据,接收其中的5次,如果有3次相同,就认为收到了正确的数据。
一定要注意,发送时,无论地址还是数据都是从最低位开始发送的,因此,接收的时候,需要将它们反序,才能得到正确的地址码和数据码。
例如这里的地址码是 0x0658D2
十六进制: 6 5 8 D 2
二进制: 0110 0101 1000 1101 0010
接着发送数据码:0x02
二进制 0010
接收时将它们从一个unsigned long 型变量的最高位依次右移,得到:
十六进制: 2 6 5 8 D 2 0 0
二进制: 0010 0110 0101 1000 1101 0010 0000 0000
数据码是橙色的,右移28位得到。
地址码,首先屏蔽掉最高的4位,与0x0FFFFFFFL做与,长整形要写L,然后右移8位得到。
接收使用STC15W4K56S4,硬件连接使用P3.2,也就是中断INT0。模块使用超外差(超再生)接收模块。
这篇关于拆解一个无线门铃,学习EV1527芯片的编解码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!