CN108710597B - 一种利用gpio优化mcu通信的方法及系统 - Google Patents
一种利用gpio优化mcu通信的方法及系统 Download PDFInfo
- Publication number
- CN108710597B CN108710597B CN201810473877.0A CN201810473877A CN108710597B CN 108710597 B CN108710597 B CN 108710597B CN 201810473877 A CN201810473877 A CN 201810473877A CN 108710597 B CN108710597 B CN 108710597B
- Authority
- CN
- China
- Prior art keywords
- mcu
- master
- slave
- gpio
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供一种利用GPIO优化MCU通信的方法,需提供至少两MCU,且两所述MCU之间增设GPIO连接,采用主从模式结合一问一答通信结构进行通信,所述方法包括:设置主从模式,确保所有数据帧必须由主MCU发起,对于通讯双方的MCU,以其中GPIO配置为输入的一方作为主MCU,并以其中GPIO配置为输出的一方作为从MCU,从而确保在同一时刻内,通讯双方只能有一个为主,一个为从;并设置有事件通知机制、异步应答机制、主从切换机制以及大数据传输机制。本发明还提供一种利用GPIO优化MCU通信的系统,同时满足通用协议支持的功能和专用协议的简洁高效优点,且同时适用于高端和低端MCU。
Description
技术领域
本发明涉及单片机通信领域,尤其涉及一种利用GPIO优化MCU通信的方法及系统。
背景技术
在嵌入式领域,存在一个产品配置2个或以上MCU的情况,以POS类产品为例,由于安全要求比较严苛,带安全配置的MCU种类又有限,因此经常会在一台POS机内配置两颗MCU,一颗是普通MCU,主要负责处理业务,一颗是带安全的MCU,主要负责处理安全。这种多MCU的使用场景,相比于单MCU,增加了MCU之间协同工作的要求。这就需要在MCU之间建立一套通信协议来满足这个要求。针对MCU之间的通信需求,业内一般的做法是:
1)针对不同的产品设计不同的协议。
嵌入式产品的配置从高到低,功能从复杂到简单,差异很大。采用不同的协议去适配不同的产品,优点是针对性很强,最能契合产品需求。
缺点也很明显,产品类型一多,协议也就多起来,开发及维护成本就很高。就算是相同的产品,如果发生需求变更,这种针对性的协议有时候就无法适配,又需要重新设计。
2)采用通用协议。
即在设计时考虑协议的通用性,使其满足各种场景下MCU之间通信的需求。更进一步,设计的协议不仅适用于MCU之间,还能用于产品与产品之间,产品与其配件之间,或产品与PC之间等等。这种做法的好处是,只需要一套协议,开发和维护的成本可以分摊到所有产品上。坏处是,除硬件通信接口外,不能利用MCU的其它资源,协议必然会很复杂,对开发和维护人员的要求比较高。同时,开发出来的协议程序,对于MCU的资源及运行速率要求比较高,无法适用在采用低成本MCU的嵌入式产品中。
发明内容
本发明要解决的技术问题之一,在于提供一种利用GPIO优化MCU通信的方法,同时满足通用协议支持的功能和专用协议的简洁高效优点,且同时适用于高端和低端MCU。
本发明要解决的技术问题之一是这样实现的:一种利用GPIO优化MCU通信的方法,需提供至少两MCU,且两所述MCU之间增设GPIO连接,采用主从模式结合一问一答通信结构进行通信,所述方法包括:
设置主从模式,确保所有数据帧必须由主MCU发起,对于通讯双方的MCU,以其中GPIO配置为输入的一方作为主MCU,并以其中GPIO配置为输出的一方作为从MCU,从而确保在同一时刻内,通讯双方只能有一个为主,一个为从;
事件通知机制,由从MCU先通过连接的GPIO向主MCU发送信号,通知有事件发送,主MCU收到GPIO上的信号后主动发起请求读取事件内容,从MCU收到事件读取请求后再通过应答帧返回事件内容;
异步应答机制,在一个功能的执行时间大于一预设值时,将其分解成两次帧进行交互:由主MCU通过第一帧交互通知从MCU启动功能执行,从MCU执行完功能之后,通过事件通知机制知会主MCU,主MCU在事件通知机制中获取的事件内容中得到从MCU的功能执行结果,即对应第二次帧交互;
主从切换机制,包括主MCU发起方式或从MCU发起方式;所述主MCU发起方式为:通过主MCU发送指令帧通知从MCU切换到主模式,从MCU收到指令后,先将GPIO由输出修改为输入中断,然后向主MCU发送模式切换完成的应答帧,主MCU收到应答帧后,再将GPIO由输入中断修改为输出,完成主从切换;所述从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之间通过串口连接,所述串口连接包括用于数据接收和发送的引脚RXD和TXD的连接,以及用于流控的引脚CTS和RTS的连接。
进一步的,将从MCU的GPIO初始化设置为输出逻辑1电平;
所述事件通知机制进一步包括:将主MCU配置GPIO为中断使能,中断触发方式为下降沿,从MCU通过将GPIO电平由逻辑1修改为逻辑0产生一个下降沿的信号,主MCU因为下降沿的GPIO信号变化触发中断处理,中断处理的内容是主MCU发送一个事件查询帧,从MCU应答具体的事件内容,若从MCU收到事件查询帧的时候,已经积累了多个事件,则从MCU将多个事件内容组合成一个应答帧返回给主MCU。
本发明要解决的技术问题之二,在于提供一种利用GPIO优化MCU通信的系统,同时满足通用协议支持的功能和专用协议的简洁高效优点,且同时适用于高端和低端MCU。
本发明要解决的技术问题之二是这样实现的:一种利用GPIO优化MCU通信的系统,需提供至少两MCU,且两所述MCU之间增设GPIO连接,采用主从模式结合一问一答通信结构进行通信,所述系统包括:
主从模式模块,用于确保所有数据帧必须由主MCU发起,对于通讯双方的MCU,以其中GPIO配置为输入的一方作为主MCU,并以其中GPIO配置为输出的一方作为从MCU,从而确保在同一时刻内,通讯双方只能有一个为主,一个为从;
事件通知模块,用于由从MCU先通过连接的GPIO向主MCU发送信号,通知有事件发送,主MCU收到GPIO上的信号后主动发起请求读取事件内容,从MCU收到事件读取请求后再通过应答帧返回事件内容;
异步应答模块,用于在一个功能的执行时间大于一预设值时,将其分解成两次帧进行交互:由主MCU通过第一帧交互通知从MCU启动功能执行,从MCU执行完功能之后,通过事件通知机制知会主MCU,主MCU在事件通知机制中获取的事件内容中得到从MCU的功能执行结果,即对应第二次帧交互;
主从切换模块,包括主MCU发起模块或从MCU发起模块;所述主MCU发起模块,用于通过主MCU发送指令帧通知从MCU切换到主模式,从MCU收到指令后,先将GPIO由输出修改为输入中断,然后向主MCU发送模式切换完成的应答帧,主MCU收到应答帧后,再将GPIO由输入中断修改为输出,完成主从切换;所述从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之间通过串口连接,所述串口连接包括用于数据接收和发送的引脚RXD和TXD的连接,以及用于流控的引脚CTS和RTS的连接。
进一步的,将从MCU的GPIO初始化设置为输出逻辑1电平;
所述事件通知模块进一步包括:用于将主MCU配置GPIO为中断使能,中断触发方式为下降沿,从MCU通过将GPIO电平由逻辑1修改为逻辑0产生一个下降沿的信号,主MCU因为下降沿的GPIO信号变化触发中断处理,中断处理的内容是主MCU发送一个事件查询帧,从MCU应答具体的事件内容,若从MCU收到事件查询帧的时候,已经积累了多个事件,则从MCU将多个事件内容组合成一个应答帧返回给主MCU。
本发明具有如下优点:
1、简化原因的代码结构。
大部分功能都可以直接通过设定的指令直接封装成函数来使用,编码上就十分简洁,修改和维护起来十分方便。
2、帧解析十分简单。
在地位对等型协议中,随时都需要从接收到的数据中拆分出各帧,并区分哪个是通知帧,哪个是应答帧,哪个是请求帧等,而本发明在同一时段只可能接收到请求或者应答帧,并且除大数据传输模式外,一次只会收到一帧的数据,即每帧数据基本都是可预期的,解析自然十分简单。
3、更大的可扩展性。
相比其他通信协议,多引入了GPIO。在满足一些新的通信需求或解决一些通信问题的时候,就有更多的方案可供选择。
4、弹性大。
由于通信帧必然由主MCU发起,从MCU通过GPIO通知主MCU有事件发生时,主MCU可以根据实际情况立即或延迟予以响应。因此,这种机制使得主MCU在编码上有更大的弹性。
5、对硬件要求低。
完全采用主从式,对主MCU而言,只需要在请求帧发送后等待应答帧,从MCU只需要在收到请求帧后处理请求并应答即可。各MCU所要负责的工作内容单一化,使得软件编码简单,对MCU的资源及性能要求自然就很低。不仅能满足几乎所有MCU之间通信的功能需求场景,而且能适用更低端的MCU,实现真正意义的通用。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明MCU连接示意图。
图2为本发明事件通知机制原理示意图。
图3为本发明异步应答机制原理示意图。
图4为本发明大数据传输机制原理示意图。
图5为本发明一种利用GPIO优化MCU通信的系统逻辑框架图。
具体实施方式
本发明针对MCU之间的通信进行设计,利用MCU的GPIO资源对通用协议进行简化。使其既能满足通用协议支持的功能,又能接近专用协议的简洁高效,从而不管是在高端还是低端MCU上都能够适用。
请参阅图1至图4,本发明的一种利用GPIO优化MCU通信的方法,需提供至少两MCU,且两所述MCU之间增设GPIO连接,采用主从模式结合一问一答通信结构进行通信,本发明在使用以往常规的串口等连接方式的基础上增加了GPIO连接,用于辅助实现MCU之间的通信协议。所述方法包括:
设置主从模式,确保所有数据帧必须由主MCU发起,对于通讯双方的MCU,以其中GPIO配置为输入的一方作为主MCU,并以其中GPIO配置为输出的一方作为从MCU,从而确保在同一时刻内,通讯双方只能有一个为主,一个为从;通用协议之所以复杂,在于其必须满足MCU之间的地位对等方式,即同一时刻,MCU既可以是主模式发起请求帧并等待应答,也可以是从模式接收并应答请求帧。而如果MCU之间严格遵循主从模式,即同一时刻,只能一个为主,另一个为从,则协议的设计及软件实现就可以十分简单;
通用协议之所以通用,通信双方对等的设定就必然是基础要求。想要主从式一问一答的机制替代原先地位对等的通用协议,需要对大数据传输除外的所有通信过程严格遵循一问一答的方式,即主MCU发起的每一个请求整必然对应从MCU的一个应答帧,这种一一对应的通信结构极简且最为稳定,极大简化了编码;
事件通知机制,由从MCU先通过连接的GPIO向主MCU发送信号,通知有事件发送,主MCU收到GPIO上的信号后主动发起请求读取事件内容,从MCU收到事件读取请求后再通过应答帧返回事件内容;由于主从模式要求所有数据帧的通信都必须由主MCU发起,因此从MCU就需要通过事件通知机制向主MCU通知事件。
异步应答机制,在一个功能的执行时间大于一预设值(例如1秒)时,即认为该功能请求执行时间偏长,需要通过异步应答机制进行封装,将其分解成两次帧进行交互:由主MCU通过第一帧交互通知从MCU启动功能执行,从MCU执行完功能之后,通过事件通知机制知会主MCU,主MCU在事件通知机制中获取的事件内容中得到从MCU的功能执行结果,即对应第二次帧交互;即在功能请求执行时间偏长时,主MCU发送请求后,从MCU立即应答以指示对应请求已经启动处理,并在处理结束后,从MCU获取处理结果,这个过程中一个功能请求被拆分成两次帧交互,第一次是请求执行,第二次是查询结果,并且每次交互,从机的应答都可以立即返回,两次交互的间隔时间,主从MCU都不会有新的帧交互插入。
主从切换机制,包括主MCU发起方式或从MCU发起方式;所述主MCU发起方式为:通过主MCU发送指令帧通知从MCU切换到主模式,从MCU收到指令后,先将GPIO由输出修改为输入中断,然后向主MCU发送模式切换完成的应答帧,主MCU收到应答帧后,再将GPIO由输入中断修改为输出,完成主从切换;所述从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之间传输大量数据,采用停止等待的方式是不合适的,速度太慢,通常的做法是采用ARQ方式(Automatic Repeat-reQuest,自动重传请求),而利用MCU的GPIO实现大数据传输则可以更简洁更快速。
较佳的,两所述MCU之间还通过串口等常见方式进行连接,所述串口连接包括用于数据接收和发送的引脚RXD和TXD的连接,以及用于流控的引脚CTS和RTS的连接。
较佳的,将从MCU的GPIO初始化设置为输出逻辑1电平;
所述事件通知机制进一步包括:将主MCU配置GPIO为中断使能,中断触发方式为下降沿,从MCU通过将GPIO电平由逻辑1修改为逻辑0产生一个下降沿的信号,主MCU因为下降沿的GPIO信号变化触发中断处理,中断处理的内容是主MCU发送一个事件查询帧,从MCU应答具体的事件内容,若从MCU收到事件查询帧的时候,已经积累了多个事件,则从MCU将多个事件内容组合成一个应答帧返回给主MCU。
请再参阅图1至图5,本发明的一种利用GPIO优化MCU通信的系统,需提供至少两MCU,且两所述MCU之间增设GPIO连接,采用主从模式结合一问一答通信结构进行通信,本发明在使用以往常规的串口等连接方式的基础上增加了GPIO连接,用于辅助实现MCU之间的通信协议。所述系统包括:
主从模式模块,用于确保所有数据帧必须由主MCU发起,对于通讯双方的MCU,以其中GPIO配置为输入的一方作为主MCU,并以其中GPIO配置为输出的一方作为从MCU,从而确保在同一时刻内,通讯双方只能有一个为主,一个为从;通用协议之所以复杂,在于其必须满足MCU之间的地位对等方式,即同一时刻,MCU既可以是主模式发起请求帧并等待应答,也可以是从模式接收并应答请求帧。而如果MCU之间严格遵循主从模式,即同一时刻,只能一个为主,另一个为从,则协议的设计及软件实现就可以十分简单;
通用协议之所以通用,通信双方对等的设定就必然是基础要求。想要主从式一问一答的机制替代原先地位对等的通用协议,需要对大数据传输除外的所有通信过程严格遵循一问一答的方式,即主MCU发起的每一个请求整必然对应从MCU的一个应答帧,这种一一对应的通信结构极简且最为稳定,极大简化了编码;
事件通知模块,用于由从MCU先通过连接的GPIO向主MCU发送信号,通知有事件发送,主MCU收到GPIO上的信号后主动发起请求读取事件内容,从MCU收到事件读取请求后再通过应答帧返回事件内容;由于主从模式要求所有数据帧的通信都必须由主MCU发起,因此从MCU就需要通过事件通知机制向主MCU通知事件。
异步应答模块,用于在一个功能的执行时间大于一预设值(例如1秒)时,即认为该功能请求执行时间偏长,需要通过异步应答机制进行封装,将其分解成两次帧进行交互:由主MCU通过第一帧交互通知从MCU启动功能执行,从MCU执行完功能之后,通过事件通知机制知会主MCU,主MCU在事件通知机制中获取的事件内容中得到从MCU的功能执行结果,即对应第二次帧交互;即在功能请求执行时间偏长时,主MCU发送请求后,从MCU立即应答以指示对应请求已经启动处理,并在处理结束后,从MCU获取处理结果,这个过程中一个功能请求被拆分成两次帧交互,第一次是请求执行,第二次是查询结果,并且每次交互,从机的应答都可以立即返回,两次交互的间隔时间,主从MCU都不会有新的帧交互插入。
主从切换模块,包括主MCU发起模块或从MCU发起模块;所述主MCU发起模块,用于通过主MCU发送指令帧通知从MCU切换到主模式,从MCU收到指令后,先将GPIO由输出修改为输入中断,然后向主MCU发送模式切换完成的应答帧,主MCU收到应答帧后,再将GPIO由输入中断修改为输出,完成主从切换;所述从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之间传输大量数据,采用停止等待的方式是不合适的,速度太慢,通常的做法是采用ARQ方式(Automatic Repeat-reQuest,自动重传请求),而利用MCU的GPIO实现大数据传输则可以更简洁更快速。
较佳的,两所述MCU之间还通过串口等常见方式进行连接,所述串口连接包括用于数据接收和发送的引脚RXD和TXD的连接,以及用于流控的引脚CTS和RTS的连接。
较佳的,将从MCU的GPIO初始化设置为输出逻辑1电平;
所述事件通知模块进一步包括:用于将主MCU配置GPIO为中断使能,中断触发方式为下降沿,从MCU通过将GPIO电平由逻辑1修改为逻辑0产生一个下降沿的信号,主MCU因为下降沿的GPIO信号变化触发中断处理,中断处理的内容是主MCU发送一个事件查询帧,从MCU应答具体的事件内容,若从MCU收到事件查询帧的时候,已经积累了多个事件,则从MCU将多个事件内容组合成一个应答帧返回给主MCU。
本发明通信机制简化原因的代码结构,大部分功能都可以直接通过设定的指令直接封装成函数来使用,编码上就十分简洁,修改和维护起来十分方便;帧解析十分简单,在同一时段只可能接收到请求或者应答帧,并且除大数据传输模式外,一次只会收到一帧的数据,即每帧数据基本都是可预期的,解析自然十分简单;具有更大的可扩展性,多引入了GPIO。在满足一些新的通信需求或解决一些通信问题的时候,就有更多的方案可供选择;弹性大,由于通信帧必然由主MCU发起,从MCU通过GPIO通知主MCU有事件发生时,主MCU可以根据实际情况立即或延迟予以响应。因此,这种机制使得主MCU在编码上有更大的弹性;对硬件要求低,完全采用主从式,对主MCU而言,只需要在请求帧发送后等待应答帧,从MCU只需要在收到请求帧后处理请求并应答即可,各MCU所要负责的工作内容单一化,使得软件编码简单,对MCU的资源及性能要求自然就很低,不仅能满足几乎所有MCU之间通信的功能需求场景,而且能适用更低端的MCU,实现真正意义的通用。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (6)
1.一种利用GPIO优化MCU通信的方法,其特征在于:需提供至少两MCU,且两所述MCU之间增设GPIO连接,采用主从模式结合一问一答通信结构进行通信,所述方法包括:
设置主从模式,确保所有数据帧必须由主MCU发起,对于通讯双方的MCU,以其中GPIO配置为输入的一方作为主MCU,并以其中GPIO配置为输出的一方作为从MCU,从而确保在同一时刻内,通讯双方只能有一个为主,一个为从;
事件通知机制,由从MCU先通过连接的GPIO向主MCU发送信号,通知有事件发送,主MCU收到GPIO上的信号后主动发起请求读取事件内容,从MCU收到事件读取请求后再通过应答帧返回事件内容;
异步应答机制,在一个功能的执行时间大于一预设值时,将其分解成两次帧进行交互:由主MCU通过第一帧交互通知从MCU启动功能执行,从MCU执行完功能之后,通过事件通知机制知会主MCU,主MCU在事件通知机制中获取的事件内容中得到从MCU的功能执行结果,即对应第二次帧交互;
主从切换机制,包括主MCU发起方式或从MCU发起方式;所述主MCU发起方式为:通过主MCU发送指令帧通知从MCU切换到主模式,从MCU收到指令后,先将GPIO由输出修改为输入中断,然后向主MCU发送模式切换完成的应答帧,主MCU收到应答帧后,再将GPIO由输入中断修改为输出,完成主从切换;所述从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.根据权利要求1所述的一种利用GPIO优化MCU通信的方法,其特征在于:两所述MCU之间通过串口连接,所述串口连接包括用于数据接收和发送的引脚RXD和TXD的连接,以及用于流控的引脚CTS和RTS的连接。
3.根据权利要求1所述的一种利用GPIO优化MCU通信的方法,其特征在于:将从MCU的GPIO初始化设置为输出逻辑1电平;
所述事件通知机制进一步包括:将主MCU配置GPIO为中断使能,中断触发方式为下降沿,从MCU通过将GPIO电平由逻辑1修改为逻辑0产生一个下降沿的信号,主MCU因为下降沿的GPIO信号变化触发中断处理,中断处理的内容是主MCU发送一个事件查询帧,从MCU应答具体的事件内容,若从MCU收到事件查询帧的时候,已经积累了多个事件,则从MCU将多个事件内容组合成一个应答帧返回给主MCU。
4.一种利用GPIO优化MCU通信的系统,其特征在于:需提供至少两MCU,且两所述MCU之间增设GPIO连接,采用主从模式结合一问一答通信结构进行通信,所述系统包括:
主从模式模块,用于确保所有数据帧必须由主MCU发起,对于通讯双方的MCU,以其中GPIO配置为输入的一方作为主MCU,并以其中GPIO配置为输出的一方作为从MCU,从而确保在同一时刻内,通讯双方只能有一个为主,一个为从;
事件通知模块,用于由从MCU先通过连接的GPIO向主MCU发送信号,通知有事件发送,主MCU收到GPIO上的信号后主动发起请求读取事件内容,从MCU收到事件读取请求后再通过应答帧返回事件内容;
异步应答模块,用于在一个功能的执行时间大于一预设值时,将其分解成两次帧进行交互:由主MCU通过第一帧交互通知从MCU启动功能执行,从MCU执行完功能之后,通过事件通知机制知会主MCU,主MCU在事件通知机制中获取的事件内容中得到从MCU的功能执行结果,即对应第二次帧交互;
主从切换模块,包括主MCU发起模块或从MCU发起模块;所述主MCU发起模块,用于通过主MCU发送指令帧通知从MCU切换到主模式,从MCU收到指令后,先将GPIO由输出修改为输入中断,然后向主MCU发送模式切换完成的应答帧,主MCU收到应答帧后,再将GPIO由输入中断修改为输出,完成主从切换;所述从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写入方式进行大数据传输过程。
5.根据权利要求4所述的一种利用GPIO优化MCU通信的系统,其特征在于:两所述MCU之间通过串口连接,所述串口连接包括用于数据接收和发送的引脚RXD和TXD的连接,以及用于流控的引脚CTS和RTS的连接。
6.根据权利要求4所述的一种利用GPIO优化MCU通信的系统,其特征在于:将从MCU的GPIO初始化设置为输出逻辑1电平;
所述事件通知模块进一步包括:用于将主MCU配置GPIO为中断使能,中断触发方式为下降沿,从MCU通过将GPIO电平由逻辑1修改为逻辑0产生一个下降沿的信号,主MCU因为下降沿的GPIO信号变化触发中断处理,中断处理的内容是主MCU发送一个事件查询帧,从MCU应答具体的事件内容,若从MCU收到事件查询帧的时候,已经积累了多个事件,则从MCU将多个事件内容组合成一个应答帧返回给主MCU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810473877.0A CN108710597B (zh) | 2018-05-17 | 2018-05-17 | 一种利用gpio优化mcu通信的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810473877.0A CN108710597B (zh) | 2018-05-17 | 2018-05-17 | 一种利用gpio优化mcu通信的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108710597A CN108710597A (zh) | 2018-10-26 |
CN108710597B true CN108710597B (zh) | 2022-01-28 |
Family
ID=63869113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810473877.0A Active CN108710597B (zh) | 2018-05-17 | 2018-05-17 | 一种利用gpio优化mcu通信的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108710597B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110493338B (zh) * | 2019-08-20 | 2022-09-13 | 深圳柚石物联技术有限公司 | 一种设备互控方法、系统及计算机可读存储介质 |
CN111432386B (zh) * | 2020-03-30 | 2021-08-27 | 歌尔科技有限公司 | 蓝牙耳机的连接切换方法、装置、设备及存储介质 |
CN111984581B (zh) * | 2020-08-14 | 2022-05-10 | 广州邦讯信息系统有限公司 | 一种基于Linux的SPI总线主从设备通讯系统、方法及装置 |
CN112069103A (zh) * | 2020-09-07 | 2020-12-11 | 歌尔科技有限公司 | 一种多模块与主机通信的方法及系统 |
CN112817895B (zh) * | 2021-01-28 | 2022-04-19 | 广州安凯微电子股份有限公司 | 一种基于gpio的通信方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150103905A (ko) * | 2014-03-04 | 2015-09-14 | 주식회사 만도 | 듀얼 mcu에서 마스터 mcu 및 슬레이브 mcu 전환 방법 및 장치 |
CN107832250A (zh) * | 2017-11-02 | 2018-03-23 | 北京中电华大电子设计有限责任公司 | 一种基于spi的主从通讯时序方法及可靠传输方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615573B (zh) * | 2015-01-13 | 2018-01-26 | 大唐移动通信设备有限公司 | 一种通信方法及装置 |
CN106155960B (zh) * | 2016-06-29 | 2019-03-22 | 广州慧睿思通信息科技有限公司 | 基于gpio握手和edma的uart串口通信方法 |
CN106375077A (zh) * | 2016-08-29 | 2017-02-01 | 宁波三星医疗电气股份有限公司 | Si4463芯片采用gpio模式实现数据传输的方法 |
CN107203484B (zh) * | 2017-06-27 | 2020-06-16 | 北京计算机技术及应用研究所 | 一种基于FPGA的PCIe与SRIO总线桥接系统 |
-
2018
- 2018-05-17 CN CN201810473877.0A patent/CN108710597B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150103905A (ko) * | 2014-03-04 | 2015-09-14 | 주식회사 만도 | 듀얼 mcu에서 마스터 mcu 및 슬레이브 mcu 전환 방법 및 장치 |
CN107832250A (zh) * | 2017-11-02 | 2018-03-23 | 北京中电华大电子设计有限责任公司 | 一种基于spi的主从通讯时序方法及可靠传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108710597A (zh) | 2018-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108710597B (zh) | 一种利用gpio优化mcu通信的方法及系统 | |
CN113806116A (zh) | 基于Linux系统的协议栈数据传输方法、计算机设备和存储介质 | |
JP2006072591A (ja) | 仮想計算機制御方法 | |
US6868067B2 (en) | Hybrid agent-oriented object model to provide software fault tolerance between distributed processor nodes | |
JP3454297B2 (ja) | ネットワーク・スイッチ間のリンクをテストするための方法および装置 | |
CN108027725A (zh) | 指导终端设备操作的方法、装置和设备 | |
US7200781B2 (en) | Detecting and diagnosing a malfunctioning host coupled to a communications bus | |
CN114328357A (zh) | 用于裸芯的互联通信方法、系统和集成合封芯片 | |
CN108959153B (zh) | 一种一体机、数据续传的方法、装置、设备和存储介质 | |
CN115941382A (zh) | 一种spi通信的流控方法、装置、终端设备及存储介质 | |
CN113992740B (zh) | 一种基于自主可控的中间件及数据传输方法 | |
CN111615819B (zh) | 一种传输数据的方法和装置 | |
CN113242284A (zh) | 通信方法、装置及通信系统 | |
CN111597017B (zh) | 双微处理器同步控制方法 | |
CN108600044B (zh) | 一种接口状态获取方法、装置及设备 | |
CN111858177A (zh) | 进程间通信的异常修复方法、装置、电子设备及存储介质 | |
CN116974636B (zh) | 多路互联系统及其总线接口初始化方法、装置 | |
US20030145129A1 (en) | Protocol driver application programming interface for operating systems | |
CN112416445A (zh) | 确定板卡主备的设备和方法 | |
KR950010483B1 (ko) | 전전자교환기의 신호단말망에 접속된 신호버스정합보드에서의 메시지 송신방법 | |
CN111124638B (zh) | 一种嵌入式Linux系统下多机程序调度系统及实现方法 | |
JPH11249909A (ja) | マルチタスクos上でのプロセス再起動方法 | |
JP6126259B1 (ja) | 監視装置、監視方法、及びプログラム | |
KR940007156B1 (ko) | 통신 네트워크상에서의 프로세서 동기화 기법 | |
CN113836068A (zh) | PCIe显卡的控制方法、装置、服务器及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |