PCR1A模块四个引脚:VCC接5V DC电源+、DATA接单片机I/O口、DATA接单片机I/O口、GND接5V电源-。
备注:PCR1A模块有两个DATA接口,接单片机I/O口肯定没错,但两接口接收后波形的相位及初始电平就只有你自己测试了,这与你解码有关。
直接通过串口通信应该是不行的,超再生接收电路没有收到发射信号时也有很多杂波输出,这会影响串口中断。但用其他的编码方式通信还是可以的,只是遵循一定的编解码协议就行了,解码程序还需克服杂波干扰。
常见的无线传输协议:
每次传输一定要确认多传输几包数据
通过波形可以发现,解码芯片和输入信号的波形不完全一致,具体表现在
(1) 最开始数据的前导码没有波形
(2) 波形时间有误差,可以看出客户提供的芯片具有较大的误差。不是由于定时器的原因(之前一致是以为定时器的原因)
(3) 不同的解码芯片的表现是不一样的。
(4) 客户提供的芯片0.3MS的低电平,解码只有2.2MS,误差比较大
(5) 两者解码的第一个字节的数据都有可能不对,为了保证准确性,舍弃第一包采样的数据。采样第二字节和第三字节。
1.利用一个定时器定时40us产生一次中断,在中断中去读取RF_PIN 引脚的状态,其中有两个寄存器r_cycle_tmr和r_l_cnt分别代表一个有效位的时间长度和该有效位低电平的时间长度,当位长r_cycle_tmr在下面两个限定值范围内代表该位是有效的
上式中1000代表发射额定位长,±300表示误差范围,40是40Us中断一次。
当位有效时根据r_l_cnt和r_cycle_tmr的关系判断该位是0还是1
if((r_l_cnt * 2) <r_cycle_tmr )表示为位1,否则位0
当r_cycle_tmr >c_cycle_max时判断是否是解码成功,当成功解到24位是表示解码成功
需要注意的是,由于只有40us的中断,不能在定时中断中做过多的其他的事情。
2.其他解码方式:
软件解码方法 2(反码):
从第一个上升沿开始记时,并不断检测电平变化,一有电平变化,立即记录电平宽度
B1,再继续记时直至出现第二个下降沿,记录两个下降沿的间隔 B2,重复以上步骤,得到B3,B4,判断 B1,B2,B3,B4 是否在各自允许的误差范围内,是则保存 B1,B3,译出一个
码位,否则认为误码,丢弃。连续正确检测 12 个码位。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)