一种多MCU的通信系统及方法与流程

文档序号:11948227阅读:1915来源:国知局
一种多MCU的通信系统及方法与流程

本发明涉及工业控制技术领域,尤其涉及一种多MCU的通信系统及方法。



背景技术:

目前,多微控制单元(MCU,Microcontroller Unit)通信在各个领域都比较常见。目前较常见的主从式多MCU通信工作方式为,一个主MCU某一时刻只与多个从MCU中的一个从MCU通信,并且从MCU之间不进行通信。这种通信通常都是由主MCU发起,与某个从MCU进行问答式的通信,从MCU通常不主动发起通信。这种通信方式常见于一个设备上存在多个电路板,并且有多个电路板上均具有自己的MCU,其中有一个电路板作为主控电路板,控制和协调其他的电路板进行工作。则主控电路板上的MCU为主MCU,其他电路板上的MCU为从MCU。

目前多MCU的分布方式主要是并联方式,即各个MCU都是挂在同一条数据总线上。如果一台设备上存在多个MCU,那么这条数据总线就会比较长,并且可能会出现U型或环形分布,可以理解的是U型或环形分布容易接收到电磁波,因此增加了干扰和被干扰的概率,降低设备的可靠性。

为了解决以上的技术问题,现有技术都是采用专用的通信芯片,同时在电路上增加抗干扰措施的额外电路。但是这样会增加设计成本,也增加设计复杂度。

下面介绍三种现有技术中多MCU通信的系统。

由于各个MCU存在于不同的电路板上,并且各电路板存在于设备的不同位置上,所以各电路板之间的通信容易受到干扰,各电路板之间的通信走线也是一个复杂的问题。

第一种:485总线方式;

参见图1,将所有的MCU,包括主MCU和从MCU,通过485接口芯片都挂在一条通信线上。主MCU通过从MCU的地址依据485总线的通信 协议来选择与某个从MCU通信。

第二种:控制器局域网络(CAN,Controller Area Network)总线方式;

参见图2,与485总线类似,将所有的MCU挂在一条CAN总线上,不同的是采用CAN总线专用的转换和驱动芯片。在软件设计上,这种通信需要遵循严格的CAN总线协议,开发起来难度相对较大。

第三种:串行外设接口(SPI,Serial Peripheral Interface)总线方式;

参见图3,各个MCU挂在同一个SPI总线上,这种总线不需要专用的接口芯片。MISO与MOSI是2条数据线,SCK是数据线,数据传输需要SCK时钟信号同步,属于同步串行通信。主MCU通过使相应的从MCU的片选CS信号有效来选择与其通信的从MCU。在软件设计上,这种方案没有固定的通信协议,可以比较灵活的设计,比CAN总线开发难度小。但是这种方案连线复杂,应用于主从式多MCU通信的情况比较少,常用于2个MCU之间通信。

综上所述,现有技术中提供的多MCU之间的通信方式存在以下缺点:通信线长度比较长,容易被干扰,降低了设备之间的可靠性。



技术实现要素:

为了解决现有技术中存在的以上技术问题,本发明提供一种多MCU的通信系统及方法,能够解决当多个电路板上均存在独立的MCU时,且主MCU需要控制各个从MCU工作时,提高系统的抗干扰的能力。

本发明提供一种多MCU的通信系统,包括:主MCU,以及至少以下两个从MCU:第一从MCU和第二从MCU;

所述主MCU与所述第一从MCU通过串口通信线进行连接,所述第一从MCU与所述第二从MCU通过串口通信线进行连接;

所述第一从MCU和第二从MCU具有不同的身份标识;

所述主MCU具有所述第一从MCU的身份标识和第二从MCU的身份标识;

所述主MCU,用于向所述从MCU发送数据时携带对应从MCU的身份标识;

所述第一从MCU,用于接收所述主MCU发送的数据,当判断所述主MCU发送的数据中携带的身份标识是自己的身份标识时,则接收该数据, 否则将该数据转发给所述第二从MCU;还用于将所述第二从MCU发送给所述主MCU的数据转发给所述主MCU;

所述第一从MCU和第二从MCU向所述主MCU发送数据时均要携带自身的身份标识。

优选地,所述身份标识为所述从MCU读取的自身预设IO端口的数据;

或,

所述身份标识为所述从MCU读取的自身存储器中预先存储的身份标识;

或,

所述身份标识由所述主MCU为所述从MCU动态分配。

优选地,当所述身份标识由所述主MCU为所述从MCU动态分配时,所述第一从MCU用于接收主MCU发送的身份标识分配命令,如果判断自身的身份标识变量为预设初始值时,则将所述身份标识分配命令中携带的身份标识作为自身的身份标识,并将所述身份标识赋值给所述身份标识变量;如果判断自身的身份标识变量不为所述预设初始值时,则将所述身份标识分配命令转发给所述第二从MCU;

