总线通信的UART侧处理方法与通信装置与流程

文档序号:20768291发布日期:2020-05-15 19:17阅读:239来源:国知局
总线通信的UART侧处理方法与通信装置与流程

本发明涉及通信领域,尤其涉及一种总线通信的uart侧处理方法与通信装置。



背景技术:

现今,人类社会正迈向物联网时代。物联网是互联网基础上延伸和拓展的网络,是将各种信息传感设备与互联网结合起来形成的一个互联网络,可以实现任何时间、任何地点,人、机、物的互联互通。物联网离不开嵌入式系统,嵌入式系统是物联网的重要组成部分。在嵌入式系统中,1-wire总线是用于集成电路与其他外围设备交互连接的一种总线。

然而,1-wire总线并非通用mcu都会配备的常用接口,进而,若需配合1-wire总线的使用,就需另外增加1-wire总线接口,其会增加器件成本开销。



技术实现要素:

本发明提供一种总线通信的uart侧处理方法与通信装置,以解决器件成本增加的问题。

根据本发明的第一方面,提供了一种总线通信的uart侧处理方法,应用于与1-wire端通信的uart端,其中,所述uart端具有rx管脚与tx管脚,所述rx管脚与所述tx管脚短接后通过单根线对接于所述1-wire端的连接端;所述uart侧处理方法,包括:

接收数据时,根据当前所接收到一个字节中0和/或1的数量,确定该字节表征的信号为数据0还是数据1;

发送数据时,若需发送数据1,则拉高所述连接端的电平;若需发送数据0,则拉低所述连接端的电平。

可选的,根据当前所接收到一个字节中0和/或1的数量,确定该字节表征的信号为数据0还是数据1,包括:

若所接收到字节中1的数量大于4个,则确定该字节表征的数据为数据1;

若所接收到字节中1的数量不大于4个,则确定该字节表征的数据为数据0。

可选的,所述rx管脚与所述tx管脚通过一上拉电阻连接至电源;

发送数据之前,还包括:

接收所述1-wire端的读数据指令,触发所述rx管脚进入gpio中断,产生中断标志;

对应的:

拉高所述连接端的电平,包括:清除所述中断标志,退出gpio中断,以使得所述上拉电阻将所述连接端的电平拉高;

拉低所述连接端的电平,包括:发出能够拉低所述连接端电平的第一预设命令,并清除所述中断标志,退出gpio中断。

可选的,所述第一预设命令为0xc0。

可选的,所述的uart侧处理方法,还包括:

在所述uart端响应于所述1-wire端发送的复位脉冲,产生中断错误breakerror标志之后,清除所述breakerror中断标志,再延迟预设时间,向所述1-wire端返回能够拉低所述连接端电平的第二预设命令,以使得:所述1-wire端根据所述连接端电平的拉低确定所述uart端产生了应答,并在确定产生应答后实施数据的收发。

可选的,所述第二预设命令为0x00。

根据本发明的第二方面,提供了一种通信装置,包括1-wire端与uart端;所述uart端具有rx管脚与tx管脚,所述rx管脚与所述tx管脚短接后通过单根线对接于所述1-wire端的连接端;所述uart端用于:

接收数据时,根据当前所接收到一个字节中0和/或1的数量,确定该字节表征的信号为数据0还是数据1;

发送数据时,若需发送数据1,则拉高所述连接端的电平;若需发送数据0,则拉低所述连接端的电平。

可选的,所述uart端具体用于:

若所接收到字节中1的数量大于4个,则确定该字节表征的数据为数据1;

若所接收到字节中1的数量不大于4个,则确定该字节表征的数据为数据0。

可选的,所述rx管脚与所述tx管脚通过一上拉电阻连接至电源;

所述uart端具体用于:

发送数据之前,接收所述1-wire端的读数据指令,触发所述rx管脚进入gpio中断,产生中断标志;

发送数据时,若需发送数据1,则清除所述中断标志,退出gpio中断,以使得所述上拉电阻将所述连接端的电平拉高;

发送数据时,若需发送数据0,则发出能够拉低所述连接端电平的第一预设命令,并清除所述中断标志,退出gpio中断。

可选的,所述uart端还用于:

在产生中断错误breakerror标志之后,清除所述breakerror中断标志,再延迟预设时间,向所述1-wire端返回能够拉低所述连接端电平的第二预设命令,以使得:所述1-wire端根据所述连接端电平的拉低确定所述uart端产生了应答,并在确定产生应答后实施数据的收发,所述breakerror标志是所述uart端响应于所述1-wire端发送的复位脉冲产生的。

本发明提供的总线通信的uart侧处理方法与通信装置中,可在uart端模拟1-wire总线的时序,从而实现uart端与1-wire端间数据的发送与接收,进一步方案中,还可实现1-wire端复位脉冲的应答。进而,在使用了本发明的方案后,可无需配置相应的1-wire总线接口,避免了成本的增加,且在未配置1-wire总线接口的情况下,依旧实现基于1-wire协议的总线通信。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例中1-wire端与uart端间的连接示意图;

