一种多功能按键通信方法
技术领域
本发明涉及一种通信方法,更具体地说,尤其涉及一种多功能按键通信方法。
背景技术
现有的按键信号接收端在不使用时,若接收端一直处于唤醒状态,等待接收信号,这种方式能够及时接收到完整的信号,但是存在耗电量大,待机时间短等问题。传统的按键信号接收端一般采用间隔唤醒接收信号的方式,采用ASK/OOK方式对数据进行调制和解调的,即是移幅键控方式,利用有无载波信号表达数据“1”和“0”,当有有效载波信号时,接收芯片输出高电平,代表数据“1”;当无有效载波信号或者无载波信号时,接收芯片输出低电平,代表数据“0”;因此在数据为“0”时容易造成混淆;另外接收芯片多采用超外差方式接收,在外界干扰接近该有效频率和幅值超过阀值时,芯片也会输出一个高电平,因此在协议和解码上要灵活处理。
现有发送信号方式一般是采用4位或8位数据重复组合起来达到一定长度并超过休眠时间段,达到接收信号的目的。但因为唤醒的那个时刻和信号发送端发射数据的时刻不是同步的,要接收到完整的数据就必须要整个数据或者数据首位刚好出现在唤醒那个时间才能获得完整的按键信息,这就存在一个命中概率的问题即唤醒效率。如当第一次按按键时,唤醒的时刻是是不确定的,而第二按按键也是随机的,因此按此传统方式无法实开、关、调光功能;而唤醒效率与待机功耗也是存在矛盾的,想提高唤醒效率那么待机功耗就很难降低,或者想把待机功耗做低那么唤醒效率就无法提高。
发明内容
本发明的目的在于针对上述现有技术的不足,提供一种使用方便、效果良好的多功能按键通信方法。
本发明的技术方案是这样实现的:一种多功能按键通信方法,包括下述步骤:
(1)单片机和接收芯片处于休眠时间段,等待被唤醒;
(2)休眠时间结束,单片机和接收芯片被外部中断唤醒,接收芯片接收信号并发送至单片机,单片机检测接收信号是否有引导码;
(3)单片机检测到接收信号有引导码,检测引导码脉冲个数;若单片机检测到接收信号无引导码,单片机和接收芯片进入休眠,返回步骤(1);
(4)单片机检测接收信号中引导码的脉冲个数大于或等于三个,单片机接收判断接收信号是否有同步码;若单片机检测接收信号中引导码的脉冲个数小于三个,单片机和接收芯片进入休眠,返回步骤(1);
(5)单片机接收判断信号有同步码,单片机接收数据指令码,并判断数据位脉宽长度是否符合要求;单片机接收判断信号无同步码,单片机和接收芯片进入休眠,返回步骤(1);
(6)数据位脉宽长度符合要求,单片机判断是否接收完数据;数据位脉宽长度不符合要求,单片机和接收芯片进入休眠,返回步骤(1);
(7)单片机接收数据成功,根据数据指令码执行相应的功能,完成后单片机和接收芯片进入休眠,返回步骤(1);单片机接收数据失败,单片机和接收芯片进入休眠,返回步骤(1)。
上述的一种多功能按键通信方法中,步骤(2)中:休眠时间结束,单片机和接收芯片被外部中断唤醒,接收芯片接收信号并发送至单片机,单片机检测接收信号是否有引导码,所述引导码的长度大于休眠时间段长度,所述引导码由多个相同的脉冲组成;唤醒时间为15-20ms,休眠时间为250-300ms。
上述的一种多功能按键通信方法中,步骤(3)中:单片机检测到接收信号有引导码,检测引导码脉冲个数,所述引导码各脉冲宽度均为1-1.5ms;若单片机检测到接收信号无引导码,单片机和接收芯片进入休眠,返回步骤(1)。
上述的一种多功能按键通信方法中,步骤(4)中:单片机检测接收信号中引导码的脉冲个数大于或等于三个,单片机接收判断接收信号是否有同步码,所述同步码两端分别与引导码、数据指令码连接,所述同步码为单个宽度为2.5-3.5ms的脉冲;若单片机检测接收信号中引导码的脉冲个数小于三个,单片机和接收芯片进入休眠,返回步骤(1)。
上述的一种多功能按键通信方法中,步骤(5)中:单片机接收判断信号有同步码,单片机接收数据指令码,并判断数据位脉宽长度是否符合要求,所述数据指令码位数为32位,高16位数据为地址信息代码,低16位为按键信息代码;所述按键信息代码中高8位为按键数据状态代码,低8位为高8位代码的补码;所述按键数据状态代码中高4位由高位至低位分别为短按记录位、长按记录位、第一零数据位、第二零数据位,所述按键数据状态代码中低4位分别对应代表4个按键的按键状态;所述数据指令码中数据“1”为单个宽度为2.4ms的脉冲,数据“0”为单个宽度为1.2ms的脉冲;单片机接收判断信号无同步码,单片机和接收芯片进入休眠,返回步骤(1)。
上述的一种多功能按键通信方法中,步骤(6)中:数据位脉宽长度符合要求,单片机判断是否接收完数据;当外部按键持续按下时,外部发送信号端在数据指令码末端间隔发送重复码,所述重复码为单个宽度为3.2-4ms的脉冲;当外部按键松开时,外部发送信号端停止发送重复码,单片机通过接收信号中是否有重复码判断是否接收完数据;数据位脉宽长度不符合要求,单片机和接收芯片进入休眠,返回步骤(1)。
本发明采用上述方法后,通过将引导码作为判断信号,将原来需要重复发送数据的方式转化成引导码的方式,将唤醒效率提高至100%,为区分引导码、数据指令码两部分,增加同步码作为识别,接收端检测到同步码,则接收后面的为数据指令码,方便对数据指令码的识别;短按记录位记录每次按键短按一次,则短按记录位取反一次,通过对短按记录位数据信息变化判断是否有按键发生短按;长按记录位记录每次按键长按的信息,按键长按时,长按记录位置“1”,反之置“0”;按键按住不放时,以固定的间隔时间发送重复码直至按键释放,接收端通过对接收信号中重复码的情况进行判断后,确定按键是否发生长按。遥控器按键做多功能设计不仅减少了按键数量,减少了烦琐的按键组合操作,并最大化提高按键的使用效率,大大增加了用户体验。本发明的通信方法能够保证无数据丢包并实现按键多个功能操作的同时,又将电池的待机时间提高到20天左右,解决了按键功能、待机功耗和唤醒效率这三个问题。
具体实施方式
本发明的一种多功能按键通信方法,包括下述步骤:
(1)单片机和接收芯片处于休眠时间段,等待被唤醒;
(2)休眠时间结束,单片机和接收芯片被外部中断唤醒,接收芯片接收信号并发送至单片机,单片机检测接收信号是否有引导码;
(3)单片机检测到接收信号有引导码,检测引导码脉冲个数;若单片机检测到接收信号无引导码,单片机和接收芯片进入休眠,返回步骤(1);
(4)单片机检测接收信号中引导码的脉冲个数大于或等于三个,单片机接收判断接收信号是否有同步码;若单片机检测接收信号中引导码的脉冲个数小于三个,单片机和接收芯片进入休眠,返回步骤(1);
(5)单片机接收判断信号有同步码,单片机接收数据指令码,并判断数据位脉宽长度是否符合要求;单片机接收判断信号无同步码,单片机和接收芯片进入休眠,返回步骤(1);
(6)数据位脉宽长度符合要求,单片机判断是否接收完数据;数据位脉宽长度不符合要求,单片机和接收芯片进入休眠,返回步骤(1);
(7)单片机接收数据成功,根据数据指令码执行相应的功能,完成后单片机和接收芯片进入休眠,返回步骤(1);单片机接收数据失败,单片机和接收芯片进入休眠,返回步骤(1)。
优选的,步骤(1)中:处于休眠时间内,单片机以及接收芯片不工作,停机电流约几个UA以下,减低待机功耗,延长待机时间,减少电池的消耗,对环境起到保护作用。
优选的,步骤(2)中:休眠时间结束,单片机和接收芯片被外部中断唤醒,接收端外部的时钟电路在间隔一端时间(休眠时间)后发出信号唤醒单片机和接收芯片,接收芯片被唤醒后接收信号并发送至单片机,单片机检测接收信号是否有引导码,引导码用于检测判断是否有按键信号,所述引导码的长度大于休眠时间段长度,由于休眠唤醒的时间间隔是固定的,所以只要引导码的长度大于其中一个休眠的时间段就可以在任意唤醒时刻都能捕捉,不需要像一般的通信协议那样,一直处于接收状态,直到整个数据或者数据首位刚好出现在唤醒那个时刻才能获得完整的数据包。所述引导码由多个相同的脉冲组成。唤醒时间为15-20ms,休眠时间为250-300ms,休眠时长,由于引导码的长度要大于休眠时间,因此休眠时间长短既影响到整个数据包的长度,又影响到待机功耗的高低;而整个数据包的长度又会对使用体验产生影响,如按按键开灯,或者再按关灯,每按按键要等整个数据包发送完才能发送下一个数据包,如果在这开关灯过程的时间较长,会让人感觉控制不灵敏,有延迟。唤醒时长的确定,采用倒推的方法,即在休眠时长的基础上,通过调整休眠时间,唤醒时间和引导码的长度,使发射和接收到的数据包的数量达到一致即可。经过大量测试,优选采用唤醒时间为16ms,休眠时间为290ms时无数据丢包。
优选的,步骤(3)中:单片机检测到接收信号有引导码,检测引导码脉冲个数,通过在唤醒时间段内检测引导码脉冲个数,从而判断是否接收到有效的引导码,所述引导码各脉冲宽度均为1-1.5ms,在应用中,通过大量的测试,选用宽为1.2ms的脉冲作为标准;若单片机检测到接收信号无引导码,单片机和接收芯片进入休眠,返回步骤(1)。
优选的,步骤(4)中:单片机检测接收信号中引导码的脉冲个数大于或等于三个,单片机接收判断接收信号是否有同步码,所述同步码两端分别与引导码、数据指令码连接,同步码主要用来区分开引导码和后面的数据指令码,起到同步解码的目的。所述同步码为单个宽度为2.5-3.5ms的脉冲,通过大量的测试,选用宽为3ms的脉冲作为识别区分,告知解码芯片同步码后面出现的脉冲为数据和指令。若单片机检测接收信号中引导码的脉冲个数小于三个,单片机和接收芯片进入休眠,返回步骤(1)。
优选的,步骤(5)中:单片机接收判断信号有同步码,单片机接收数据指令码,并判断数据位脉宽长度是否符合要求,所述数据指令码位数为32位,高16位数据为地址信息代码,用于区分不同的控制器,总共可有65536种组合。低16位为按键信息代码;所述按键信息代码中高8位为按键数据状态代码,低8位为高8位代码的补码,用于对高8位代码进行校验;所述按键数据状态代码中高4位由高位至低位分别为短按记录位、长按记录位、第一零数据位、第二零数据位,所述按键数据状态代码中低4位分别对应代表4个按键的按键状态,按键数据状态代码中低4位每个位数据置“1”表示对应的按键按下,数据置“0”表示对应的按键释放;当按键每短按一次时,短按记录位即取反一次,如此循环实现每短按一次记录一次状态。当按键按下不放时,长按记录位数据置“1”,按键释放时,长按记录位数据置“0”。所述数据指令码中数据“1”为单个宽度为2.4ms的脉冲,数据“0”为单个宽度为1.2ms的脉冲;例如:按键信息代码中高8位数据为“10000001”则该代码表示高8位数据中最低位数据代表的按键被按下一次。按键信息代码中高8位数据为“11000001”则该代码表示高8位数据中最低位数据代表的按键被长按。单片机接收判断信号无同步码,单片机和接收芯片进入休眠,返回步骤(1)。
优选的,步骤(6)中:数据位脉宽长度符合要求,单片机判断是否接收完数据;当外部按键持续按下时,外部发送信号端在数据指令码末端间隔发送重复码,为了使重复码与数据指令码之间能够清楚地识别,在数据指令码末端与重复码之间连接有一段低电平,所述重复码为单个宽度为3.2-4ms的脉冲,通过大量测试,重复码优选采用3.6ms宽度的脉冲,在实际中,重复码一般以一个高电平作为一个重复码的结束标志。当外部按键松开时,外部发送信号端停止发送重复码,单片机通过接收信号中是否有重复码判断是否接收完数据;数据位脉宽长度不符合要求,单片机和接收芯片进入休眠,返回步骤(1)。
优选的,步骤(7)中:单片机接收数据成功,根据数据指令码执行相应的功能,单片机根据接收到的数据指令码实现对应代码的功能,完成后单片机和接收芯片进入休眠,返回步骤(1);单片机接收数据失败,单片机和接收芯片进入休眠,返回步骤(1)。
相比与一直处于接收状态的工作方式,采用唤醒模式能够节约大量的电量,提高接收端的待机时间,测量一直工作在唤醒状态时接收端的电流为:15.30MA,如果按此电流值一直工作,用2000MAH的锂电池,待机时间为:根据电池厂家提供的和实际电池做放电测试数据,在3.4V时,可以使用到电池容量的95%,为保护电池要保留5%的电池容量,因此实际可用的电池容量为(2000*95%)MAH=1900MAH,不使用唤醒休眠工作模式,1900MAH/15.33MA≈124H,124H/24H≈5,通过计算待机的时间只有五天。而使用休眠唤醒工作方式之后,因为只是在唤醒状态电流才达到15.30MA,因此待机电流:15.30MA*(16/(290+16))^(1/2)≈3.48MA,待机时间:1900MAH/3.48MA≈546H,546/24H≈22,计算得待机时间达22天,是之前待机时间的22/5≈4倍。但实际电池的差异,待机时间会与计算值存在差异,因此要进行实际待机时间的测试,通过多次实验测试,测得2000MAH的锂电池能够待机总时间为20天,接近其计算值。
工作时,为解决按键功能、待机功耗和唤醒效率这三个问题,引入引导码和同步码,将引导码作为唤醒信号,由原来需要重复发送数据的方式转化成引导码的方式;并用同步码作为引导码和后面数据指令码的识别,接收端被唤醒后如检测到同步码,则接收信号后面的代码为数据和指令。如果按键按住不放即长按时,在此基础上每隔一个时间,输出一个重复码,直到按键被释放。
以上所举实施例为本发明的较佳实施方式,仅用来方便说明本发明,并非对本发明作任何形式上的限制,任何所属技术领域中具有通常知识者,若在不脱离本发明所提技术特征的范围内,利用本发明所揭示技术内容所作出局部更动或修饰的等效实施例,并且未脱离本发明的技术特征内容,均仍属于本发明技术特征的范围内。