一种基于uart的睡眠唤醒方法及装置的制作方法

文档序号:6354335阅读:383来源:国知局
专利名称:一种基于uart的睡眠唤醒方法及装置的制作方法
技术领域
本发明涉及无线通信领域,特别是指一种基于通用异步接收/发送装置(UART, Universal Asynchronous Receiver/Transmitter)的睡目民唤醒方法及装置。
背景技术
串口也叫串行通信接口,串口由于具有利用简便的通信信号线即可实现较强的 传输功能且传输速度范围广的优点,成为近年来应用最为广泛的通信接口。其中,由于具 有较多的类型,使得串口的传输速度范围广;串口的类型包括UART、串行外围接口(SPI, Serial Peripheral Interface)、及通用串行总线(USB,Universal Serial BUS)等。其 中,UART由于具有功耗低、通信控制简单、不需要驱动、在无数据传输时可关闭数据口等优 点,因此,在实际应用时,许多设备将UART作为通信的主要接口。目前,利用UART进行设备间的通信时,主要利用四线(tx、rx、cts、以及rts)与 两线(rx以及tx)的连接方式。其中,在四线连接方式中,采用cts和rts可以对数据流 进行控制,这种连接方式也可以称为流控的连接方式,采用流控的连接方式能在通信双方 传输速率不一致的情况下,保证不会丢失数据。在实际应用时,如果UART不作为调制解调 器(modem) 口使用时,则没有必要采用四线的连接方式,采用两线的连接方式完全可以满 足需求。这是因为目前的大多数应用中,只是将UART作为一个简单的通信口,比如仅仅 进行AT命令的简单交互,而不作为modem 口拨号使用;另外,随着设备比如应用处理器 (AP,Application Processor)的外围器件的增加,芯片的通用输入输出(GPI0, General Purpose Input Output)等资源会越来越紧张,由于作为流控使用的两线可以复用为GPI0, 如果采用两线的连接方式,则能够节省两个GPIO资源,如此,使AP更加灵活,并且控制更为 简便,从而不仅能提高效率,而且能减少资源的占用。目前,AP与其连接的设备间利用UART进行通信时,存在以下几种睡眠唤醒方法(I)UART 一直开着,只有当AP无任务执行且睡眠时,则UART睡眠,而当AP有任务 执行时,则再次唤醒UART,由于不管AP执行任务时需不需要UART,UART均处于唤醒状态, 如此,会增加AP的功耗,不利于AP的设计。(2)通过自定义的睡眠指示和唤醒信号实现UART的双向唤醒,由于自定义的睡眠 指示和唤醒信号需要占用AP的GPIO资源,如此,会增加AP的资源占用率。(3)把作为流控使用的两线复用成GPI0,利用流控的作用实现双向唤醒,该方法 只适用于四线连接的方式,并且该方法同样会增加AP的GPIO资源的占用率。

