UART总线通讯方法、采用UART总线通讯的设备及其功能模块与流程

文档序号:16754167发布日期:2019-01-29 17:11阅读:392来源:国知局
UART总线通讯方法、采用UART总线通讯的设备及其功能模块与流程

本发明涉及通信领域,尤其涉及一种uart总线通讯方法、采用uart总线通讯的设备及其功能模块。



背景技术:

目前,行业内短距离点对点的通信普遍采用uart(universalasynchronousreceivetransmitter,通用异步收发传输器),uart最常用的精简连线方式只有3根线:发送端txd、接收端rxd、地gnd,其中,txd用于发送数据,rxd用于接收数据,gnd用于提供参考地电平。而且,uart以通信双方事先约定的波特率来传输串行数据。uart硬件和时序简单,使用非常广泛,几乎所有的mcu,不管是低端的,还是高端的,都支持一个或者多个uart接口。

uart是被设计为点对点的通讯接口,在一个设备系统中,功能模块间若采用传统的uart通讯协议,往往采用星型结构。主mcu作为中心设备,而且,主mcu的uart接口的个数会限制设备中所接的功能模块的数目。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的上述设备中功能模块的数目受限于主mcu的uart接口的个数的缺陷,提供一种uart总线通讯方法、采用uart总线通讯的设备及其功能模块。

本发明解决其技术问题所采用的技术方案是:构造一种uart总线通讯方法,用于实现多个功能模块间的通信,功能模块在有通信需求时,进行以下步骤:

步骤s10.根据预先设置的多组通信需求与优先级的对应关系,获取当前通信需求所对应的优先级,并根据所述优先级生成通信帧,而且,优先级字段位于所述通信帧的最前端;

步骤s20.在总线空闲时,通过发送端向总线发送当前通信帧,而且,在发送完优先级字段后,判断接收端接收到的数据是否与发送端发送的数据相一致,若是,则执行步骤s30;若否,则执行步骤s40;其中,所有功能模块的uart接口的发送端和接收端均连接至所述总线上,以实现线与逻辑关系;

步骤s30.继续通过其发送端向所述总线发送当前通信帧,直至当前通信帧发送完;

步骤s40.停止当前通信帧的发送,并进行等待直至总线空闲,然后重新执行步骤s20。

优选地,所述步骤s30包括:

步骤s301.继续通过其发送端向所述总线发送当前通信帧,而且,在发送完预设长度的数据后,判断接收端接收到的数据是否与发送端发送的数据相一致,若是,则执行步骤s302;若否,则执行步骤s303;

步骤s302.判断当前通信帧是否发送完,若否,则执行步骤s301;

步骤s303.进行等待直至总线空闲,然后重新执行所述步骤s20。

优选地,所述步骤s30包括:

步骤s311.继续通过其发送端向所述总线发送当前通信帧,并判断接收端是否接收到校验字段,若是,则执行步骤s312;若否,则继续执行步骤s311;,其中,所述校验字段设置在所述通信帧的末端;

步骤s312.根据所述检验字段对所述通信帧进行校验;

步骤s313.在校验未通过时,进行等待直至总线空闲,然后重新执行所述步骤s20。

优选地,在所述步骤s10和所述步骤s20之间,还包括:

步骤s50.判断接收端是否接收到数据,若是,则执行步骤s60;若否,则执行步骤s70;

步骤s60.确定总线忙,并进行等待直至总线空闲,然后执行所述步骤s20;

步骤s70.确定总线空闲,然后执行所述步骤s20。

优选地,在当前通信帧发送完之后,还包括:

步骤s80.判断是否还有待发送的通信帧,并在还有待发送的通信帧时,进行等待直至总线空闲,然后重新执行所述步骤s20,以开始发送下一通信帧。

优选地,进行等待直至总线空闲,包括:

在每接收到一字段时,均重置超时时间,并开始计时;

若判断出超时时间到达,则确定总线空闲。

优选地,所述步骤s10还包括:

根据所述通信帧的优先级来确定超时时间,且优先级高的通信帧所对应的超时时间比优先级低的通信帧所对应的超时时间短。

本发明还构造一种功能模块,应用在采用uart总线通讯的设备中,所述功能模块包括处理器和存储器,所述处理器包括uart接口,所述uart接口的发送端和接收端均连接至总线上,且与其它功能模块的uart接口的发送端和接收端实现线与逻辑关系;