所述第二从MCU判断自身的身份标识变量为预设初始值时,则将所述身份标识分配命令中携带的身份标识作为自身的身份标识。

优选地,不同的MCU之间不共用同一电源时,不同电源的MCU之间通过光耦对所述串口通信线进行隔离。

优选地,当相连接的两个MCU之间的串口通信线的长度大于预定距离时,还包括设置在所述串口通信线之间的驱动芯片。

本发明实施例还提供一种多MCU的通信方法,其特征在于,应用于所述的多MCU的通信系统,包括:

主MCU将携带从MCU的身份标识的数据发送给从MCU;所述从MCU接收到主MCU的数据时,从所述数据中解析出身份标识,当判断解析出的身份标识为自己的则接收该数据,当判断解析出的身份标识不是自己的,则将数据转发给下一个从MCU;

所述从MCU将携带自身的身份标识的数据发送给所述主MCU,以使所述主MCU从所述数据中解析出从MCU的身份标识来判断数据的来源。

优选地,当所述主MCU向所述第一从MCU发送数据时,包括:

所述主MCU将携带所述第一从MCU的身份标识的数据发送给所述第一从MCU;

当所述第一从MCU接收到所述主MCU发送的数据时,从所述数据中解析出身份标识,判断该身份标识为自己的时则接收该数据。

优选地,当所述主MCU向所述第二从MCU发送数据时,包括:

所述主MCU将携带所述第二从MCU的身份标识的数据发送给所述第一从MCU;

所述第一从MCU从该数据中解析出身份标识不为自己的,则将该数据转发给所述第二从MCU;

所述第二从MCU接收所述第一从MCU发送的数据,从该数据中解析出身份标识,判断该身份标识是自己的则接收该数据。

优选地,当所述从MCU向所述主MCU发送数据为第一从MCU向所述主MCU发送数据时,具体包括:

所述第一从MCU将携带自己身份标识的数据发送给所述主MCU;

所述主MCU接收到数据时通过数据中携带的身份标识判断该数据来自所述第一从MCU。

优选地,当所述从MCU向所述主MCU发送数据为第二从MCU向所述主MCU发送数据时,具体包括:

所述第二从MCU将携带自己身份标识的数据发送给所述第一从MCU;

所述第一从MCU将所述数据转发给所述主MCU。

与现有技术相比,本发明至少具有以下优点:

当系统中存在多个MCU,并且主MCU需要控制多个MCU时,在硬件上将多个MCU串联起来,将一条通信线分割为多条通信线,这样大大缩短了单条通信线的长度,从而不会形成U型或环形通信网络,从而降低了整个系统的干扰和被干扰的概率,同时不必设计专门抗干扰的电路,节约了设计难度和成本。

附图说明

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

图1为本发明提供的多个MCU以485总线通信系统示意图;

图2为本发明提供的多个MCU以CAN总线通信系统示意图;

图3为本发明提供的多个MCU以SPI总线通信系统示意图;

图4为本发明提供的多MCU的通信系统实施例一示意图;

图5为本发明提供的多MCU的通信系统实施例二示意图;

图6为本发明提供的通过硬件设置从MCU身份标识的示意图;

图7为本发明提供的多MCU的通信系统实施例三示意图;

图8为本发明提供的多MCU的通信方法流程图。

具体实施方式

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

参见图4,该图为本发明提供的多MCU的通信系统实施例一示意图。

本实施例提供的多MCU的通信系统,包括:主MCU100,以及至少以下两个从MCU:第一从MCU200a和第二从MCU200b;

需要说明的是,从MCU可以为更多个,例如,三个从MCU或四个从MCU或更多个从MCU,如图5所示。本实施例中以两个从MCU为例进行介绍,可以理解的是,比两个多的从MCU时与两个从MCU时的工作原理完全相同,以此类推,因此,在此不再详细赘述。

所述主MCU100与所述第一从MCU200a通过串口通信线进行连接,所述第一从MCU200a与所述第二从MCU200b通过串口通信线进行连接;

所述第一从MCU200a和第二从MCU200b具有不同的身份标识;

所述主MCU100具有所述第一从MCU200a的身份标识和第二从MCU20b的身份标识;

所述主MCU100,用于向从MCU发送数据时携带对应从MCU的身份 标识;即主MCU100向第一从MCU200a发送数据时携带第一从MCU200a的身份标识,向第二从MCU200b发送数据时携带第二从MCU200b的身份标识。

所述第一从MCU200a,用于接收所述主MCU100发送的数据,当判断所述主MCU发送的数据中携带的身份标识是自己的身份标识时,则接收该数据,否则将该数据转发给所述第二从MCU200b;还用于将所述第二从MCU200b发送给主MCU100的数据转发给所述主MCU100;

所述第二从MCU200b,用于接收所述第一从MCU200a转发的主MCU100发送的数据;还用于将携带自身的身份标识的数据发送给第一从MCU200a,由所述第一从MCU200a转发给主MCU100。

所述第一从MCU200a和第二从MCU200b向所述主MCU100发送数据时均要携带自身的身份标识。

需要说明的是,第一从MCU200a与主MCU100直接相连接,对于第二从MCU200b来说,第一从MCU200a是第二从MCU200b的上一级从MCU,反过来,第二从MCU200b是第一从MCU200a的下一级从MCU。

对于第一从MCU200a接收的数据,有两个来源,一种可能是主MCU100发送的,另一种可能是第二从MCU200b发送的。由于主MCU100发送给第一从MCU200a的数据和第二从MCU200b发送给第一从MCU200a的数据是从第一从MCU200a的不同串口接收的,因此,第一从MCU200a可以得知接收的数据的来源。例如,第一从MCU200a接收的数据来自第二从MCU200b时,第一从MCU200a将该数据直接转发给主MCU100,自己不做任何处理。

需要说明的是,多个从MCU之间不需要进行数据交互,仅是作为数据传输媒介。

本实施例提供的通信系统,当系统中存在多个MCU,并且主MCU需要控制多个MCU时,在硬件上将多个MCU串联起来,将一条通信线分割为多条通信线,这样大大缩短了单条通信线的长度,从而不会形成U型或环形通信网络,从而降低了整个系统的干扰和被干扰的概率,同时不必设计专门抗干扰的电路,节约了设计难度和成本。

下面介绍身份标识的设置方式。

设置从MCU的身份标识可以从硬件方面设置,也可以从软件方面来设置。

其中,硬件方面设置包括以下两种:

所述身份标识为所述从MCU读取的自身预设IO端口的数据;或,所述身份标识为所述从MCU读取的自身存储器中预先存储的身份标识。

设置IO端口的高低电平可以设置从MCU的身份标识,具体可以参见图6。

从MCU上电时,读取预设IO端口的数据,作为自己的身份标识。例如,图6所示的从MCU可以设置四个IO端口的数据,分别为IO0、IO1、IO2和IO3。如果将这个四个IO端口均接地,则读取的数据为0000,即该从MCU的身份标识为0。如果将IO0连接电源,将IO1、IO2和IO3接地,则读取的数据为0001,即该从MCU的身份标识为1。以此类推,可以设置该从MCU的这四个IO端口的数据范围为0000-1111,即对应的身份标识为0-15。

可以理解的是,也可以设置端口数目较少,具体的端口数目可以根据从MCU的个数来确定,当从MCU的总个数较少时,设置端口的数目较少,当从MCU的总个数较多时,设置端口的数目较多。本实施例中对于IO端口的个数不做具体限定。

另外一种硬件方式设置身份标识具体为,从MCU出厂时就设置了身份标识,或者出厂时在存储器中保存有身份标识,或者向不同的从MCU中烧写不同的程序,程序中携带不同的身份标识。

下面介绍软件方式设置身份标识的情况。

其中,从软件方面设置可以为:

所述身份标识由所述主MCU为所述从MCU动态分配,具体为:

所述第一从MCU用于接收主MCU发送的身份标识分配命令,如果判断自身的身份标识变量为预设初始值时,则将所述身份标识分配命令中携带的身份标识作为自身的身份标识,并将所述身份标识赋值给所述身份标识变量;如果判断自身的身份标识变量不为所述预设初始值时,则将所述身份标识分配命令转发给所述第二从MCU;

所述第二从MCU判断自身的身份标识变量为预设初始值时,则将所述身份标识分配命令中携带的身份标识作为自身的身份标识。

例如,身份标识变量的预设初始值为-1,从主MCU发送给所述第一从MCU的身份标识为0,发送给所述第二从MCU的身份标识为1。

当第一从MCU接收到携带身份标识为0的身份标识分配命令时,判断自身的身份标识变量是-1,则接收0作为自己的身份标识,并将0赋值为身份标识变量。当第一从MCU接收到携带身份标识为1的身份标识分配命令时,由于已经具有了身份标识0,所以会将将身份标识分配命令转发给下一级从MCU即第二从MCU,此时第二从MCU没有被分配身份标识,将会接收身份标识分配命令携带的身份标识1作为自己的身份标识。

如果多个从MCU,则以此类推,第三个从MCU,第四个从MCU,…第n个从MCU会被主MCU分配身份标识分别为2,3,…n-1。