发明内容
有鉴于此,本发明的主要目的在于提供一种基于UART的睡眠唤醒方法及装置,能 降低设备的功耗,并能减少对GPIO资源的使用。为达到上述目的,本发明的技术方案是这样实现的本发明提供了一种基于UART的睡眠唤醒方法,该方法包括
4
当没有数据发送时,第一设备通过自身UART的tx信号线通知与所述第一设备进 行通信的第二设备;所述第二设备收到通知后且自身没有数据发送给所述第一设备时,通过自身UART 的tx信号线通知所述第一设备,并使自身的UART进入睡眠状态;所述第一设备收到通知后,使自身的UART进入睡眠状态;所述第一设备及所述第二设备定时检测自身rx信号线的输出状态,确定自身rx 信号线的输出状态为有数据接收时,唤醒自身的UART。上述方案中,所述第一设备通过自身UART的tx信号线通知与第一设备进行通信 的第二设备,为所述第一设备将自身的tx信号线设置为中断(break)模式。上述方案中,所述通过自身UART的tx信号线通知所述第一设备,为所述第二设备将自身的tx信号线设置为break模式。上述方案中,所述定时检测自身rx信号线的输出状态,确定自身rx信号线的输出 状态为有数据接收时,唤醒自身的UART,为设置定时检测自身rx信号线引脚状态的函数,并在定时检测函数的唤醒处理中 增加UART恢复函数,通过定时检测函数检测设备自身rx信号线的输出状态,并在确定设备 自身rx信号线的电平值为高时,通过UART恢复函数唤醒设备自身的UART。 上述方案中,所述定时检测自身rx信号线的输出状态,确定自身rx信号线的输出 状态为有数据接收时,唤醒自身的UART,为设置rx中断,并在中断处理中增加UART恢复函数,所述设备自身rx信号线的电 平值不为低时,触发所述rx中断,并通过UART恢复函数唤醒设备自身的UART。上述方案中,所述定时检测自身rx信号线的输出状态,确定自身rx信号线的输出 状态为有数据接收时,唤醒自身的UART,为设置GPIO中断,并在中断处理中增加UART恢复函数,所述设备检测到边沿或电平 值为高时,触发所述GPIO中断,并通过UART恢复函数唤醒设备自身的UART。上述方案中,所述确定自身rx信号线的输出状态为有数据接收时的时机为数据发送方发送事先约定的字符;或者,数据发送方发送脉冲信号,延时后再向数据接收方发送事先约定的字符。上述方案中,在唤醒自身的UART后,该方法进一步包括向数据发送方返回表示已唤醒的字符。本发明还提供了一种基于UART的睡眠唤醒装置,该装置包括第一设备及第二设 备;其中,第一设备,用于当没有数据发送时,通过自身UART的tx信号线通知第二设备;并 在收到第一设备的通知后,使自身的UART进入睡眠状态;之后定时检测自身rx信号线的输 出状态,确定自身rx信号线的输出状态为有数据接收时,唤醒自身的UART ;第二设备,用于收到第一设备发送的通知后,且自身没有数据发送给第一设备时, 通过自身UART的tx信号线通知所述第一设备,并使自身的UART进入睡眠状态;之后检测 自身rx信号线的输出状态,确定自身rx信号线的输出状态为有数据接收时,唤醒自身的 UART0
上述方案中,所述第一设备,还用于睡眠后当有数据发送给第二设备时,唤醒自身 的UART,之后通过自身的tx信号线发送事先约定的字符给第二设备,并接收第二设备返回 的表示已唤醒的字符;所述第二设备,还用于收到第一设备发送的字符后,通过自身的tx信号线向第一 设备返回表示已唤醒的字符;或者,所述第二设备,还用于睡眠后当有数据发送给第一设备时,唤醒自身的UART,之后 通过自身的tx信号线发送事先约定的字符给第一设备,并接收第一设备返回的表示已唤 醒的字符;所述第一设备,还用于收到第二设备发送的字符后,通过自身的tx信号线向第一 设备返回表示已唤醒的字符。本发明提供的基于UART的睡眠唤醒方法及装置,当没有数据发送时,第一设备通 过自身UART的tx信号线通知与所述第一设备进行通信的第二设备;所述第二设备收到通 知后且自身没有数据发送给所述第一设备时,通过自身UART的tx信号线通知所述第一设 备,并使自身的UART进入睡眠状态;所述第一设备收到通知后,使自身的UART进入睡眠状 态;所述第一设备及所述第二设备定时检测自身rx信号线的输出状态,确定自身rx信号线 的输出状态为有数据接收时,唤醒自身的UART,如此,能降低设备的功耗,并且还能减少对 设备GPIO资源的使用。


