CN106227691A - 一种基于mcu之间的对等双向单线串行通信协议 - Google Patents
一种基于mcu之间的对等双向单线串行通信协议 Download PDFInfo
- Publication number
- CN106227691A CN106227691A CN201610649146.8A CN201610649146A CN106227691A CN 106227691 A CN106227691 A CN 106227691A CN 201610649146 A CN201610649146 A CN 201610649146A CN 106227691 A CN106227691 A CN 106227691A
- Authority
- CN
- China
- Prior art keywords
- communication
- mcu
- recipient
- sender
- reciprocity
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于MCU之间的对等双向单线串行通信协议,本发明以尽量少占用MCU的硬件资源方式实现两个MCU之间的半双工串行通信;以接收方的应答脉冲作为发送方发送1位数据的起始点,通信稳定可靠;以字节为基本通信单位,对MCU的其他程序,包括中断服务程序等影响较小,本发明的MCU是以对等的关系参与通信的,因此在引入通信总线仲裁机制后,可以实现多MCU之间的通信。本发明将两个MCU各自的一个IO口连接,再在该连接点接一只电阻器,电阻器的另一端接到电源的正极。
Description
技术领域
本发明属于数据通信领域,尤其涉及一种基于MCU之间的对等双向单线串行通信协议。
背景技术
在双MCU系统中实现两个MCU之间的通信,可供选用的方案有:
利用MCU自带的通信接口。该方案简单,技术成熟,通信可靠。但是MCU通常只有一个通信接口,这一方案将使双MCU系统失去与其他系统或外部设备的通信能力。如果组成双MCU系统是为了增加系统的通信接口数量,显然不能使用这一方案。
利用二端口RAM(芯片),这种方案不占用MCU的通信接口,但这种方案需要占用较多的MCU的IO口(这里,IO口是指MCU的一个输入输出共用的引脚(线),下同),同时也增加了双MCU系统的硬件开销。
利用系统内两个MCU共享外部RAM(芯片)来实现两个MCU之间的信息交换。这种方案技术复杂,对于没有外部RAM的系统则不能使用。
利用现成的I2C通信协议,I2C通信协议是飞利浦(Philips)公司发明的一种简单的双向二线制串行通信总线,技术成熟,通信可靠,不占用MCU的通信接口。I2C协议需要占用MCU的两个IO口,同时l2C协议通信分主机和从机,也就是两个MCU之间不是对等的关系,这限制了利用I2C通信协议进行通信在一些场合的应用。
发明内容
本发明所要解决的技术问题是针对背景技术的不足提供了一种基于MCU之间的对等双向单线串行通信协议。
本发明为解决上述技术问题采用以下技术方案:
一种基于MCU之间的对等双向单线串行通信协议,包含如下步骤:
步骤1,启动通信的发送方输出低电平,通知通信的接收方开始进行一次通信;
步骤2,通信的发送方输出低电平保持一段时间后,输出高电平,然后判断两个MCU之间的连接点是否为高电平,若不是则退出本次通信并给出出错标记;若是则继续进行步骤3;
步骤3,通信的发送方关中断,以有限次循环查询方式等待通信的接收方应答;
步骤4,通信的接收方在主循环程序中查询到通信的发送方发出的低电平后,以有限次循环查询方式等待通信的发送方输出高电平;
步骤5,通信的接收方查询到通信的发送方输出的高电平后,关中断,然后输出一个低电平应答脉冲,脉冲宽度为6Tm;
步骤6,通信的发送方查询到通信的接收方的应答脉冲后,输出1位数据,数据脉冲宽度为9Tm,然后输出高电平,再以有限次循环查询方式等待通信的接收方应答;
步骤7,通信的接收方延时5Tm,读1位数据,再延时8Tm;
步骤8,通信的接收方输出一个低电平应答脉冲,宽脉冲度为6Tm;
步骤9,重复步骤6至步骤9,一直到通信的发送方输出以及通信的接收方接收了8位数据为止;
步骤10,通信的发送方和通信的接收方分别开中断;
步骤11,通信的发送方判断发出的这个字节的数据是否是结束符:如果是,则本次通信结束;如果不是,则重复步骤1至步骤11;通信的接收方判断收到的这个字节的数据是否是结束符:如果是,则本次通信结束;如果不是,则重复步骤4至步骤11。
作为本发明一种基于MCU之间的对等双向单线串行通信协议的进一步优选方案,在未进行通信时,两个MCU之间的连接点为高电平状态。
作为本发明一种基于MCU之间的对等双向单线串行通信协议的进一步优选方案,在步骤2中,设通信的发送方输出低电平保持的时间,大于步骤4中接收方主循环程序完成一次循环的所需的最长时间。
作为本发明一种基于MCU之间的对等双向单线串行通信协议的进一步优选方案,设Tm为MCU完成一个基本操作的时间,设发送方循环查询到接收方的应答脉冲所需的时间最长为4Tm,设发送方输出1位数据所需的时间为3Tm。
作为本发明一种基于MCU之间的对等双向单线串行通信协议的进一步优选方案,在步骤3中,有限次循环查询方式即如果循环次数到,通信的接收方仍没有应答,则退出本次通信,并给出出错标记。
作为本发明一种基于MCU之间的对等双向单线串行通信协议的进一步优选方案,以字节为基本通信单位,且发送方和接收方在一个字节数据通信期间关MCU中断,在一个字节数据通信完成之后开MCU中断。
作为本发明一种基于MCU之间的对等双向单线串行通信协议的进一步优选方案,首先启动通信的MCU为通信的发送方,另一个MCU为通信的接收方。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1、本发明以尽量少占用MCU的硬件资源方式实现两个MCU之间的半双工串行通信;
2、本发明以接收方的应答脉冲作为发送方发送1位数据的起始点,通信稳定可靠;
3、本发明以字节为基本通信单位,对MCU的其他程序,包括中断服务程序等影响较小;
4、本发明的MCU是以对等的关系参与通信的,因此在引入通信总线仲裁机制后,可以实现多MCU之间的通信。
附图说明
图1是本发明的电路结构原理图;
图2是本发明传输一位数据的时序图。
具体实施方式
下面结合附图对本发明的技术方案做进一步的详细说明:
如图1所示, 本发明对两个MCU之间的电路连接要求是:将两个MCU各自的一个IO口连接,再在该连接点接一只电阻器,电阻器的另一端连接到电源正极。对两个MCU的要求是:在通信相关指令执行时间及延时时间上,通过技术处理可以达成一致,或为同型号、同参数的MCU。对两个MCU用于相互连接的IO口的要求是:该IO口在输出高电平时,以及在输入时,具有“高阻态”或具有“弱上拉”状态。
本发明实现两个MCU之间的半双工串行通信,是以字节为基本通信单位。一次通信以起始符(1个字节)开始,以结束符(1个字节)结束。在起始符与结束符之间为若干个数据字节,数据字节的数量不作规定,由实际需要而定。为提高通信的可靠性,在结束符之前,可以加入校验字节。
本发明在实际实施时,需要考虑解决如下问题:
1.接收方能可靠查询到发送方发出的开始一次通信的低电平信号的解决方案是:
(1)接收方在主循环程序中,随主循环查询连接点是否有低电平信号。
(2)发送方发出的开始一次通信的低电平信号的保持时间,大于接收方主循环程序完成一次循环所需要的最长时间。
2.排除MCU中断服务程序与通信程序相互影响的解决方案是:在建立通信连接后,关MCU的中断,发送、接收完1个字节数据后,开MCU中断。由于收、发1个字节数据的时间很短,关中断对MCU中断服务程序的执行影响较小(有短时延后)。
3.防止通信出错时,通信程序陷入无穷循环状态的解决方案是:在所有需要程序等待(某个状态)的地方,都以“有限次循环查询方式”等待,具体做法见下步骤3。
本发明实现两个MCU之间的半双工串行通信,其过程如下:
步骤1,启动通信的发送方输出低电平,通知通信的接收方开始进行一次通信;
步骤2,通信的发送方输出低电平保持一段时间后,输出高电平,(这里,设通信的发送方输出低电平保持的时间大于步骤4中接收方主循环程序完成一次循环所需的最长时间),然后判断两个MCU之间的连接点是否为高电平,若不是则退出本次通信并给出出错标记;若是则继续进行步骤3;
步骤3,通信的发送方开中断,以有限次循环查询方式等待通信的接收方应答;“有限次循环查询方式”的意思是:如果循环次数到,通信的接收方仍没有应答,则退出本次通信,并给出出错标记,下同;
步骤4,通信的接收方在主循环程序中查询到通信的发送方发出的低电平后,以有限次循环查询方式等待通信的发送方输出高电平;
步骤5,通信的接收方查询到通信的发送方输出的高电平后,关中断,输出一个低电平应答脉冲,脉冲宽度为6Tm(设Tm为MCU完成一个基本操作的时间,下同);
步骤6,通信的发送方查询到通信的接收方的应答脉冲后,输出1位数据,数据脉冲宽度为9Tm,然后输出高电平,再以有限次循环查询方式等待通信的接收方应答;
步骤7,通信的接收方延时5Tm(这里,设通信的发送方循环查询到通信的接收方的应答脉冲最长需要4Tm时间),读1位数据,再延时8Tm;
步骤8,通信的接收方输出一个低电平应答脉冲,宽脉冲度为6Tm;
步骤9,重复步骤6至步骤9,一直到通信的发送方输出以及通信的接收方接收了8位数据为止;
步骤10,通信的发送方和通信的接收方分别开中断;
步骤11,通信的发送方判断发出的这个字节的数据是否是结束符:如果是,则本次通信结束;如果不是,则重复步骤1至步骤11;通信的接收方判断收到的这个字节的数据是否是结束符:如果是,则本次通信结束;如果不是,则重复步骤4至步骤11。
从图2可知,图2是本发明传输一位数据的时序图:当发送方查询到接收方的应答脉冲所用时间较短时,发送的数据脉冲可以与接收方应答脉冲有部分重叠,但并不影响通信正常进行。
综上所述:本发明以尽量少占用MCU的硬件资源方式实现两个MCU之间的半双工通信;
本发明以接收方的应答脉冲作为发送方发送1位数据的起始点,通信稳定可靠;本发明以字节为基本通信单位,对MCU的其他程序,包括中断服务程序等影响较小;本发明的MCU是以对等的关系参与通信的,因此在引入通信总线仲裁机制后,可以实现多MCU之间的通信。
本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (7)
1.一种基于MCU之间的对等双向单线串行通信协议,其特征在于:包含如下步骤,
步骤1,启动通信的发送方输出低电平,通知通信的接收方开始进行一次通信;
步骤2,通信的发送方输出低电平,保持一段时间后输出高电平,然后判断两个MCU之间的连接点是否为高电平,若不是则退出本次通信并给出出错标记;若是则继续进行步骤3;
步骤3,通信的发送方关中断,以有限次循环查询方式等待通信的接收方应答;
步骤4,通信的接收方在主循环程序中查询到通信的发送方发出的低电平后,以有限次循环查询方式等待通信的发送方输出高电平;
步骤5,通信的接收方查询到通信的发送方输出的高电平后,关中断,输出一个低电平应答脉冲,脉冲宽度为6Tm;
步骤6,通信的发送方查询到通信的接收方的应答脉冲后,输出1位数据,数据脉冲宽度为9Tm,然后输出高电平,再以有限次循环查询方式等待通信的接收方应答;
步骤7,通信的接收方延时5Tm,读1位数据,再延时8Tm;
步骤8,通信的接收方输出一个低电平应答脉冲,宽脉冲度为6Tm;
步骤9,重复步骤6至步骤9,一直到通信的发送方输出以及通信的接收方接收了8位数据为止;
步骤10,通信的发送方和通信的接收方分别开中断;
步骤11,通信的发送方判断发出的这个字节的数据是否是结束符:如果是,则本次通信结束;如果不是,则重复步骤1至步骤11;通信的接收方判断收到的这个字节的数据是否是结束符:如果是,则本次通信结束;如果不是,则重复步骤4至步骤11。
2.根据权利要求1所述的一种基于MCU之间的对等双向单线串行通信协议,其特征在于:在未进行通信时,两个MCU之间的连接点为高电平状态。
3.根据权利要求1所述的一种基于MCU之间的对等双向单线串行通信协议,其特征在于:在步骤2中,设通信的发送方输出低电平保持的时间,大于步骤4中接收方主循环程序完成一次循环所需的最长时间。
4.根据权利要求1所述的一种基于MCU之间的对等双向单线串行通信协议,其特征在于:设Tm为MCU完成一个基本操作的时间;在步骤6中,设发送方循环查询到接收方的应答脉冲所需要的时间最长为4Tm,设发送方输出一位数据所需要的时间为3Tm。
5.根据权利要求1所述的一种基于MCU之间的对等双向单线串行通信协议,其特征在于:在步骤3中,有限次循环查询方式即如果循环次数到,通信的接收方仍没有应答,则退出本次通信,并给出出错标记。
6.根据权利要求1所述的一种基于MCU之间的对等双向单线串行通信协议,其特征在于:以字节为基本通信单位,且发送方和接收方在一个字节数据通信期间关MCU中断,在一个字节数据通信完成之后开MCU中断。
7.根据权利要求1所述的一种基于MCU之间的对等双向单线串行通信协议,其特征在于:首先启动通信的MCU为通信的发送方,另一个MCU为通信的接收方。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610649146.8A CN106227691B (zh) | 2016-08-09 | 2016-08-09 | 一种基于mcu之间的对等双向单线串行通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610649146.8A CN106227691B (zh) | 2016-08-09 | 2016-08-09 | 一种基于mcu之间的对等双向单线串行通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227691A true CN106227691A (zh) | 2016-12-14 |
CN106227691B CN106227691B (zh) | 2019-03-15 |
Family
ID=57548634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610649146.8A Active CN106227691B (zh) | 2016-08-09 | 2016-08-09 | 一种基于mcu之间的对等双向单线串行通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227691B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943735A (zh) * | 2017-12-14 | 2018-04-20 | 闻泰通讯股份有限公司 | 连接电路和电子设备 |
CN113509061A (zh) * | 2020-04-10 | 2021-10-19 | 杭州九阳小家电有限公司 | 一种食品加工机 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1561070A (zh) * | 2004-02-23 | 2005-01-05 | 四川长虹电器股份有限公司 | 一种基于串行通讯接口方式的mcu间通讯协议 |
CN101179398A (zh) * | 2007-09-28 | 2008-05-14 | 深圳市和而泰电子科技有限公司 | 一种单线双向通信电路 |
CN201724980U (zh) * | 2009-04-03 | 2011-01-26 | 深圳市锐能微科技有限公司 | 一种具有单线双向串行通讯接口的电能计量芯片 |
US20140337549A1 (en) * | 2011-08-29 | 2014-11-13 | Robert Bosch Gmbh | Method and device for checking the correct functioning of a serial data transmission |
CN104834625A (zh) * | 2015-05-28 | 2015-08-12 | 华帝股份有限公司 | 一种两设备之间单线通讯装置及其双向通讯控制方法 |
-
2016
- 2016-08-09 CN CN201610649146.8A patent/CN106227691B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1561070A (zh) * | 2004-02-23 | 2005-01-05 | 四川长虹电器股份有限公司 | 一种基于串行通讯接口方式的mcu间通讯协议 |
CN101179398A (zh) * | 2007-09-28 | 2008-05-14 | 深圳市和而泰电子科技有限公司 | 一种单线双向通信电路 |
CN201724980U (zh) * | 2009-04-03 | 2011-01-26 | 深圳市锐能微科技有限公司 | 一种具有单线双向串行通讯接口的电能计量芯片 |
US20140337549A1 (en) * | 2011-08-29 | 2014-11-13 | Robert Bosch Gmbh | Method and device for checking the correct functioning of a serial data transmission |
CN104834625A (zh) * | 2015-05-28 | 2015-08-12 | 华帝股份有限公司 | 一种两设备之间单线通讯装置及其双向通讯控制方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943735A (zh) * | 2017-12-14 | 2018-04-20 | 闻泰通讯股份有限公司 | 连接电路和电子设备 |
CN113509061A (zh) * | 2020-04-10 | 2021-10-19 | 杭州九阳小家电有限公司 | 一种食品加工机 |
Also Published As
Publication number | Publication date |
---|---|
CN106227691B (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI628545B (zh) | 計算裝置、通用序列匯流排埠以及操作通用序列匯流排的方法 | |
US20150103845A1 (en) | Synchronization time-division multiplexing bus communication method adopting serial communication interface | |
CN101005376A (zh) | 一种实现业务板和主控板通信的装置和方法 | |
JP6878300B2 (ja) | マルチモード変調を用いる向上した仮想gpio | |
CN104484301B (zh) | 一种基于fpga具有自识别功能的io总线装置 | |
CN106200454B (zh) | 一种多mcu的通信系统及方法 | |
CN105183690B (zh) | 一种基于spi总线通信协议的双缓冲数据传输方法 | |
CN111277478B (zh) | 一种基于不同波特率从设备的rs485总线复用控制方法 | |
CN107741915A (zh) | 一种基于sdio接口的fpga板级通信装置及通信方法 | |
CN105159194A (zh) | Rs-485串口接收发送数据切换电路及切换方法 | |
CN108011692A (zh) | 一种用于单片机的数据通信方法 | |
CN107239422A (zh) | 一种低功耗模式下ttl串口无损接收突发数据的方法 | |
US20160371157A1 (en) | Serial interface with bit-level acknowledgement and error correction | |
CN105373511B (zh) | 一种与多个光模块可同时通信的装置和方法 | |
CN106227691A (zh) | 一种基于mcu之间的对等双向单线串行通信协议 | |
CN109062834A (zh) | 基于dma的spi通讯方法、电子设备、存储介质、装置 | |
CN102508799A (zh) | 自动控制方法、系统及usb设备 | |
CN204190740U (zh) | 一种单线制串行通讯接口电路 | |
CN106649184B (zh) | 适用于星载电子设备的异步通信串口指令快速应答方法 | |
CN108132898A (zh) | 多路通讯控制方法及通讯盒 | |
CN107370651A (zh) | 一种spi从机之间的通信方法 | |
CN104144137B (zh) | 一种高速lvds串行同步通讯控制器 | |
CN110471882A (zh) | 一种单总线通信电路及方法 | |
CN210804414U (zh) | 一种通讯接口可复用的电路 | |
CN210270888U (zh) | 一种单总线通信电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |