STM32下315M模块的无线接收解码程序

最近项目需要增加一个控制机器运行的紧急遥控,参考了一个大神的博客,然后我们选择了这样的遥控器和一个315M模块,实现遥控器的按键控制。

附上遥控器链接315M 模块链接淘宝。

首先介绍一下315M模块。315M是指频率为315MHz,还有433M也是比较常用的。其中它使用的芯片是EV1527型,EV1527 每帧数据由 24 个数据位组成,前 20 位为地址码,对于一个芯片来说,地址位的内容是固定的,是出厂前就预制好的,并且理论上每个芯片的地址码是唯一的。后面 4 位为按键码,对应芯片上的K0-K3 4 根数据线,数据线的状态不同,按键码就不同。 具体可以参考链接,我这里只是记录解析。

我们将模块通上电,在它的Data引脚出现无规律的波形。然后按下遥控器之后,芯片会接受到遥控器的信号,出现有规律的波形,如下图。(看着是不是显得头大了?)

根据前者参考资料里了解到,每个帧由24 个数据位组成,前20位是固定不变的地址位,后4位为按键位。在数据位之前,还有一个同步脉冲。我们需要捕获到同步脉冲之后,检测地址数据和按键数据。

同时数据位的“1”和“0”是由高低电平宽度(脉冲宽度)的比例决定的。如果高电平宽度为低电平宽度的 3 倍,就表示逻辑“1”,反过来如果低电平为高电平宽度的 3 倍,就表示逻辑“0”。同步脉冲高电平和低电平的比例固定为 4:124。

我们按下遥控器按键后,检测315M的Data引脚,同时将示波器定住放大如图所示。可以看到有很长一段低电平,此时是它的同步码过程,我们需要检测同步码过程。我们首先检测同步码前面一个的一个脉冲宽度,这个脉冲宽度基本上是遥控器的频率基数(每个遥控器可能脉冲宽度不一样)。将示波器放大,从示波器上看出此时脉冲宽度约为360us,那么CLK频率约为90us。(如果不把示波器放大的话,可能结果CLK可能为100us,影响误差)

那么这样就好办了,我们用stm32定时器定时产生90us的中断,来检测Data引脚的高低电平来检测0或者

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值