一种单片机间的双向握手通讯电路和方法技术

技术编号:25550623 阅读:37 留言:0更新日期:2020-09-08 18:49
本发明专利技术公开了一种单片机间的双向握手通讯电路和方法,包括单片机A、单片机B、第一D触发器、第二D触发器和第三D触发器,所述单片机A分别连接第一D触发器的输入端、第二D触发器的输入端和第三D触发器的输入端,第一D触发器的输出端、第二D触发器的输出端和第三D触发器的输出端均与单片机B相连接,第三D触发器的输出端还连接单片机A;本发明专利技术的有益效果是:1.通过双向握手机制,确保下位机在执行指令时,上位机处于等待状态,避免了通讯冲突。2.优化了通讯逻辑,使用起来简单方便。3.无需独占单片机的并口资源,支持并口的分时复用。4.支持挂载多个从机,从机之间可同步工作,互不冲突。

【技术实现步骤摘要】
一种单片机间的双向握手通讯电路和方法
本专利技术涉及单片机
,具体是一种单片机间的双向握手通讯电路和方法。
技术介绍
在一些较复杂的工程中,往往需要用到两个或多个单片机来共同实现目标功能,这就需要实现单片机之间的通讯功能。在某些情况下(如传输的信息密度较小,或对时间紧凑度要求不高),通过常规的UART、RS232/485、I2C、SPI等成熟的通讯协议即可实现目标功能;但是在传输信息密度较大、指令执行时间较长,而又对系统运行速度要求较高的情况下,仅靠常规的通讯协议往往就会出现单片机之间通讯冲突的问题,从而不能满足使用要求。现有技术如申请号为201210178802.2的单片机全双工通讯装置及通讯方法:该方案仅使用两个IO口进行通讯,其原理类似于利用IO口模拟常规的UART口,通过输出和接收串行波形来进行通讯。其存在的问题在于:由于其利用IO口模拟常规的UART口,因此为了保证稳定性,其通讯速度必然受到限制,在该专利的例子中,一个通讯周期大约在10ms量级。这一通讯速率对于简单通讯而言是够用的,但是对于大量频繁的通讯而言是远远不够的。另外,此方案也没有解决关于通讯冲突问题。
技术实现思路
本专利技术的目的在于提供一种单片机间的双向握手通讯电路和方法,以解决上述
技术介绍
中提出的问题。为实现上述目的,本专利技术提供如下技术方案:一种单片机间的双向握手通讯电路,包括单片机A、单片机B、第一D触发器、第二D触发器和第三D触发器,所述单片机A分别连接第一D触发器的输入端、第二D触发器的输入端和第三D触发器的输入端,第一D触发器的输出端、第二D触发器的输出端和第三D触发器的输出端均与单片机B相连接,第三D触发器的输出端还连接单片机A。作为本专利技术的进一步技术方案:所述单片机A通过并口总线连接第一D触发器。作为本专利技术的进一步技术方案:所述单片机A通过并口总线连接第二D触发器。作为本专利技术的进一步技术方案:所述单片机A通过WR接口、CS接口连接第三D触发器。作为本专利技术的进一步技术方案:所述单片机A为数据发送端,单片机B为数据接收端。一种单片机间的双向握手通讯方法,采具体步骤如下:单片机A的CS片选信号置低,施加到第三D触发器的D端,单片机A检测BUSY引脚,若其为1,则执行步骤4;若其为0,则等待,单片机A将地址和数据通过并口总线发送到第一D触发器的D端,然后A发送一个WR信号,地址和数据被锁存到第一D触发器的Q端;同时片选信号WR被锁存至第三第三D触发器的Q端,使BUSY=0,单片机B此时若处于空闲状态,查询到BUSY=0后,即可读取第一D触发器的Q端的数据,读取结束后发送CLEAR脉冲,通过第三D触发器的SET功能将BUSY重新置1,表示数据已读取完毕,然后根据所读取的数据执行相关指令;若单片机B此时正处于忙状态,则等待其结束忙状态后再执行此操作。作为本专利技术的进一步技术方案:初始状态下,BUSY=1,WR=1,CS=1,CLEAR=1。与现有技术相比,本专利技术的有益效果是:1.通过双向握手机制,确保下位机在执行指令时,上位机处于等待状态,避免了通讯冲突。2.优化了通讯逻辑,大大降低了使用时的逻辑复杂度,使用起来简单方便。3.由于WR是事实上的片选信号,因此本电路无需独占单片机的并口资源,且支持并口的分时复用。另外,仅靠单片机A、B的IO口,也可以实现查询B端指令是否执行完毕的功能。但相比于纯IO口的通讯方式,本方法的优势还在于:4.支持挂载多个从机,从机之间可同步工作,互不冲突。5.由于使用了D触发器,因此能够锁存一级数据,使整个通讯过程几乎没有冗余等待时间,提高数据传输效率。6.所需握手次数较少,逻辑简单明了,易于使用。附图说明图1为本专利技术的硬件连接框架示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参阅图1,实施例1:一种单片机间的双向握手通讯电路,包括单片机A、单片机B、第一D触发器、第二D触发器和第三D触发器,所述单片机A分别连接第一D触发器的输入端、第二D触发器的输入端和第三D触发器的输入端,第一D触发器的输出端、第二D触发器的输出端和第三D触发器的输出端均与单片机B相连接,第三D触发器的输出端还连接单片机A。单片机A通过并口总线连接第一D触发器。单片机A通过并口总线连接第二D触发器。单片机A通过WR接口、CS接口连接第三D触发器。单片机A为数据发送端,单片机B为数据接收端。第一D触发器和第二D触发器不带RS功能,第三D触发器带有RS功能(但R端拉高,即R功能始终不生效)。单片机A端的WR、CS、BUSY和单片机B端的CLEAR、BUSY为普通IO口。本专利技术还公开了一种单片机间的双向握手通讯方法,采用上述电路,具体步骤如下:初始(空闲)状态下,BUSY=1,WR=1,CS=1,CLEAR=1,单片机A的CS片选信号置低,施加到第三D触发器的D端,单片机A检测BUSY引脚,若其为1,则执行步骤4;若其为0,则等待,单片机A将地址和数据通过并口总线发送到第一D触发器的D端,然后A发送一个WR信号,地址和数据被锁存到第一D触发器的Q端;同时片选信号WR被锁存至第三第三D触发器的Q端,使BUSY=0,单片机B此时若处于空闲状态,查询到BUSY=0后,即可读取第一D触发器的Q端的数据,读取结束后发送CLEAR脉冲,通过第三D触发器的SET功能将BUSY重新置1,表示数据已读取完毕,然后根据所读取的数据执行相关指令;若单片机B此时正处于忙状态,则等待其结束忙状态后再执行此操作。其中:图1中所示的BUSY信号同时作为单片机A和B的输入。当BUSY=0时,表示B端已接收本条指令,允许A端发送下一条指令。图1中所示的B端接收到指令后,发送的CLEAR信号仅为脉冲,脉冲结束后B端BUSY从0变化至1,然后B端开始执行指令。图1中所示的CLEAR是相当于B端取走指令的标志。根据逻辑,如果前一个指令没有执行完毕,B端就不会取走下一个指令,A端也就不会继续发送指令,从而避免通讯冲突。整个通讯过程中,清除B端忙状态的工作通过B端的CLEAR~SD信号完成,而不需要通过改变CS的电平来完成,因此CS信号在整个通讯过程中只需置低即可,从而实现事实上的片选功能。整个通讯过程具有一级缓存,即B端正在执行指令1的同时,Q端已备好指令2,A端则准备发送指令3。具体通讯时序流程举例如下:A端输出指令1并发送WR→指令1锁存到Q端,BUSY清0→B端检测到BUSY=0信号,取走指令1并发送CLEAR脉冲,将BUSY置1→A端检测到BUSY=1,输出指令2并发送WR→指令2锁存到Q端,BUSY清0→B端仍在处理指令1→A端检测到BUSY=0,继续等待→B端指令1处理完毕→B端取走本文档来自技高网...