图2是本发明一实施例中总线通信的uart侧处理方法的流程示意图;

图3是本发明一实施例中接收数据的流程示意图;

图4是本发明一实施例中发送数据的流程示意图;

图5是本发明一实施例中实施应答的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图1是本发明一实施例中1-wire端与uart端间的连接示意图。

本实施例中,所述uart端2具有rx管脚与tx管脚,所述rx管脚与所述tx管脚短接后通过单根线对接于所述1-wire端1的连接端;进一步可选方案中,如图1所示,连接端、rx管脚与tx管脚还可经上拉电阻r上拉至电源vcc。

进而,通过以上实施方式可实现硬件电路上的改进。

其中,该上拉电阻r可以采用4.7kω的电阻,该vcc可以采用3.3v。

进一步的,可对uart端进行进一步的配置,例如,可将uart端配置为:600k波特率,8bit数据宽度,1bit停止位,最低位先输出(lsb),tx管脚和rx管脚设置成open-drain模式。

其中的1-wire端可理解为总线通信中的主器件,其中的uart端可理解为总线通信中的从器件。即:

其中主器件就是可以产生复位脉冲,写0,写1和读数据信号的1-wire端。从器件是使用串口uart模拟1-wire总线的uart端。在1-wire总线协议中,主器件可产生复位脉冲后,从器件需要产生应答。主器件可发起写0,写1信号,从器件需要能够识别主器件发送的信号。当主器件发起读数据信号后,从器件需要回发数据给主器件。

其中的uart,具体为universalasynchronousreceiver/transmitter,其可理解为通用异步收发传输器。

图2是本发明一实施例中总线通信的uart侧处理方法的流程示意图。

请参考图2,所述uart侧处理方法,包括:

s11:接收数据时,根据当前所接收到一个字节中0和/或1的数量,确定该字节表征的信号为数据0还是数据1;

s12:发送数据时,若需发送数据1,则拉高所述连接端的电平;若需发送数据0,则拉低所述连接端的电平。

以上s11与s12的步骤仅表示数据接收与数据发送的不同步骤,即:两者并非同时实施的,故而,其并不表示两者具有确定的先后关系,不论是步骤s11先实施还是步骤s12先实施,又或是交替实施,只要具备了以上两个步骤,就不脱离本实施例的描述。

以上实施方式中,通过软硬件的配置,可在uart端模拟1-wire总线的时序,从而实现uart端与1-wire端间数据的发送与接收,进一步方案中,还可实现1-wire端复位脉冲的应答。进而,在使用了本实施例的方案后,可无需配置相应的1-wire总线接口,避免了成本的增加,且在未配置1-wire总线接口的情况下,依旧实现基于1-wire协议的总线通信。

图3是本发明一实施例中接收数据的流程示意图。

请参考图3,其中一种实施方式中,步骤s11,可以包括:

s111:接收一个字节;

s112:所接收到字节中1的数量是否大于4个;

若步骤s112的判断结果为是,则可实施步骤s113:确定该字节表征的数据为数据1;

若步骤s112的判断结果为否,则可实施步骤s114:确定该字节表征的数据为数据0。

以上过程可理解为是针对于当前接收到的一个字节而实施的,进而,在未接收完数据时,可通过重复以上过程陆续接收各字节。

针对于此,需指出:uart端可使用rx管脚接收数据,其中,根据1-wire总线协议,1-wire端发送的0信号和1信号的区别是:低电平的持续时间的长短不一样,具体的,0信号的低电平持续时间长,为8us-16us,1信号的低电平持续时间短,为1us-2us。故而,在以上实施方式中,当uart端接收到数据后,可以根据每个字节(byte)里1的个数来确定接收到的是0信号还是1信号。

图4是本发明一实施例中接收数据的流程示意图。

请参考图4,其中一种实施方式中,步骤s12之前,还可包括:

s13:接收所述1-wire端的读数据指令,触发所述rx管脚进入gpio中断,产生中断标志。

在步骤s12中,可以包括:

s121:所需发送的数据是否为1;

若步骤s121的判断结果为是,则可实施步骤s122:清除所述中断标志,退出gpio中断,以使得所述上拉电阻将所述连接端的电平拉高;

若步骤s121的判断结果为否,即所需发送的数据为0,则可实施步骤s123:发出能够拉低所述连接端电平的第一预设命令,并清除所述中断标志,退出gpio中断。

其中的第一预设命令,可理解为任意能够被预先配置,且能在处于gpio输入模式时将1-wire端电平拉低的命令,其可根据uart端的相关定义而确定,进而,其可以是uart端本身即可实现的功能之一。

具体实施过程中,第一预设命令可以为0xc0。

在具体举例中,可使用tx管脚发送数据;进而,根据1-wire总线协议,作为从器件的uart端会在作为主器件的1-wire端读数据的时候进行数据发送。作为主器件的1-wire端读数据是通过发送略大于1us的低电平以后进行采样,作为从器件的uart端需要在这个采样时间内进行数据的发送。