而且,所述处理器用于执行所述存储器中存储的计算机程序时实现如以上所述uart总线通讯方法的步骤。

优选地,

所述总线通过上拉电阻接高电平信号,而且,所述uart接口的发送端分别通过相应的肖特基二极管连接总线,所述uart接口的接收端连接总线;

或者,

所述总线通过上拉电阻接高电平信号,所述总线还通过第一分压电阻和第二分压电阻接地,而且,所述uart接口的发送端通过相应二极管连接总线,所述uart接口的接收端连接所述第一分压电阻和所述第二分压电阻的连接点。

本发明还构造一种采用uart总线通讯的设备,包括多个以上所述的功能模块。

实施本发明的技术方案,首先将各个功能模块的uart接口的发送端和接收端均连接至总线上,以实现线与逻辑关系,而且,在通信帧中设置优先级字段。当功能模块有通信需求时,若总线空闲,则从优先级字段开始发送通信帧,而且在发送完优先级字段时,检查接收端接收到的数据是否跟自己发送的一致,若一致,说明当前自己所发的通信帧的优先级最高,即,竞争总线成功,此时可以继续发送;若不一致,说明当前自己所发的通信帧的优先级不是最高,即,竞争总线失败,此时,应等待一段时间,然后重新发送。因此,这种通讯方式不再是基于uart的点对点通讯,而是将各功能模块扩展成了总线系统,而且,主控模块与其它功能模块间不再是主从架构,而是多主架构。这样,设备中的功能模块的个数不再受主控模块的uart接口个数的限制,从而便于系统扩展以及通讯效率的提升。

附图说明

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

图1是本发明uart总线通讯方法实施例一的流程图;

图2是本发明采用uart总线通讯的设备实施例一的电路图;

图3是本发明采用uart总线通讯的设备实施例二的电路图。

具体实施方式

图1是本发明uart总线通讯方法实施例一的流程图,在一些电子设备中,通常包括有多个需要通讯连接的功能模块,例如,玩具电动车设备包括有主控模块、传感模块、执行模块等。这些功能模块均带有uart接口,而且它们之间可采用该实施例的uart总线通讯方法进行通讯。在该实施例的uart总线通讯方法中,通过设计一种基于uart的新的硬件连接方式及新的软件通信协议,使得各功能模块间的通讯方式不再是传统的点对点通讯,而是将各功能模块扩展成了总线系统,这样,主控模块与其它功能模块间不再是主从架构,而是多主架构,因此,设备中功能模块的数目不再受主控模块的uart接口个数的限制,从而便于系统扩展以及通讯效率的提升。另外,由于pc支持uart,所以可以直接将pc上的uart接入到本设备系统,调试方便,可以降低设备中功能模块间通讯接口开发以及调试的难度。

在该实施例中,硬件连接方式为:将所有功能模块的uart接口的发送端(txd)和接收端(rxd)均连接至总线上,以实现“线与”逻辑关系。也就是说,多个功能模块的发送端的信号同时驱动到总线上,总线实现“线与”逻辑,只有所有功能模块的发送端输出的信号均为高电平时,总线电平才是高电平,否则,只要有一个功能模块的发送端输出低电平,总线电平就为低电平。

在该实施例中,功能模块在有通信需求时,按以下步骤进行通讯流程:

步骤s10.根据预先设置的多组通信需求与优先级的对应关系,获取当前通信需求所对应的优先级,并根据所述优先级生成通信帧,而且,优先级字段位于所述通信帧的最前端;

步骤s20.在总线空闲时,通过发送端向总线发送当前通信帧,而且,在发送完优先级字段后,判断接收端接收到的数据是否与发送端发送的数据相一致,若是,则执行步骤s30;若否,则执行步骤s40;

步骤s30.继续通过其发送端向所述总线发送当前通信帧,直至当前通信帧发送完;

步骤s40.停止当前通信帧的发送,并进行等待直至总线空闲,然后重新执行步骤s20。

在一个具体实施例中,功能模块之间在基于uart总线进行通信时,是以多个字节组成的通信帧为单位进行传输的,而且,通信帧的格式为:

优先级字段+header(len+type+addr)+data字段+校验字段(可选)

其中,优先级字段用于标识本通信帧传输的优先级,利用“线与”逻辑的低电平优先的特点来实现优先级,优先级字段可设置成一个字节;header包含三个字段:len(帧长度)、type(帧类别)、addr(目标地址,destinationaddr),而且,帧类别包括:命令帧、响应帧、数据帧;data字段代表具体的命令、数据;校验字段用于保证帧的完整性。

关于优先级字段的设计,需说明的是,假设优先级字段采用一个字节,也是充分利用“线与”逻辑的特点以及uart通讯协议中先发送lsb比特的时序,先发0,再发1,而且,0越多,优先级越高。例如,按优先级由高至低的顺序,优先级字段包括有:0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff。当然,在一些实际应用中,可仅设置三个优先级。

下面说明该实施例的通讯流程:首先,对设备进行初始化配置,包括:配置事先约定的波特率;设置uart硬件接收使能(receiverenable),例如,每当接收到一个字节的数据,会产生接收中断。当功能模块有通信需求时,首先确定该通信需求所对应的优先级,然后按照前述通信帧的格式生成待发送的通信帧。在发送之前,先判断当前总线是否空闲,当为空闲状态时,便可通过自身的uart接口的发送端向总线发送当前通信帧,而且,是从优先级字段开始发送的。由于每个功能模块的uart接口的发送端和接收端均是连接至总线上的,所以,该功能模块在通过其uart接口的发送端发送数据的同时,也可通过其uart接口的接收端接收数据。因此,可在发送完优先级字段(第一个字节)时,检查接收端接收到的数据是否跟自己发送的一致,若一致,说明当前自己所发的通信帧的优先级最高,即,竞争总线成功,此时可以继续发送;若不一致,说明当前自己所发的通信帧的优先级不是最高,即,竞争总线失败,此时,应等待一段时间,然后重新发送。

在一个可选实施例中,步骤s30包括:

步骤s301.继续通过其发送端向所述总线发送当前通信帧,而且,在发送完预设长度的数据后,判断接收端接收到的数据是否与发送端发送的数据相一致,若是,则执行步骤s302;若否,则执行步骤s303;

步骤s302.判断当前通信帧是否发送完,若否,则执行步骤s301;

步骤s303.进行等待直至总线空闲,然后重新执行所述步骤s20。

在该实施例中,除了对通信帧的优先级字段(第一个字节)进行收发一致性的检查,还会对通信帧中优先级字段后的特定长度的数据(例如也是一个字节长度的字段)进行收发一致性的检查,当一致时,说明总线未受到噪声干扰,此时可继续发送该通信帧;当不一致时,说明总线受到了噪声干扰,此时应重新进行总线仲裁,等待一段时间后重新发送该通信帧,这样可保证总线传输的可靠性,因此这种方式可无需在通信帧中设置校验字段。

在一个可选实施例中,步骤s30包括:

步骤s311.继续通过其发送端向所述总线发送当前通信帧,并判断接收端是否接收到校验字段,若是,则执行步骤s312;若否,则继续执行步骤s311;,其中,所述校验字段设置在所述通信帧的末端;

步骤s312.根据所述检验字段对所述通信帧进行校验;

步骤s313.在校验未通过时,进行等待直至总线空闲,然后重新执行所述步骤s20。

在该实施例中,仅对通信帧的优先级字段(第一个字节)进行收发一致性的检查,通信帧中后续的其它数据不进行收发一致性判断,而利用通信帧中的校验字段对数据传输的可靠性进行检查,若校验未通过,说明总线受到了噪声干扰,此时应重新进行总线仲裁,等待一段时间后重新发送该通信帧。

在一个可选实施例中,在步骤s10和所述步骤s20之间,还包括:

步骤s50.判断接收端是否接收到数据,若是,则执行步骤s60;若否,则执行步骤s70;

步骤s60.确定总线忙,并进行等待直至总线空闲,然后执行所述步骤s20;

步骤s70.确定总线空闲,然后执行所述步骤s20。

在该实施例中,在开始发通信帧之前,可通过判断接收端是否接收到数据来判断总线当前是否空闲,若接收到了数据,说明总线忙,此时需进行等待。

在一个可选实施例中,在当前通信帧发送完之后,还包括:

步骤s80.判断是否还有待发送的通信帧,并在还有待发送的通信帧时,进行等待直至总线空闲,然后重新执行所述步骤s20,以开始发送下一通信帧。

