一种无线遥控解码方法及其装置与流程

文档序号:15805519发布日期:2018-11-02 21:47阅读:1295来源:国知局
一种无线遥控解码方法及其装置与流程

本发明涉及一种无线遥控解码技术,具体地说,涉及一种无线遥控软件解码方法。

背景技术

无线遥控已广泛应用于各种电子设备中,其解码技术分为两类:硬件解码和软件解码。硬件解码需要在电路中额外增加特定的解码芯片实现功能。因此硬件解码不仅增加硬件电路成本,而且使硬件电路复杂化,引入了额外的故障隐患,降低了产品可靠性。目前应用的单片机软件解码技术,需要单片机具有电平边沿触发中断的专用端口,并对遥控脉冲信号的高低电平脉宽进行实时测量,通过测量信号脉宽绝对值识别逻辑信号。这种方法对单片机的硬件配置要求较高,软件上需要通用周期性定时器和边沿触发的中断定时器(简称:中断器)配合使用,遥控信号检测算法复杂,无法满足通用低成本的应用场合。



技术实现要素:

本发明针对现有技术的不足,提出一种基于通用周期性定时中断和单片机通用输入输出端口即可实现的无线软件解码方法,本方法算法精简,适合通用低成本应用场合。

本发明所采用无线遥控软件解码方法,包括以下步骤:

(1)遥控接收器的数据输出口经电平转换电路连接至单片机的gpio端口;

(2)设置单片机的中断器的定时周期,产生普通定时中断事件;

(3)单片机每产生1次定时中断,检测1次所述的gpio端口电平,并根据累计检测到的连续高/低电平的累计次数y是否达到已设定的连续高或低电平的累计次数m,来判断接收到的无线遥控数据的数据头是否有效;若y=m,则数据头有效,进入步骤(4),若y<m,则数据头无效,重复步骤(3);

(4)单片机每产生1次定时中断,对紧邻数据头之后的n组遥控脉冲信号的第i组进行解析,判断该组遥控脉冲信号是否有效;若无效,则判断该组遥控信号的数据无效,终止后续解码程序并丢弃已解码数据,返回步骤(3);若有效,则对该第i组脉冲信号进行解码,直到得到n位遥控命令;

其中,1≤i≤n。

本发明所述的无线遥控数据的有效数据头是由规定数量的m个连续低电平信号构成(与杂波干扰相区别),每个低电平脉宽长度为1个te。te为脉宽基本单元,单位为微秒。

单片机接收到的n组遥控脉冲信号对应n位逻辑0或逻辑1。每位逻辑0和逻辑1的脉宽tbp由3个脉宽基本单元te构成。由于逻辑0或逻辑1的起始电平均为高电平,因此第i组遥控信号必须经过一个由低到高的上升沿才能过渡到第i+1组信号(其中1≤i≤n),该信号上升沿做为解码软件判断第i组遥控信号结束的条件。

n组无线遥控脉冲信号中的第i组(1≤i<n-1)信号的解码方法为,通过单片机通用定时中断事件,定时检测并累计第i组遥控脉冲信号输出至单片机gpio端口的高电平次数a[i]和低电平次数b[i],如果gpio端口检测为高电平,同时b[i]的值为0,那么第i组(1≤i≤65)脉冲信号的低电平仍未到来,第i组脉冲信号接收还未完成。如果gpio端口检测为高电平,同时b[i]的值不等于0,那么可以判断第i组(1≤i≤65)脉冲信号已接收完毕,第i+1组脉冲信号的起始上升沿已到来,准备启动第i+1组脉冲信号的解析。与此同时进入步骤三,对第i组脉冲信号进行解析。

当第i组遥控信号结束时,判断a[i]和b[i]的有效性。如果a[i]等于b[i],或者a[i]与b[i]差值的绝对值超出设定的合理误差范围,那么解码软件判定接收到的第i组遥控信号数据无效,终止后续解码程序并丢弃已解码数据,重新启动新一轮的数据接收。

如果a[i]大于b[i],那么第i组遥控信号对应逻辑0。如果a[i]小于b[i],那么第i组遥控信号对应逻辑1。

由于无线遥控信号逻辑0的高电平脉宽为2te,逻辑1的高电平脉宽为te,所以根据第n组脉冲信号高电平脉宽长度不同,可以判定第n组遥控信号对应是逻辑0或逻辑1。第n组脉冲信号对应的高电平计数值为c,那么c的值应为脉宽是2te或te对应的定时中断计数值。

取第1组至n-1组中的任意一组信号对应的高电平计数值a[i]和低电平计数值b[i],式中1≤i≤n-1。

根据逻辑0和逻辑1的信号特性,a[i]与b[i]和应为1个完整的位周期脉宽(3te)对应的定时中断计数值。如果2c>a[i]+b[i],则第n组遥控数据对应逻辑0,反之第n组遥控数据对应为逻辑1。

本发明还提供一种无线遥控解码装置,其特征在于,包括:遥控接收器和单片机;其中:遥控接收器的数据输出口连接单片机的gpio端口;单片机进一步包括:

中断器,用于产生普通定时中断事件;

电平检测装置,连接gpio端口和中断器,用于在每次定时中断时检测gpio端口的电平;

计数器,连接电平检测装置,用于分别累计检测到的高电平和低电平的次数;

数据头检测装置,连接计数器,根据已设定的连续高或低电平的次数m和计数器检测到的连续高/低电平的次数y,来判断接收到的无线遥控数据的数据头是否有效;若y=m,则数据头有效,触发遥控脉冲信号解码装置;若y<m,则数据头无效,从头进行数据头检测;

控脉冲信号解码装置,连接计数器和数据头检测装置,用于在数据头为有效时,对紧邻数据头之后的第i组进行解析,判断该组遥控脉冲信号是否有效;若无效,则判断该组遥控信号的解码数据无效,终止后续解码程序并丢弃已解码数据;若有效,则对该第i组脉冲信号进行解码,直到得到n位遥控命令;

其中,1≤i≤n。

进一步,数据头检测装置设置为:若满足temin/t≤m≤temax/t,则数据头为有效的数据头,并触发遥控脉冲信号解码装置对数据头之后的脉冲信号进行解析;

其中,m为连续低电平累计次数,t为单片机定时中断间隔,temin为单片机最小脉宽基本单元,temax为单片机最大脉宽基本单元。

更进一步,遥控脉冲信号解码装进一步包括:

第一条件判断装置:连接第二条件判断装置和第五条件判断装置,用于判断是否i<n,若是,则触发第二条件判断装置;若i=n,触发第五条件判断装置;

第二条件判断装置:连接第三条件判断装置和第四条件判断装置,用于在数据头为有效时,在单片机每产生一次定时中断时,检测gpio端口的电平,并分别累计a[i]和b[i]值;同时判断是否b[i]≠0,若是,如果同时gpio端口为高电平,则触发第四条件判断装置,否则,触发第三条件判断装置;

第三条件判断装置:连接第二条件判断装置和数据头检测装置,用于判断:是否a[i]+b[i])>((3temax)/t),若是,第i位遥控信号解码数据无效,终止后续解码程序并丢弃已解码数据,触发数据头检测装置;否则,触发第二条件判断装置;

第四条件判断装置:连接第三条件判断装置和数据头检测装置,用于判断是否同时满足:

(i)a[i]≠b[i],

(ii)(3temin)/t≤(a[i]+b[i]),

(iii)(temin/t)≤abs(a[i]-b[i])≤(temax/t);

其中,a[i]为高电平累计次数,b[i]为低电平累计次数;

如果同时满足上述三个条件,则触发逻辑0/1判断装置一,否则,判断第i位遥控信号解码数据无效,终止后续解码程序并丢弃已解码数据,触发数据头检测装置,进行新一轮的数据头检测;

逻辑0/1判断装置一:连接第四条件判断装置,用于判断:

是否满足:a[i]>b[i],若是,则第i组遥控信号对应逻辑0;否则,第i组遥控信号对应逻辑1;以及

第五条件判断装置,连接第一条件判断装置,进一步包括:

--电平接收及累计装置:用于接收第n组脉冲信号对应的高、低电平,累计连续的高电平计数值c;并检测是否接收到低电平,若是,触发逻辑0/1判断装置二,否则,继续累计连续的高电平计数值c,并检测是否接收到低电平;

--逻辑0/1判断装置二,连接电平接收及累计装置,用于判断是否2c>a[i]+b[i],若是,则第n组数据为逻辑0,反之该数据为逻辑1,式中,1≤i≤n-1;

其中,a[i]为第i组脉冲信号的高电平累计次数,b[i]为第i组脉冲信号的低电平累计次数。

本发明所述的软件解码方法可替代硬件电路解码技术,不仅降低了成本,简化了硬件电路,而且有利于电路的稳定运行。本发明所述的软件解码方法不需要准确测量遥控脉冲信号宽度,而只需要比较信号高电平和低电平对应的普通定时中断计数值大小,就可以区分遥控信号对应的逻辑0和逻辑1。本发明所述解码方法对单片机配置要求不高,更适合通用低成本应用场合。

附图说明

图1为本实例软件解码流程图;

图2为单片机hcs301发出的一帧编码脉冲信号;

图3为逻辑0与逻辑1的定义;

图4为无线遥控解码装置的结构示意图。

具体实施方式

下面结合被广泛应用于汽车遥控钥匙的keeloq滚动码信号解码,对发明的技术方案做详细的阐述。

一种无线遥控软件解码方法,包括以下步骤:

(1)将无线遥控接收模块的数据输出口经电平转换电路连接至单片机的gpio(通用输入/输出)端口。

在本实例中,遥控器的按键编码电路采用hcs301芯片,通过hcs301进行按键编码,产生遥控编码脉冲,通过钥匙中的射频电路发送无线数据信号,315mhz无线遥控接收器(即本实例中的超外差无线接收模块)将接收到的无线数据转换成遥控脉冲信号输出,连接至nxphcs12单片机的普通gpio端口gpio。

(2)设置单片机内部周期性中断器,产生普通定时中断事件。单片机每产生1次定时中断,解码软件检测1次无线遥控数据输入至单片机gpio端口电平,并累计gpio端口检测到的高/低电平的次数。

遥控钥匙中hcs301芯片会受环境温度影响,导致遥控钥匙发出的遥控脉冲信号脉宽基本单元te会在一定范围内变化。根据hcs301芯片厂家提供的数据手册,hcs301产生遥控信号的脉宽基本单元te有效范围为260us到660us。

在解码软件中,设置单片机定时器的中断时间间隔小于260us,保证te有效范围内的每组遥控脉冲信号都可以实时采样。在每个遥控脉宽基本单元te内,采样点避开脉冲信号的上升和下降沿,将每次单片机端口电平采样点设置在te的2/3处采样。这样既保证采样点处的信号电平稳定,同时又保证每个te内,单片机至少可以采样脉冲信号电平1次。基于上述考虑,将解码软件中单片机定时中断间隔设置为175us。

hcs301发出的一帧无线遥控脉冲信号如图2所示。每帧无线遥控脉冲信号由占空比为50%,脉宽为23个te的前导码开始。脉宽为10个te的有效数据头紧邻前导码。66组遥控脉冲信号位于数据头后。

在目前其他软件解码方法中,前导码用于单片机脉宽测量,计算te的准确值,用于后续数据头、脉冲数据的解码。本发明所述的解码方法不需要精确测量te的值,是通过比较累计检测到的端口高/低电平计数值来判断逻辑0或逻辑1,因此本发明不需要关注前导码部分,比其他软件解码算法更简化。

有效数据头的判定方法:

hcs301发出的遥控脉冲信号的有效数据头由10个te连续的低电平构成,用于与环境杂波信号区分。由于te的范围是260us到660us,定时器中断间隔时间为175us,因此遥控信号中有效数据头对应的gpio端口连续低电平累计次数m应满足:15≤m≤37。在m值未达到15之前,gpio端口检测出1次高电平,那么判定接收到的本轮遥控信号的数据头无效。如果15≤m≤37,那么判定本轮遥控信号数据头有效,立即启动66组遥控信号解码。

(3)若步骤(2)中数据头有效,解码软件控制单片机采用步骤(2)中的中断方法,对hcs301发出的紧邻数据头的66组遥控脉冲信号进行检测。根据设定的解码规则对该66组遥控脉冲信号进行解码,得到每组遥控信号对应的逻辑码0或逻辑1,共66位。

第1组至第65组遥控信号解码方法为:

遥控信号对应的逻辑0和逻辑1的信号特性见图3所示。逻辑0码的脉宽由2个te的高电平和1个te的低电平构成。逻辑1的脉宽由1个te的高电平和2个te的低电平构成。