其中,为了识别读数据信号,可将uart端的rx管脚配置成gpio输入模式,其可在下降沿触发gpio中断。当作为主器件的1-wire端发送读数据指令以后,作为从器件的uart端会识别到下降沿信号而进入gpio中断,进而,在gpio的中断服务程序中,可进行数据的发送。

进而,如果作为从器件的uart端需发送数据1,在中断服务程序中,只需要清除中断标志,退出中断即可,依靠4.7k的上拉电阻将1-wire端的电平拉高;如果作为从器件的uart端需发送数据0,在中断服务程序中只需要使用uart端发送数据第一预设命令(即0xc0),将1-wire端电平拉低,清除中断标志,退出中断。当作为从器件的uart端所有的数据发送完成后,需要重新将rx管脚配置成串口接收功能。

图5是本发明一实施例中实施应答的流程示意图。

请参考图5,在收发数据之前,还可包括:

s14:是否产生中断错误breakerror标志。

其中,所述breakerror标志是所述uart端响应于所述1-wire端发送的复位脉冲产生的。

若步骤s14的判断结果为是,则可实施后续步骤:

s15:清除所述breakerror中断标志,再延迟预设时间;

s16:向所述1-wire端返回能够拉低所述连接端电平的第二预设命令,以使得:所述1-wire端根据所述连接端电平的拉低确定所述uart端产生了应答,并在确定产生应答后实施数据的收发。

其中的第二预设命令,可理解为任意能够被预先配置,且能1-wire端电平拉低的命令,其可根据uart端的相关定义而确定,进而,其可以是uart端本身即可实现的功能之一。

具体实施过程中,第二预设命令可以为0x00。

可见,以上实施方式可采用uart端的breakerror功能来检测复位脉冲。uart端的breakerror功能是指:当uart端接收到的数据为低电平超过1个byte的时间,就会有breakerror产生。具体的,当uart端的波特率为600k时,uart端接收到了16.67us的低电平(1bit起始位,8bit数据位,1bit停止位)时,就会产生breakerror标志。对应的,根据1-wire总线协议,作为从器件的uart端在收到长达48us-80us的复位脉冲后,要在之后的8us-10us以内产生应答脉冲。

故而,当作为主器件的1-wire端发送复位脉冲后,作为从器件的uart端的rx管脚接收到了16.67us的低电平后,breakerror标志位置可起,即产生breakerror标志,进入uart中断,此时,可清除breakerror中断标志,再延迟例如42.55us的预设时间,延迟的时间是为了时序能符合主器件的复位脉冲时序,之后uart端可发送例如0x00的第二预设命令,拉低1-wire端,从而产生应答,表示作为从器件的uart端存在,可实施数据的收发传输。

通过以上过程的实施,就完成了使用uart端去模拟1-wire总线接口的软硬件设计,使用串口uart模拟的1-wire总线的从器件可以和标准的1-wire总线的主器件进行半双工的数据通信。

本实施例还提供了一种通信装置,包括1-wire端与uart端;其可以为前文所涉及的1-wire端与uart端。

所述uart端具有rx管脚与tx管脚,所述rx管脚与所述tx管脚短接后通过单根线对接于所述1-wire端的连接端;所述uart端用于:

接收数据时,根据当前所接收到一个字节中0和/或1的数量,确定该字节表征的信号为数据0还是数据1;

发送数据时,若需发送数据1,则拉高所述连接端的电平;若需发送数据0,则拉低所述连接端的电平。

可选的,所述uart端具体用于:

若所接收到字节中1的数量大于4个,则确定该字节表征的数据为数据1;

若所接收到字节中1的数量不大于4个,则确定该字节表征的数据为数据0。

可选的,所述rx管脚与所述tx管脚通过一上拉电阻连接至电源;

所述uart端具体用于:

发送数据之前,接收所述1-wire端的读数据指令,触发所述rx管脚进入gpio中断,产生中断标志;

发送数据时,若需发送数据1,则清除所述中断标志,退出gpio中断,以使得所述上拉电阻将所述连接端的电平拉高;

发送数据时,若需发送数据0,则发出能够拉低所述连接端电平的第一预设命令,并清除所述中断标志,退出gpio中断。

可选的,所述uart端还用于:

在产生中断错误breakerror标志之后,清除所述breakerror中断标志,再延迟预设时间,向所述1-wire端返回能够拉低所述连接端电平的第二预设命令,以使得:所述1-wire端根据所述连接端电平的拉低确定所述uart端产生了应答,并在确定产生应答后实施数据的收发,所述breakerror标志是所述uart端响应于所述1-wire端发送的复位脉冲产生的。

综上,本实施例提供的总线通信的uart侧处理方法与通信装置中,可在uart端模拟1-wire总线的时序,从而实现uart端与1-wire端间数据的发送与接收,进一步方案中,还可实现1-wire端复位脉冲的应答。进而,在使用了本发明的方案后,可无需配置相应的1-wire总线接口,避免了成本的增加,且在未配置1-wire总线接口的情况下,依旧实现基于1-wire协议的总线通信。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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