图1为本发明基于UART的睡眠唤醒的方法流程示意图;图2为本发明的基于UART通信的设备间的连接方式示意图;图3为本发明基于UART的睡眠唤醒的装置结构示意图。
具体实施例方式下面结合附图及具体实施例对本发明再作进一步详细的说明。本发明基于UART的睡眠唤醒方法,如图1所示,包括以下步骤步骤101 当没有数据发送时,第一设备通过自身UART的tx信号线通知与所述第 一设备进行通信的第二设备;这里,图2为本发明所述第一设备与所述第二设备进行通信的连接方式示意图, 从图2中可以看出,所述第一设备与所述第二设备通过两线的连接方式进行通信,即所述 第一设备的tx信号线为所述第二设备的rx信号线,所述第一设备的rx信号线为所述第二 设备的tx信号线,其中,tx信号线用于发送数据,rx信号线用于接收数据;另外,为了保证 传输信号的稳定性,还可以在所述第一设备与所述第二设备之间增加GND信号线,表示接 地;由于本发明采用两线的连接方式,没有GPIO可以辅助,因此,当所述第一设备没 有数据发送时,必须通过tx信号线通知给所述第二设备;依据RS232协议规定在数据发送过程中,为了使发送的数据块能间隔开,在发送 的过程中可以将tx信号线设置为break模式,即使tx信号线的电平值为零;因此,本步骤 的具体实现可以为
当没有数据发送时,所述第一设备将自身的tx信号线设置为break模式;其中,设 置为break模式的具体处理流程与现有技术的具体处理流程完全相同,这里不再赘述;设 置为break模式后,第一设备的tx信号线的电平值则为零,从而以此通知所述第二设备没 有数据发送了;所述第一设备与所述第二设备均可以是遵循RS232协议基于UART进行通信的任 意一个设备,所述第一设备具体可以是AP、或个人电脑(PC,Personal Computer)等,相应 的,所述第二设备可以是与AP、或PC等采用UART进行通信的设备。步骤102 所述第二设备收到通知后且自身没有数据发送给所述第一设备时,通 过自身UART的tx信号线通知所述第一设备,并使自身的UART进入睡眠状态;这里,所述第一设备的tx信号线设置为break模式后,所述第二设备就会检测到 所述第一设备的tx信号线的电平值一直持续为零,所述第二设备可以据此确定所述第一 设备无数据发送了 ;因此,本步骤的具体实现,可以为所述第二设备检测到所述第一设备的tx信号线的电平值为零的时长达到预定时 长后,则可以认为所述第一设备的UART具备进入睡眠状态的条件;其中,在实际应用时,所述第二设备在检测到所述第一设备的tx信号线的电平值 为零后,可以启动一个定时器,在定时器超时后,如果所述第一设备的tx信号线的电平值 在定时器的时长内持续为零,则认为所述第一设备的UART具备进入睡眠状态的条件;所述 定时器的时长可以根据需要进行设置,比如50ms、100ms等;所述通过自身UART的tx信号线通知所述第一设备,具体为所述第二设备将自身的tx信号线设置为break模式;其中,设置为break模式的 具体处理流程与现有技术的具体处理流程完全相同,这里不再赘述;如果所述第二设备收到通知且自身还有数据发送给第一设备时,则不向第一设备 发送任何信息;所述第二设备使自身的UART进入睡眠状态的具体处理过程与现有技术的处理过 程完全相同,这里不再赘述。步骤103 所述第一设备收到通知后,使自身的UART进入睡眠状态;相应的,所述第一设备检测到所述第二设备的tx信号线的电平值为零的时长达 到预定时长后,则可以认为所述第二设备的UART具备进入睡眠状态的条件;其中,在实际应用时,所述第一设备在检测到所述第二设备的tx信号线的电平值 为零后,可以启动一个定时器,在定时器超时后,如果所述第二设备的tx信号线的电平值 在定时器的时长内持续为零,则认为所述第二设备的UART具备进入睡眠状态的条件;所述 定时器的时长可以根据需要进行设置,比如50ms、100ms等;所述第一设备使自身的UART进入睡眠状态的具体处理过程与现有技术的处理过 程完全相同,这里不再赘述。步骤104 所述第一设备及所述第二设备定时检测自身rx信号线的输出状态,确 定自身rx信号线的输出状态为有数据接收时,唤醒自身的UART。这里,由于基于UART进行通信时,没有任何外部的硬件终端可以利用,因此,只能 通过软件的方式来检测并唤醒UART ;具体地,可以是设置定时检测自身rx信号线引脚状 态的函数,并在定时检测函数的唤醒处理中增加UART恢复函数,通过定时检测函数检测设备自身rx信号线的输出状态,并在确定设备自身rx信号线的电平值为高时,通过UART恢 复函数唤醒设备自身的UART ;其中,定时的时长可以依据需要进行设置,经试验进行测试, 定时的时长可以是50 500ms之间的任一值,比如100ms等;在实际应用时,与AP进行通信的设备一般会自带rx中断检测机制,因此,如果进 行通信的设备自带有rx中断时,本步骤的具体实现还可以为设置rx中断,并在中断处理中增加UART恢复函数,只要所述设备检测到自身rx 信号线的电平值不为低时,即电平值不为零时,则触发所述rx中断,从而唤醒设备自身的 UART ;在实际应用时,如果所述第一设备和/或所述第二设备自带有GPIO中断时,本步 骤的具体实现还可以为设置GPIO中断,并在中断处理中增加UART恢复函数,只要所述设备检测到边沿或 电平值为高时,则触发所述GPIO中断,从而唤醒设备自身的UART ;其中,如果数据发送方的tx信号线复用为GPI0,此时,发送方通过自身的tx信号 线即接收方的rx信号线发送的是脉冲信号,可以设置通过检测边沿或电平值来触发GPIO 中断,如果发送方的tx信号线不复用为GPI0,此时发送方发送的是字符,则设置通过检测 边沿来触发GPIO中断;检测到的边沿具体可以是上升沿或下降沿;在实际应用时,可以选 择检测上升沿和下降沿中的任意一种来触发GPIO中断;在实际应用过程中,所述第一设备及所述第二设备均可以选择上述三种检测及唤 醒方法中的任意一种;这里,所述第一设备及所述第二设备事先已经获知对方采用上述哪种方式检测并 唤醒UART ;所述第一设备及所述第二设备确定自身rx信号线的输出状态为有数据接收时 的时机为对方设备有数据发送,此时,对方设备先唤醒自身的UART,之后先发送双方事先 约定好的字符,从而使得数据接收方可以唤醒自身的UART,唤醒后再发送数据;具体地,如果接收方采用设置定时检测函数的方式、或设置rx中断的方式唤醒自 身的UART时,通信的双方,即所述第一设备及所述第二设备,事先约定好发送给对方的字 符及对方反馈的表示已唤醒的字符,当有数据发送时,发送方先向接收方发送事先约定的 字符,等收到对方返回的表示已唤醒的字符后,再发送数据;举个例子来说,对于AP和与其 通信的设备来说,当AP需要给通信的设备发送数据时,AP先给通信的设备发送一个AT,通 信的设备收到AT唤醒自身的UART后,向AP返回0K,AP收到OK后再向通信的设备发送数 据,如果AP在规定时间内没有收到通信的设备返回的OK时,可以再向通信的设备发送一个 AT,如此循环,直至收到通信的设备返回的OK为止;当通信的设备需要给AP发送数据时,通 信的设备先给AP发送一个0Κ,ΑΡ收到OK唤醒自身的UART后,向通信的设备发送返回AT, 通信的设备收到AT后再向AP发送数据,如果通信的设备在规定时间内没有收到AP返回的 AT时,可以再向AP发送一个0K,如此循环,直至收到AP返回的AT为止;其中,规定时间可 以依据需要进行设置,比如50ms ;如果接收方采用设置GPIO中断的方式唤醒自身的UART时,如果发送方的tx信号 线复用为GPI0,此时,发送方先发送一个脉冲,接收方收到脉冲后唤醒自身的UART,为了确 保接收方已经唤醒自身的UART,可以在一定间隔比如40ms后,向接收方发送事先约定的字 符,等收到对方返回的表示已唤醒的字符后,再发送数据;举个例子来说,对于AP和与其通
8信的设备,如果AP采用了设置GPIO中断的方式唤醒自身的UART,且与AP通信的设备的tx 信号线复用为GPIO时,当与AP通信的设备需要给AP发送数据时,通信的设备先给AP发送 一个脉冲,延时40ms后,再向AP发送一个0Κ,ΑΡ收到脉冲信号后唤醒自身的UART,并在收 到OK后,向通信的设备返回AT,通信的设备收到AT后再向AP发送数据,如果通信的设备在 规定时间内没有收到AP返回的AT时,可以再向AP发送一个0K,如此循环,直至收到AP返 回的AT为止;其中,规定时间可以依据需要进行设置,比如50ms ;如果发送方的tx信号线不复用为GPI0,此时,由于接收方检测不到电平值,所以, 接收方触发GPIO中断的条件是边沿检测,即检测到上升沿或下降沿,在实际应用时,可 以设置检测到上升沿或检测到下降沿触发GPIO中断,在发送数据前,接收方发送事先约定 的字符,等收到对方返回的表示已唤醒的字符后,再发送数据;举个例子来说,对于AP和与 其通信的设备,如果AP采用了设置GPIO中断的方式唤醒自身的UART,且与AP通信的设备 的tx信号线不复用为GPIO时,当与AP通信的设备需要给AP发送数据时,先向AP发送一 个0K,AP收到OK后唤醒自身的UART,并向通信的设备返回AT,通信的设备收到AT后再向 AP发送数据,如果通信的设备在规定时间内没有收到AP返回的AT时,可以再向AP发送一 个0K,如此循环,直至收到AP返回的AT为止;其中,规定时间可以依据需要进行设置,比 如50ms ;这里需要说明的是由于本发明设备间基于UART进行通信的连接方式为两线的 连接方式,因此,发送方发送的任何字符、脉冲信号、以及数据等均通过自身的tx信号线发 送给接收方,相应的,接收方向发送方返回的任何字符、脉冲信号、以及数据等也均通过自 身的tx信号线返回给发送方。为实现上述方法,本发明还提供了一种基于UART的睡眠唤醒装置,如图3所示,该 装置包括第一设备31及第二设备32 ;其中,第一设备31及第二设备32均包括UART模块;第一设备31,用于当没有数据发送时,通过自身UART的tx信号线通知第二设备 32 ;并在收到第一设备32的通知后,使自身的UART进入睡眠状态;之后定时检测自身rx信 号线的输出状态,确定自身rx信号线的输出状态为有数据接收时,唤醒自身的UART。第二设备32,用于收到第一设备31发送的通知后,且自身没有数据发送给第一设 备31时,通过自身UART的tx信号线通知所述第一设备31,并使自身的UART进入睡眠状 态;之后检测自身rx信号线的输出状态,确定自身rx信号线的输出状态为有数据接收时, 唤醒自身的UART。这里,需要说明的是第一设备31与第二设备32采用连线的连接方式进行通信。其中,所述第一设备31,还用于睡眠后当有数据发送给第二设备32时,唤醒自身 的UART,之后通过自身的tx信号线发送事先约定的字符给第二设备32,并接收第二设备返 回的表示已唤醒的字符;所述第二设备32,还用于收到第一设备31发送的字符后,通过自身的tx信号线向 第一设备31返回表示已唤醒的字符;或者,所述第二设备32,还用于睡眠后当有数据发送给第一设备31时,唤醒自身的 UART,之后通过自身的tx信号线发送事先约定的字符给第一设备31,并接收第一设备返回 的表示已唤醒的字符;
所述第一设备31,还用于收到第二设备32发送的字符后,通过自身的tx信号线向 第一设备32返回表示已唤醒的字符。这里,本发明的所述装置中的第一设备及第二设备的具体处理过程已在上文中详 述,不再赘述。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在 本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护 范围之内。
权利要求
1.一种基于通用异步接收/发送装置(UART)的睡眠唤醒方法,其特征在于,该方法包括当没有数据发送时,第一设备通过自身UART的tx信号线通知与所述第一设备进行通 信的第二设备;所述第二设备收到通知后且自身没有数据发送给所述第一设备时,通过自身UART的 tx信号线通知所述第一设备,并使自身的UART进入睡眠状态; 所述第一设备收到通知后,使自身的UART进入睡眠状态;所述第一设备及所述第二设备定时检测自身rx信号线的输出状态,确定自身rx信号 线的输出状态为有数据接收时,唤醒自身的UART。
2.根据权利要求1所述的方法,其特征在于,所述第一设备通过自身UART的tx信号线 通知与第一设备进行通信的第二设备,为所述第一设备将自身的tx信号线设置为中断(break)模式。
3.根据权利要求2所述的方法,其特征在于,所述通过自身UART的tx信号线通知所述 第一设备,为所述第二设备将自身的tx信号线设置为break模式。
4.根据权利要求1、2或3所述的方法,其特征在于,所述定时检测自身rx信号线的输 出状态,确定自身rx信号线的输出状态为有数据接收时,唤醒自身的UART,为设置定时检测自身rx信号线引脚状态的函数,并在定时检测函数的唤醒处理中增加 UART恢复函数,通过定时检测函数检测设备自身rx信号线的输出状态,并在确定设备自身 rx信号线的电平值为高时,通过UART恢复函数唤醒设备自身的UART。
5.根据权利要求1、2或3所述的方法,其特征在于,所述定时检测自身rx信号线的输 出状态,确定自身rx信号线的输出状态为有数据接收时,唤醒自身的UART,为设置rx中断,并在中断处理中增加UART恢复函数,所述设备自身rx信号线的电平值 不为低时,触发所述rx中断,并通过UART恢复函数唤醒设备自身的UART。
6.根据权利要求1、2或3所述的方法,其特征在于,所述定时检测自身rx信号线的输 出状态,确定自身rx信号线的输出状态为有数据接收时,唤醒自身的UART,为设置通用输入输出(GPIO)中断,并在中断处理中增加UART恢复函数,所述设备检测到 边沿或电平值为高时,触发所述GPIO中断,并通过UART恢复函数唤醒设备自身的UART。
7.根据权利要求1、2或3所述的方法,其特征在于,所述确定自身rx信号线的输出状 态为有数据接收时的时机为数据发送方发送事先约定的字符;或者,数据发送方发送脉冲信号,延时后再向数据接收方发送事先约定的字符。
8.根据权利要求7所述的方法,其特征在于,在唤醒自身的UART后,该方法进一步包括向数据发送方返回表示已唤醒的字符。
9.一种基于UART的睡眠唤醒装置,其特征在于,该装置包括第一设备及第二设备;其中,第一设备,用于当没有数据发送时,通过自身UART的tx信号线通知第二设备;并在收 到第一设备的通知后,使自身的UART进入睡眠状态;之后定时检测自身rx信号线的输出状态,确定自身rx信号线的输出状态为有数据接收时,唤醒自身的UART ;第二设备,用于收到第一设备发送的通知后,且自身没有数据发送给第一设备时,通过 自身UART的tx信号线通知所述第一设备,并使自身的UART进入睡眠状态;之后检测自身 rx信号线的输出状态,确定自身rx信号线的输出状态为有数据接收时,唤醒自身的UART。
10.根据权利要求9所述的装置,其特征在于,所述第一设备,还用于睡眠后当有数据发送给第二设备时,唤醒自身的UART,之后通过 自身的tx信号线发送事先约定的字符给第二设备,并接收第二设备返回的表示已唤醒的 字符;所述第二设备,还用于收到第一设备发送的字符后,通过自身的tx信号线向第一设备 返回表示已唤醒的字符;或者,所述第二设备,还用于睡眠后当有数据发送给第一设备时,唤醒自身的UART,之后通过 自身的tx信号线发送事先约定的字符给第一设备,并接收第一设备返回的表示已唤醒的 字符;所述第一设备,还用于收到第二设备发送的字符后,通过自身的tx信号线向第一设备 返回表示已唤醒的字符。
全文摘要
本发明公开了一种基于通用异步接收/发送装置(UART)的睡眠唤醒方法,该方法包括当没有数据发送时,第一设备通过自身UART的tx信号线通知与第一设备进行通信的第二设备;第二设备收到通知后且自身没有数据发送给第一设备时,通过自身UART的tx信号线通知第一设备,并使自身的UART进入睡眠状态;第一设备收到通知后,使自身的UART进入睡眠状态;第一设备及第二设备定时检测自身rx信号线的输出状态,确定自身rx信号线的输出状态为有数据接收时,唤醒自身的UART。本发明同时公开了一种基于UART的睡眠唤醒装置,采用本发明的方法及装置,能降低设备的功耗,并且还能减少对设备GPIO资源的使用。
文档编号G06F13/38GK102096649SQ20111003587
公开日2011年6月15日 申请日期2011年2月10日 优先权日2011年2月10日
发明者周兴伟 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1