在该实施例中,若有多个通信帧需要发送,在发送完一个通信帧后,要给总线上其它功能模块仲裁的机会,因此需要等待一个延时再发送,而不是持续发送。

在一个可选实施例中,进行等待直至总线空闲的步骤包括:

在每接收到一字段时,均重置超时时间,并开始计时;

若判断出超时时间到达,则确定总线空闲。

在该实施例中,超时时间可为一固定的或随机的延时时间,比如,一个通信帧有8个字节,超时时间可设置为传输4-16个字节所需的时间。

进一步地,步骤s10还包括:

根据所述通信帧的优先级来确定超时时间,且优先级高的通信帧所对应的超时时间比优先级低的通信帧所对应的超时时间短。

在该实施例中,超时时间的长短与通信帧的优先级相关,而且,通信帧的优先级越高,在传输该通信帧时所设置的超时时间越短,通信帧的优先级越低,在传输该通信帧时所设置的超时时间越长。

本发明还构造一种功能模块,该功能模块应用在采用uart总线通讯的设备中,该功能模块包括处理器和存储器,处理器包括uart接口,而且,uart接口的发送端和接收端均连接至总线上,且与其它功能模块的uart接口的发送端和接收端实现线与逻辑关系。另外,处理器用于执行存储器中存储的计算机程序时实现如以上所述的uart总线通讯方法的步骤。

本发明还构造一种采用uart总线通讯的设备,该设备包括多个功能模块,每个功能模块均具有uart接口,而且,每个功能模块的发送端和接收端均连接至总线上,且实现线与逻辑关系。

图2是本发明采用uart总线通讯的设备实施例一的电路图,在该实施例的设备中,共有三个功能模块,每个功能模块的uart接口包括有发送端和接收端。而且,总线通过上拉电阻r1接高电平信号(vcc)。每个功能模块的uart接口的发送端分别通过相应的二极管连接总线,每个功能模块的uart接口的接收端连接总线,具体地,第一功能模块的uart接口的发送端txd1通过二极管d1连接总线,第一功能模块的uart接口的接收端rxd1连接总线;第二功能模块的uart接口的发送端txd2通过二极管d2连接总线,第二功能模块的uart接口的接收端rxd2连接总线;第三功能模块的uart接口的发送端txd3通过二极管d3连接总线,第三功能模块的uart接口的接收端rxd3连接总线。另外,在该实施例中,为使接收端能准确接收到总线上的低电平信号,连接在发送端的二极管需采用肖特基二极管,它的正向压降约0.15v。

图3是本发明采用uart总线通讯的设备实施例一的电路图,在该实施例的设备中,共有三个功能模块,每个功能模块的uart接口包括有发送端和接收端。而且,总线通过上拉电阻r1接高电平信号(vcc),总线还通过第一分压电阻r2和第二分压电阻r3接地。每个功能模块的uart接口的发送端分别通过相应的二极管连接总线,每个功能模块的uart接口的接收端连接第一分压电阻r2和第二分压电阻r3的连接点,具体地,第一功能模块的uart接口的发送端txd1通过二极管d1连接总线,第一功能模块的uart接口的接收端rxd1连接第一分压电阻r2和第二分压电阻r3的连接点;第二功能模块的uart接口的发送端txd2通过二极管d2连接总线,第二功能模块的uart接口的接收端rxd2连接第一分压电阻r2和第二分压电阻r3的连接点;第三功能模块的uart接口的发送端txd3通过二极管d3连接总线,第三功能模块的uart接口的接收端rxd3连接第一分压电阻r2和第二分压电阻r3的连接点。另外,在该实施例中,在连接在发送端的二极管为普通二极管(正向压降约0.6v)时,为使接收端能准确接收到总线上的低电平信号,在总线上采用电阻分压来实现电平转换,当然,在其它实施例中,也可采用其它的电平转换电路。

以上只是本发明实现线与逻辑的两个具体实施例,应理解,在其它实施例中,功能模块的数量也不局限于三个。而且,在其它实施例中,例如,对于一些io引脚可以配置为集电极开路(即oc门)的处理器,可无需在uart接口的发送端设置二极管,只需将各个uart接口的发送端和接收端接入总线,并将总线通过上拉电阻连接高电平,就能实现所有功能模块的uart接口的发送端和接收端的线与逻辑。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何纂改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

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