一种基于串行通讯接口方式的MCU间通讯协议 技术领域
本发明涉及一种基于串行通讯接口方式的两个MCU间的通讯协议。
背景技术
在现有的电子设备中,当需要在两个或多个设备之间或设备中的两个MCU进行信息传递时,一种方式是,使用电平信息进行状态信息的交换,不仅占用了宝贵的MCU I/O端口资源,而且可以进行传递的信息状态有限;在比较复杂的系统中,使用I/O端口的信息传输方式会占用很多地MCU查询时间,实现困难,而且系统的可靠性低;导致功能实现受到极大的限制,而且成本较高;另一种方式是,使用现有的I2C协议,由于消费电子设备MCU信息处理能力有限,只能传送单字节或少数几个字节的信息,而在传送多字节信息时,由于MCU软件系统中的其他中断处理进程(如:红外遥控、定时器、OSD、出错处理等)会干扰I2C通讯进程,导致I2C通讯不稳定,无法完成多字节信息的传送。
发明内容
为了克服现有两个MCU进行信息传递时,现有技术的不足,本发明提供一种串行通讯接口的软件实现方式和通讯命令编码协议,用于使用两个MCU的电子设备或多个电子设备之间进行通讯控制。
为实现上述目的,本发明采取以下技术方案。
使用串行通讯方式连接两个MCU,将MCU需要传送的信息打包后进行传递。软件控制方式是,将软件需要传送的信息进行固定编码,预先定义每个比特/字节的状态以及每种状态的含义,由串行通讯接口进行传送,数据包的编码可在同一根线上同时传送发送和接收数据,也可以将发送和接收数据分开,独立在两根数据线上单向传送。
数据包的传送时序有两种方式:
(a).固定时序传送方式:在软件运行的每个主周期将整个数据包传送和接收一次,然后对接收的信息包数据进行分析处理,这种方式流程控制比较清楚,只需要一根由主控MCU(110)进行控制传送请求的接口线,软件实现方便。
(b).可变时序传送方式:在软件运行中需要进行数据传送时才进行数据的请求和传送,该种传送通讯方式没有主控MCU和从控MCU的差别,但需要两个MCU协调数据传送请求发生碰撞的情况。
本发明的有益效果是使电子产品和系统能够具备比较复杂和完善的功能,并易于操作,可靠性高,成本也较低。
附图说明
图1是本发明两个MCU之间的串行接口示意图;
图2是本发明两个MCU之间DATA单向传送的串行接口示意图;
图3是本发明数据包的固定编码方式示意图;
图4是本发明固定时序数据传送方式示意图;
图5是本发明一个实施例数据包的固定编码方式示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
图1是本发明两个MCU之间的串行接口示意图。在主控MCU 110和从控MCU 111之间设置串行接口为,主控MCU 110发送给从控MCU 111的时钟信号CLOCK的接口,触发信号STROBE的接口,以及在主控MCU 110和从控MCU 111之间传送数据信号DATA的接口。
图2是本发明两个MCU之间DATA单向传送的串行接口示意图。在主控MCU 110和从控MCU 111之间传送数据信号DATA为两个单向传送的接口。
图3是本发明数据包的固定编码方式示意图。预先定义每个比特/字节的状态以及每种状态的含义,在以后每个数据传送周期中,数据包的编码固定不变(每个信息位的定义不变)。
图4是本发明固定时序数据传送方式示意图。显示了数据包传送时,主控MCU 110发送CLOCK信号、STROBE信号和两个MCU分别传送各自的数据DATA之间的关系。
图5是本发明一个实施例数据包的固定编码方式示意图。定义这个数据包每个比特/字节的状态以及每种状态的含义如下:
第一字节的0、1比特定义为立体声方式:00为MONO,01为L,10为R,11为STEREO;3比特定义为POWER状态:0为ON,1为OFF;4比特定义为PLAY状态:0为STOP,1为RUN;
第三字节为计数器读数值。
在数据传送周期中,数据包的编码固定不变(每个信息位的定义不变)。
下面具体说明传送这个数据包的两种方式。
(a).固定时序传送方式:如图4所示,在主循环的固定时间点到达后,主控MCU 110先将STROBE信号置为有效,然后等待一定的时间(保护间隙),以便从控MCU 111检测到数据传送开始的信号,并作好接收和发送数据的准备,保护间隙完后,主控MCU 110发送CLOCK信号(也可在整个主循环周期一直保持CLOCK信号的传送),两个MCU分别传送各自的数据DATA。
(b).可变时序传送方式:该种传送方式是为了减少数据的通讯量,仅在需要传送的信息状态有变化时才进行数据的通讯交换,工作方式与固定时序传送方式类似,但没有主控MCU和从控MCU的差别,具体如下:
如图4所示,在需要传送的信息状态有变化时,需要发送MCU先检测是否正在传送数据,若通讯口忙,则等待一定时间间隙后(或下一个主循环周期)再检测通讯口状态,若通讯口空闲,则将STROBE信号置为有效,然后等待一定的时间(保护间隙),以便接收MCU检测到数据传送开始的信号,并作好接收数据的准备,保护间隙完后,由其中一MCU发送CLOCK信号(也可在整个主循环周期一直保持CLOCK信号的传送),需要发送数据的MCU传送数据包,另一MCU接收数据DATA。