【技术保护点】
1.一种单片机间的双向握手通讯电路,包括单片机A、单片机B、第一D触发器、第二D触发器和第三D触发器,其特征在于,所述单片机A分别连接第一D触发器的输入端、第二D触发器的输入端和第三D触发器的输入端,第一D触发器的输出端、第二D触发器的输出端和第三D触发器的输出端均与单片机B相连接,第三D触发器的输出端还连接单片机A。/n

【技术特征摘要】
1.一种单片机间的双向握手通讯电路,包括单片机A、单片机B、第一D触发器、第二D触发器和第三D触发器,其特征在于,所述单片机A分别连接第一D触发器的输入端、第二D触发器的输入端和第三D触发器的输入端,第一D触发器的输出端、第二D触发器的输出端和第三D触发器的输出端均与单片机B相连接,第三D触发器的输出端还连接单片机A。


2.根据权利要求1所述的一种单片机间的双向握手通讯电路,其特征在于,所述单片机A通过并口总线连接第一D触发器。


3.根据权利要求2所述的一种单片机间的双向握手通讯电路,其特征在于,所述单片机A通过并口总线连接第二D触发器。


4.根据权利要求1所述的一种单片机间的双向握手通讯电路,其特征在于,所述单片机A通过WR接口、CS接口连接第三D触发器。


5.根据权利要求1所述的一种单片机间的双向握手通讯电路,其特征在于,所述单片机A为数据发送端,单片机B为数据...

【专利技术属性】
技术研发人员:贾尧贾先德
申请(专利权)人:合肥玉卓光电科技有限公司
类型:发明
国别省市:安徽;34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1