记第i组(1≤i≤65)遥控脉冲信号高电平对应的gpio端口检测累计计数值为a[i],低电平累计计数值为b[i]。

在启动第i组(1≤i≤65)遥控脉冲信号解析时,a[i]和b[i]的初始值均设置为0。每次单片机定时器定时中断发生时,根据gpio端口的电平,分别对a[i]和b[i]累计计数。

步骤一:

每次检测到pa0端口为高电平时,需根据b[i]的值是否为0,判断第i组(1≤i≤65)脉冲信号是否接收完毕。由于逻辑0或逻辑1的起始电平均为高电平,因此第i组遥控信号必须经过一个由低到高的上升沿才能过渡到第i+1组信号(其中1≤i≤n)。

如果gpio端口检测为高电平,同时b[i]的值为0,那么第i组(1≤i≤65)脉冲信号的低电平仍未到来,第i组脉冲信号接收还未完成。如果gpio端口检测为高电平,同时b[i]的值不等于0,那么可以判断第i组(1≤i≤65)脉冲信号已接收完毕,第i+1组脉冲信号的起始上升沿已到来,准备启动第i+1组脉冲信号的解析。

步骤二:

根据a[i]+b[i])是否大于(3temax)/t,判断该第i组脉冲信号是否为有效信号。

若a[i]+b[i])>((3temax)/t),那么该组脉冲信号的长度大于3个脉宽基本单元te,因此是无效数据,终止后续解码程序并丢弃已解码数据,重新进行数据头的判断。

若a[i]+b[i])≤((3temax)/t),该第i组脉冲信号为有效信号,进入步骤三,对第i组脉冲信号进行解析。

步骤三:

第i组(1≤i≤65)脉冲信号接收完毕后,程序对脉冲信号进行解析,对于第i组脉冲信号,只有a[i]和b[i]同时满足以下条件才认为是有效值:

条件1:a[i]≠b[i]

条件2:

(3temin)/t≤(a[i]+b[i]),t为单片机定时中断间隔175us,temin为hcs301最小脉宽基本单元260us,temax为hcs301最大脉宽基本单元660us。

条件3:

记a[i]与b[i]差值的绝对值为abs(a[i]-b[i]),那么(temin/t)≤abs(a[i]-b[i])≤(temax/t),t为单片机定时中断间隔175us,temin为hcs301最小脉宽基本单元260us,temax为hcs301最大脉宽基本单元660us。

对于第i组遥控脉冲信号,a[i]和b[i]只有同时满足上述3个条件,才为有效值,否则判定第i组遥控信号无效,终止后续解码程序并丢弃已解码数据,重新启动新一轮的数据接收。

如果a[i]大于b[i],那么第i组遥控信号对应逻辑0。如果a[i]小于b[i],那么第i组遥控信号对应逻辑1。

按照上述方法进行遥控第1组至第65组遥控脉冲信号解码。只有当前65组遥控脉冲信号均有效时,解码软件才启动第66组遥控脉冲信号解码。任何一组遥控信号数据无效,则解码软件终止后续解码工作并丢弃已保存的遥控数据,根据步骤(2)重新启动新一轮有效数据头的判断。

第66组遥控信号解码方法为:

由于无线遥控信号逻辑0的高电平脉宽为2te,逻辑1的高电平脉宽为te,所以根据第66组脉冲信号高电平脉宽长度不同,可以判定第66组遥控信号对应是逻辑0或逻辑1。记第66组脉冲信号对应的高电平计数值为c,那么c的值应为脉宽是2te或te对应的定时中断计数值。

取第1组至第65组中的任意一组信号对应的高电平计数值a[i]和低电平计数值b[i],其中1≤i≤65。

根据逻辑0和逻辑1的信号特性,a[i]与b[i]和应为1个完整的位周期脉宽(3te)对应的定时中断计数值。如果2c>a[i]+b[i],则c值对应的高电平脉宽肯定大于1.5个te,判定第66组遥控数据对应逻辑0,反之第66组遥控数据对应为逻辑1。

第66组遥控信号解码方法的步骤如下:

(4.5.1)累计接收的第n组脉冲信号对应的连续高电平计数值c;

(4.5.2)是否接收到低电平,若是,进入步骤(4.5.3),否则,返回步骤(4.5.1):

(4.5.3)若2c>a[i]+b[i],则第n组数据为逻辑0,反之该数据为逻辑1,式中,i为1至n-1中的任意位。