另外,为了避免不同电源之间的干扰。当不同的MCU之间不共用同一电源时,不同电源的MCU之间通过光耦对所述串口通信线进行隔离。

另外,当相连接的两个MCU之间的串口通信线的长度大于预定距离时,还包括设置在所述串口通信线之间的驱动芯片。具体可以参见图7,在两个相邻的MCU之间连接一对驱动芯片。一般驱动芯片成对出现,例如主MCU和第一从MCU之间,靠近主MCU的驱动芯片是将信号进行放大,而靠近第一从MCU的驱动芯片是将信号变换为从MCU可以接收的信号格式。

例如,串口通信线的长度大于2米时,可以选择设置驱动芯片,以避免距离太远造成信号衰减,影响信号的接收。

可以理解的是,驱动芯片可以根据实际需要来选择,例如选择RS232转换芯片,也可以选择TTL电平转换芯片。

基于以上实施例提供的一种多MCU的通信系统,本发明实施例还提供了一种多MCU的通信方法,下面结合附图进行详细的介绍。

参见图8,该图为本发明提供的多MCU的通信方法实施例一流程图。

本实施例提供的多MCU的通信方法,应用于以上实施例所述的多MCU的通信系统,包括:

S801:主MCU将携带从MCU的身份标识的数据发送给从MCU;所述从MCU接收到主MCU的数据时,从所述数据中解析出身份标识,当判 断解析出的身份标识为自己的则接收该数据,当判断解析出的身份标识不是自己的,则将数据转发给下一个从MCU;

S802:所述从MCU将携带自身身份标识的数据发送给所述主MCU,以使所述主MCU从所述数据中解析出从MCU的身份标识来判断数据的来源。

本实施例提供的方法,可以实现多个MCU串联时的通信。即所有从MCU向主MCU发送数据时均需要携带自身的身份标识,以使主MCU收到数据时获知数据的来源。另外,所有从MCU收到下一级从MCU发送的数据,均向上一级从MCU转发,直至数据传送到主MCU。当从MCU收到主MCU发送的数据发现不是自己的时(通过数据中携带的身份标识识别),则转发给下一级从MCU。

需要说明的是,每个从MCU已知与自己相邻的上一级从MCU和下一级从MCU。

一方面,当所述主MCU向所述第一从MCU发送数据时,包括:

所述主MCU将携带所述第一从MCU的身份标识的数据发送给所述第一从MCU;

当所述第一从MCU接收到所述主MCU发送的数据时,从所述数据中解析出身份标识,判断该身份标识为自己的时则接收该数据。

另一方面,当所述主MCU向所述第二从MCU发送数据时,包括:

所述主MCU将携带所述第二从MCU的身份标识的数据发送给所述第一从MCU;

所述第一从MCU从该数据中解析出身份标识不为自己的,则将该数据转发给所述第二从MCU;

所述第二从MCU接收所述第一从MCU发送的数据,从该数据中解析出身份标识,判断该身份标识是自己的则接收该数据。

又一方面,当所述从MCU向所述主MCU发送数据为第一从MCU向所述主MCU发送数据时,具体包括:

所述第一从MCU将携带自己身份标识的数据发送给所述主MCU;

所述主MCU接收到数据时通过数据中携带的身份标识判断该数据来自所述第一从MCU。

另外,当所述从MCU向所述主MCU发送数据为第二从MCU向所述 主MCU发送数据时,具体包括:

所述第二从MCU将携带自己身份标识的数据发送给所述第一从MCU;

所述第一从MCU将所述数据转发给所述主MCU。

例如,以主MCU对应三个从MCU为例进行介绍,分别为第一从MCU,第二从MCU和第三从MCU。主MCU向第三从MCU发送命令,然后第三从MCU向主MCU做出应答,通信方法如下:

主MCU在命令头添加从MCU的身份标识为2,然后将命令发给第一从MCU。

第一从MCU收到命令后解析身份标识,与自己的身份标识0比对,结果不一致,于是将命令不作任何处理转发给第二从MCU。

第二从MCU收到命令后解析身份标识,与自己的身份标识1比对,结果不一致,于是将命令不作任何处理转发给第三从MCU。

第三从MCU收到命令后解析身份标识,与自己的身份标识2比对,结果一致,于是处理命令,处理结束后,在应答命令前加上自己的身份标识,将应答命令发给第二从MCU。

第二从MCU收到第三从MCU发送来的应答命令不作任何处理,直接转发给第一从MCU。

第一从MCU收到第二从MCU发送来的应答命令不作任何处理,直接转发给主MCU。

主MCU收到第一从MCU发来的应答命令,解析出身份标识,与发送命令的身份标识一致,通信过程结束。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

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