从而完成66组有效数据的接收,存储该66位数据位。

至此,hcs301发出的一帧无线遥控脉冲信号对应的66位命令字解码完成。

本发明还提供了一种无线遥控解码装置,参照图4,该装置包括:遥控接收器和单片机;其中:遥控接收器的数据输出口连接单片机的gpio端口;单片机进一步包括:

内部中断器,用于产生普通定时中断事件;

电平检测装置,连接gpio端口和中断器,用于在每次定时中断时检测gpio端口的电平;

计数器,连接电平检测装置,用于分别累计检测到的高电平和低电平的次数;

数据头检测装置,连接计数器,根据已设定的连续高或低电平的次数m和计数器检测到的连续高/低电平的次数y,来判断接收到的无线遥控数据的数据头是否有效;若y=m,则数据头有效,触发遥控脉冲信号解码装置;若y<m,则数据头无效,从头进行数据头检测;

遥控脉冲信号解码装置,连接计数器和数据头检测装置,用于在数据头为有效时,对紧邻数据头之后的第i组进行解析,判断该组遥控脉冲信号是否有效;若无效,则判断该组遥控信号的解码数据无效,终止后续解码程序并丢弃已解码数据;若有效,则对该第i组脉冲信号进行解码,直到得到n位遥控命令。

其中,数据头检测装置设置为:若满足temin/t≤m≤temax/t,则数据头为有效的数据头,并触发遥控脉冲信号解码装置对数据头之后的脉冲信号进行解析。

其中,遥控脉冲信号解码装进一步包括:

第一条件判断装置:连接第二条件判断装置和第五条件判断装置,用于判断是否i<n,若是,则触发第二条件判断装置;若i=n,触发第五条件判断装置;

第二条件判断装置:连接第三条件判断装置和第四条件判断装置,用于在数据头为有效时,在单片机每产生一次定时中断时,检测gpio端口的电平,并分别累计a[i]和b[i]值;同时判断是否b[i]≠0,若是,如果同时gpio端口为高电平,则触发第四条件判断装置,否则,触发第三条件判断装置;

第三条件判断装置:连接第二条件判断装置和数据头检测装置,用于判断:是否a[i]+b[i])>((3temax)/t),若是,第i位遥控信号解码数据无效,终止后续解码程序并丢弃已解码数据,触发数据头检测装置;否则,触发第二条件判断装置;

第四条件判断装置:连接第三条件判断装置和数据头检测装置,用于判断是否同时满足:

(i)a[i]≠b[i],

(ii)(3temin)/t≤(a[i]+b[i]),

(iii)(temin/t)≤abs(a[i]-b[i])≤(temax/t);

其中,a[i]为高电平累计次数,b[i]为低电平累计次数;

如果同时满足上述三个条件,则触发逻辑0/1判断装置一,否则,判断第i位遥控信号解码数据无效,终止后续解码程序并丢弃已解码数据,触发数据头检测装置,进行新一轮的数据头检测;

逻辑0/1判断装置一:连接第四条件判断装置,用于判断:

是否满足:a[i]>b[i],若是,则第i组遥控信号对应逻辑0;否则,第i组遥控信号对应逻辑1;以及

第五条件判断装置,连接第一条件判断装置,进一步包括:

-电平接收及累计装置:用于接收第n组脉冲信号对应的高、低电平,累计连续的高电平计数值c;并检测是否接收到低电平,若是,触发逻辑0/1判断装置二;否则,继续累计连续的高电平计数值c,并检测是否接收到低电平;

--逻辑0/1判断装置二,连接电平接收及累计装置,用于判断是否2c>a[i]+b[i],若是,则第n组数据为逻辑0,反之该数据为逻辑1,式中,1≤i≤n-1;

其中,a[i]为第i组脉冲信号的高电平累计次数,b[i]为第i组脉冲信号的低电平累计次数。

上述实施例仅是针对单片机型号为hcs301所作的编码信号解析方法。需要说明的是,本发明可以根据单片机型号和参数的不同进行适应性的调整。

因此以上实例仅用以说明本发明的技术方案而非对其限制,尽管参照较佳实例对本发明进行了详细的说明,所属领域的普通技术人员应当理解,依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换,而不脱离本发明技术方案的精神,其均涵盖在本发明请求保护的技术方案范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1