一种IIC存储芯片共用电路、电子装置及其备用电路切换方法与流程

文档序号:16781166发布日期:2019-02-01 19:08阅读:517来源:国知局
一种IIC存储芯片共用电路、电子装置及其备用电路切换方法与流程

本发明涉及一种iic存储芯片共用电路、电子装置及其备用电路切换方法,属于电子电路技术领域。



背景技术:

为了提高电子设备的可靠性,一般采用冗余备份电路,这样,当主控制电路出现故障时,备用电路能够替代主控制电路,保障系统的正常运行。在这类电子装置中,比如一些门禁产品,在可靠性要求高的应用场景中,也采用了一些门禁的备用开启方案,这类方案往往采用两个单片机(微控制器)独立的控制电路,即由主控单片机构成主控电路,由备用单片机构成备用控制电路,主控制电路与备用控制电路相对独立。如图1所示,为现有的常用的嵌入式控制系统中的一种冗余备份电路方案,主控单片机(微控制器)与备用单片机之间一般通过串口(或iic或spi)通信来交换数据,而将数据存储在各自的存储芯片中。这种设计方案,能够在一定程序上提高电子装置的可靠性,但是也有缺陷,主要有以下几个方面:1)在一些应用场景,尤其环境恶劣的情况下,相关功能的控制电路(比如门禁系统中的电机驱动电路)容易引发故障,这种两个单片机存在直接的线路连接,也就存在隐患,即如果当主控单片机电路出现故障,尤其在严重时,主控单片机出现烧毁现象,此时,整个单片机芯片往往处于短路状态,导致直接连接的备用单片机及其控制电路也会受到严重的影响,严重的情况下,可能影响到备用的控制电路故障也不能正常工作;2)这种备用控制电路的方案还存在需要建立两个单片机之间的通信协议,编程复杂,实现起来工作量大,开发成本高;3)这种电子装置在实际运行过程中,主控单片机要增加运行与备用单片机的通信程序,备用单片机还要等待接收主控单片机传输的数据,也增加了整个电子装置的运行开销;4)一般在这类电子装置中,由于数据量不大,通常采用iic总线的eeprom存储芯片来存储基本运行参数和基本运行记录,而相对大容量的eeprom存储芯片价格高,也增加了成本。

本质上来说,要实现在出现故障时,备用控制电路在基本功能上能够与主控制电路无的缝衔接,其关键点是备用控制电路需要具有与主控电路相同的存储在eeprom中的运行参数。如果在实现了数据存储芯片共用的同时又能够提供相应的保护隔离,备用电路就能够在主控电路出现故障时快速无缝地衔接,以确保电子装置的正常运行。



技术实现要素:

本发明要解决的技术问题是针对上述问题,有必要提供一种存储芯片共用电路,以实现主控电路与备用存储芯片,在电路在主控电路出现故障时,备用电路仍然能够读写存储芯片的数据,确保电子装置的正常运行。

此外,还有必要提供一种电子装置及其备用电路切换方法,以实现主控电路与备用存储芯片,在电路在主控电路出现故障时,备用电路仍然能够读写存储芯片的数据,确保电子装置的正常运行。

本发明的技术方案是:一种存iic储芯片共用电路,应用于电子装置中,包括:第一单片机、第二单片机以及iic接口的存储芯片;所述第一单片机通过三路光耦与存储芯片连接,其中,所述第一单片机的scl端口通过第一光耦与存储芯片的scl端口连接,而所述第一单片机的sda端口分为两路,分别用于读或者写,将单向通信的光耦,通过增加一路端口的方式分为两路,一路用于读,一路用于写,从而实现双向通信;所述第一单片机的第一sda端口通过第二光耦与存储芯片的sda端口连接,所述第一单片机的第二sda端口通过第三光耦与存储芯片的sda端口连接;所述第二单片机的scl端口与存储芯片的scl端口连接,所述第二单片机的sda端口与所述存储芯片的sda端口连接。

所述第一单片机的scl端口与第一光耦的输入端的负极连接,第一光耦的输入端的正极通过电阻与电源正极连接,第一光耦的输出端的集电极与存储芯片的scl端口连接,第一光耦的输出端的发射极与电源负极连接;所述第一单片机的第一sda端口与第二光耦的输入端的负极连接,第二光耦的输入端的正极通过电阻与电源正极连接,第二光耦的输出端的集电极与存储芯片的sda端口连接,第二光耦的输出端的发射极与电源负极连接;所述第一单片机的第二sda端口与第三光耦的输出端的集电极连接,第三光耦输出端的集电极通过电阻与电源正极连接,第三光耦的输出端的发射极与电源负极连接,第三光耦的输入端的正极通过电阻与电源正极连接,第三光耦的负极与存储芯片的sda端口连接;存储芯片的scl端口通过电阻与电源正极连接,存储芯片的sda端口通过电阻与电源正极连接。

所述第一单片机通过其scl端口及sda端口向存储芯片写数据;所述第一单片机通过其scl端口及第二sda端口从存储芯片读数据;第二单片机通过其scl端口和sda端口从存储芯片读、写数据。所述第一单片机,与存储芯片通信时,在写数据的过程中,通过scl端口置高电平或低电平发送时钟信号,并配合时钟信号,通过其第一sda端口置高电平或低电平实现写数据“1”或“0”;在读数据的过程中,通过scl端口置高电平或低电平发送时钟信号,并配合时钟号,进一步读其第二sda端口上出现的高电平或低电平从而接收数据“1”或“0”。

所述第二单片机定期侦测其scl端口或sda端口是否出现低电平来判断是否有数据通信,当出现低电平,则表明有数据通信,否则,判断为无数据通信,以避免通信冲突。

一种电子装置,包括以上所述的存储芯片共用电路,所述第一单片机为主控单片机,所述第二单片机为备用单片机。在所述电子装置中,以第二单片机为主而构成备用电路;所述第一单片机包括:第一存储芯片读写模块,用于通过iic总线与存储芯片通信,以实现对存储芯片的读写;心跳包模块,用于定期在iic总线上发送心跳包。所述第二单片机包括:iic侦测模块,用于侦测scl或sda端口上是否有iic数据通信。

第二单片机还包括:备用切换模块,用于根据iic侦测模块对有无数据通信的侦测,进一步计时,如果在指定时间阈值没有数据通信,则接管第一单片机的工作,从备用的低功耗状态切换到正常工作的状态,以接管第一单片机的工作。第二存储芯片读写模块,用于第二单片机的与存储芯片通信,以实现对存储芯片的读写;报警提示模块,用于第二单片机接管第一单片机的工作后,进行报警提示,以提醒用户更换电子装置;

一种备用电路切换方法,应用于电子装置中,包括以上所述的存储芯片共用电路,所述第一单片机为主控单片机,所述第二单片机为备用单片机。在所述电子装置中,以第二单片机为主而构成备用电路,所述方法包括:

所述第一单片机通过iic总线与存储芯片通信,以实现对存储芯片的读写。

所述第一单片机定期在iic总线上发送心跳包。

所述第二单片侦测iic总线上是否有数据通信。

第二单片机根据对有无数据通信的侦测,进一步计时,如果在指定时间阈值没有数据通信,则接管第一单片机的工作,从备用的低功耗状态切换到正常工作的状态,以接管第一单片机的工作。

第二单片机与存储芯片通信,对存储芯片的读写。

第二单片机接管第一单片机的工作后,进行报警提示,以提醒用户更换电子装置。

所述第二单片机判断iic总线上是否有iic数据通信是判断sda端口或scl端口上是否出现低电平;如果出现低电平,则表明iic总线上有数据通信。

本发明的有益效果是:本发明通过光耦隔离保护方式实现了数据存储芯片共用,使备用控制电路就能够在主控电路出现故障时快速无缝的接管主控制电路的工作。这种方案进一步提高了采用备份电路设计的电子装置的可靠性,同时节省了存储芯片,并且简化了开发设计工作和提高电子装置的运行效率。

附图说明

图1是本发明背景技术所述现有技术备份控制电路的结构框图;

图2是本发明实施例的存储芯片共用电路的原理图;

图3是本发明实施例的电子装置的结构框图;

图4是本发明实施例的方法的流程图。

具体实施方式

下面结合附图和具体实施方式,对本发明作进一步说明。

如图2所示,为本发明一种iic存储芯片共用电路的原理图。包括:第一单片机u1、第二单片机u2以及iic接口的存储芯片u3;所述第一单片机u1通过三路光耦与存储芯片u3连接,其中,所述第一单片机u1的scl端口u1_13通过第一光耦u4与存储芯片u3的scl端口u3_6连接,而所述第一单片机u1的sda端口分为两路,分别用于读或者写,分别用于读或者写,将单向通信的光耦,通过增加一路端口的方式分为两路,一路用于读,一路用于写,从而实现双向通信;所述第一单片机的第一sda端口u1_12通过第二光耦u5与存储芯片u3的sda端口u3_5连接,所述第一单片机的第二sda端口u1_11通过第三光耦u6与存储芯片u3的sda端口u3_5连接;所述第二单片机u2的scl端口u2_20与存储芯片u3的scl端口u3_6连接,所述第二单片机u2的sda端口u2_19与存储芯片u3的sda端口u3_5连接。

本实施例的一个基本思路就是利用光耦对主控电路和备用电路进行隔离,同时能够实现存储芯片的共用。采用主控电路与存储芯片进行隔离而备用电路与iic存储芯片直接连接,是因为主控电路一般是正常工作的,容易引发故障,直连的话,也存在主控电路出现故障后,备用电路也无法读写存储芯片。iic总线的标准模式为100kbps,高速模式为400kbps,目前高速光耦产品的转换速率可达10mbps,完全能够满足需求。

在电子装置中的备用电路一般处于闲置状态,通常,备用单片机也就处于休眠状态的,不易引发故障。当然,这里也可以采用备用电路也进行光耦隔离,一方面为了节省光耦芯片,另一方面,这种隔离对于仅仅是应急过渡使用的备用电路来说,显得多余。基于这种电路连接方案的基础上,主控电路也可以采用双存储芯片的方案,也就是主控制电路有自己直接连接的存储芯片,还有以上所述的通过光耦连接的存储芯片,这种双存储芯片,在存储芯片访问(尤其写入)频繁的应用场景下,有助于进一步提高主控制电路的存储的可靠性。进一步地,可以在读写频繁的情况下,对共用存储芯片仅写入关键的基础数据,以减少对共用存储芯片的读写次数。当然,缺点就是增加了硬件成本,同时,也增加了存储芯片读写的开销。但在存储芯片写入不频繁的情况下,不建议采用这种方案。

本实施例中采用的存储芯片是基于iic总线的存储芯片。iic总线是一种支持多设备的总线。在一个iic通信总线中,可连接多个iic通信设备,支持多个主器件及多个从器件通信。通常,iic总线只使用两条总线线路,一条双向串行数据线(sda),一条串行时钟线(scl)。数据线即用来表示数据,时钟线用于数据收发同步。每个连接到总线的设备都有一个独立的地址,主器件可以利用这个地址进行不同设备之间的访问。总线通过上拉电阻接到电源。当总线上所有设备都空闲,由上拉电阻把总线拉成高电平。采用光耦隔离是一种常用的方案,但光耦是单向的,而这种存储芯片中采用iic通信是一种双向通信,也就需要进行读或者写。目前单片机中往往都有iic总线硬件接口,可以通过硬件iic来读写设备,也可以通过软件模拟实现读写设备。但硬件方式读写iic总线的缺陷就是局限了单片机的io口,而用软件模拟iic,可以根据自己的需要自己定义io口,任何一个单片机只要有io口,就可以很快的移植过去,而且不需要特定的io口。因此,一般业界对iic总线设备的读写,目前主要采用软件模拟方式。而本实施例中,均采用软件模拟的方式读写iic设备,这样可以灵活的根据实际电路的应用情况自定义sda端口和scl端口。可以理解,本实施例中,所述的scl端口和sda端口均可以自定义,也可以采用硬件指定的io口。当然,如果采用硬件指定的寄存器配置,通过二线制硬件方式完成读写的话,可能会导致本实施例所采用的三线方式的iic通信方式受限于要么只能读,要么只能写。虽然这样,也可以满足特定的应用场景下的功能需求。

作为本实施例提高共用存储芯片可靠性的基本思路就是:光耦隔离,读写分开。读写分开,实现单向的光耦通过增加口线来转换为双向通信。以上分析可知,作为可选方案,第一单片机u1可以仅保留sda的一路读端口,或者sda的一路写端口,用于仅写入数据或者仅读取数据的特定应用场景。这样,可以减少一路光耦的应用。

iic总线的scl是iic的时钟,往往由主器件发出的,并且由主器件控制,是单向的;sda线作为数据线是双向的。在本实施例中,单片机均作为主器件,而存储芯片作为从器件。第一单片机u1通过光耦与存储芯片u3连接,第二单片机u2与光耦是直接连接。因此,scl只需要一条线,能够产生低电平即可控制存储芯片的读写。对第一单片机来说,sda是双向的,但光耦是单向的,因此,sda需要两路光耦,才能双向数据传输,在本实施例中,sda线分为两路,一路为写数据(w),一路为读数据(r),即:第一sda端口u1_12和第二sda端口u1_11。其具体连接描述如下:

所述第一单片机u1的scl端口u1_13与第一光耦u4的输入端的负极u4_2连接,第一光耦u4的输入端的正极u4_1通过电阻r1与电源正极连接,第一光耦u4的输出端的集电极u4_4与存储芯片的scl端口连接,第一光耦u4的输出端的发射极u4_3与电源负极连接;所述第一单片机u1的第一sda端口u1_12与第二光耦u5的输入端的负极u5_2连接,第二光耦u5的输入端的正极u5_1通过电阻r2与电源正极连接,第二光耦u5的输出端的集电极u5_4与存储芯片u3的sda端口u3_5连接,第二光耦u5的输出端的发射极u5_3与电源负极连接;所述第一单片机u1的第二sda端口u1_11与第三光耦u6的输出端的集电极u6_4连接,第三光耦u6输出端的集电极u6_4通过电阻r3与电源正极连接,第三光耦u6的输出端的发射极u6_3与电源负极连接,第三光耦u6的输入端的正极u6_1通过电阻r4与电源正极连接,第三光耦u6的负极与存储芯片u3的sda端口u3_5连接;存储芯片u3的scl端口u3_6通过电阻r5与电源正极连接,存储芯片u3的sda端口u3_5通过电阻r6与电源正极连接。

以上所述电阻r3、r5、r6作为上拉电阻,在一些情况下是可以不用的,通常使用是为了电路更加可靠;而r1、r2、r4作为限流电阻,是必须连接的。所述第一单片机u1通过其scl端口u1_13和第一sda端口u1_12向存储芯片u3写数据;所述第一单片机u1其scl端口和第二sda端口u1_11从存储芯片u3读数据。所述第二单片机u2通过其scl端口u2_20和sda端口u2_19从存储芯片u3读写数据。

当第一单片机u1读写存储芯片u3时,第一单片机u1作为iic的主器件,而存储芯片u3作为iic总线的从器件。scl由第一单片机u1控制,是单向的。读写时,第一单片机u1控制其scl端口的高低电平,发出时钟控制信号,实现数据收发同步。在发送数据时,第一单片机u1控制其第一sda端口u1_12的高低电平,实现数据位(0或1)的发送;在接收数据时,第一单片机u1读取其第二sda端口u1_11上的高低电平,实现数据位(0或1)的读取。而第二单片机u2读写存储芯片u3时,按照常规双总线的读写方法进行读写,这里就不再具体描述了。

在第一单片机u1采用软件模拟的方式读写iic存储芯片u3时,不同于第二单片机采用常规软件模拟读写的程序,只使用一个sda口进行读写,但也仅需要将写数据的端口定义为写端口(第一sda端口u1_12),而将读数据的端口定义为读端口(第二sda端口u1_11)。

所述第一单片机u1,与存储芯片u3通信时,在写数据的过程中,通过对其scl端口u1_13置高电平或低电平发送时钟信号,并配合时钟信号,通过对其第一sda端口u1_12置高电平或低电平实现写数据“1”或“0”;在读数据的过程中,通过其scl端口u1_13置高电平或低电平发送时钟信号,并配合时钟号,读其第二sda端口u1_11上出现的高电平或低电平从而接收数据“1”或“0”。

由于光耦是单向的,而iic总线的sda线是双向的。第一单片机u1通过第一sda端口u1_12向存储芯片u3写0时,第一单片机u1第一sda端口u1_12为低电平,由光耦的原理可知,光耦u5的输出端导通,由于其输出端发射极u5_3接地(电源负极),则集电极u5_4输出也为低电平,整个sda线被拉低,为低电平0;而当写1时,光耦u5的输出端截止,由于上拉电阻r6的作用,sda线上为高电平1。同样的原理,当存储芯片u3向第一单片机u1传送0时,sda线被拉低,光耦u6的输出端导通,由于输出端的发射极u6_3接地(电源负极),则其集电极u6_4输出为低电平,即第一单片机u1的第二sda端口u1_11上为低电平0。当存储芯片u3向第一单片机u1传送1时,sda线上为高电平,光耦u6的输出端截止,由于上拉电阻r6的作用,第一单片机u1的第二sda端口u1_11上为高电平1。这样也就实现了sda的双向传送。可见,这种方式电路简单,也就是增加了一个io口,就实现了隔离和双向通信,而目前单片机的io口都是比较丰富的。

所述第二单片机u2定期侦测其scl端口u2_20或sda端口u2_19是否出现低电平来判断是否有数据通信,当出现低电平,则表明有数据通信,否则,判断为无数据通信,以避免通信冲突。

在共享存储芯片的设计中,避免冲突是需要考虑的,由于iic总线空闲时为高电平,利用这一特性就可以通过总线上是否出现低电平来判断总线是否空闲,而无需设计额外的电路来判断。

需要说明的是,为了便于描述本实施例中采用了三个单路光耦芯片,也可以采用单一芯片上集成多路光耦的芯片,其原理是一致的。

如图3所示,为一种电子装置300的结构框图,包括以上如图2所示的存储芯片共用电路,所述第一单片机u1为主控单片机,所述第二单片机u2为备用单片机。在所述电子装置300中,以第二单片机u2为主而构成备用电路;所述第一单片机u1包括:第一存储芯片读写模块u11,用于通过iic总线与存储芯片通信,以实现对存储芯片的读写;心跳包模块u12,用于定期在iic总线上发送心跳包。所述第二单片机u2包括:iic侦测模块u21,用于侦测iic总线上是否有数据通信。

本实施例所谓模块,也就是能够在单片机中执行的计算机程序代码段。以上所述的存储芯片共用电路在实际的电子装置中应用,需要满足最基本的功能就是,第一单片机u1需要读写存储芯片。然后,进一步的,为了避免额外的电路设计开销,可以通过第一单片机u1利用空闲时,在iic总线上定期发送心跳包,而此时,第二单片机u2就通过定期检测总线上是否有心跳包来实现侦测iic总线上是否有通信。这样,就可以进一步判断第一单片机u1是否在正常的工作。当然,可以不用通过发送心跳包,而直接检测iic总线上由于第一单片机u1读写存储芯片u3的而可能出现的低电平来侦测是否有数据通信,但这种方式就可能存在时效性和及时性的问题。因为,实际的电子装置,尤其门禁系统中,第一单片机u1是否对储芯片u3进行读写是不确定。为了避免数据量过的,一般心跳包可以采用一字节特定的数字来表示。而关于心跳包时间间隔的设定,要根据实际应用情况而定。在实时性要求高的系统设定得小一些,而实时性要求不高的系统中可以设定得大一些,比如30秒或者60秒。

第二单片机u2还包括:备用切换模块u22,用于根据iic侦测模块对有无数据通信的侦测,进一步计时,如果在指定时间阈值没有数据通信,则接管第一单片机u1的工作,从备用的低功耗状态切换到正常工作的状态,以接管第一单片机u1的工作。第二存储芯片读写模块u23,用于第二单片机u2与存储芯片u3通信,以实现对存储芯片u3的读写;报警提示模块u24,用于第二单片机u2接管第一单片机u1的工作后,进行报警提示,以提醒用户更换电子装置。

第二单片机u2根据心跳包的时间间隔来判断,比如心跳包时间间隔为30秒,如果备用单片机在60秒内都没收到心跳包,即时间阈值设置为60秒,那么可以判断第一单片机u1工作异常。当然,出于可靠性的考虑,还也可以判断90秒没收到心跳包,则判断第一单片机u1工作异常。当然,第二单片机u2还可以工作在定时休眠状态,以节省功耗,通常情况下,备用电路往往都是运行在低功耗状态,以最大限度的减少电子装置的功耗。在第二单片机u2接管后,往往需要退出低功耗状态,进入正常的工作状态,同时要能正常读写存储芯片u3,才可能保证电子装置300的正常工作。同时,电子装置300已经处于一种不够可靠的状态,需要发出报警以提示用户更换设备,通常,电子装置300中,可以采用特殊的蜂鸣声来进行报警提示。

第二单片机u2判断第一单片机u1是否工作正常以切换备用电路,可以有很多的方法。比如,可以增加专门的电路来检测第一单片机u1的工作状态来判断,或者通过设计按键,由用户手动切换的方式来完成接管状态。但这些方法都会带来额外的硬件成本。

一种备用电路切换方法,应用于电子装置300中,包括以上所述的存储芯片共用电路,所述第一单片机u1为主控单片机,所述第二单片机u2为备用单片机。在所述电子装置300中,以第二单片机u2为主而构成备用电路,所述方法包括:

s1、所述第一单片机u1通过iic总线与存储芯片通信,以实现对存储芯片的读写。

s2、所述第一单片机u1定期在iic总线上发送心跳包;

s3、所述第二单片机u2侦测iic总线上是否有数据通信。

s4、第二单片机根据对有无数据通信的侦测,进一步计时,如果在指定时间阈值没有数据通信,则接管第一单片机u1的工作,从备用的低功耗状态切换到正常工作的状态,以接管第一单片机u1的工作。

s5、第二单片机u2与存储芯片u3通信,以实现对存储芯片u3的读写。

s6、第二单片机u2接管第一单片机u1的工作后,进行报警提示,以提醒用户更换电子装置300。

在步骤s3中,所述第二单片机u2判断iic总线上是否有iic数据通信是判断sda端口u2_19或scl端口u2_20上是否出现低电平;如果出现低电平,则表明iic总线上有数据通信。

判断iic总线上是否有数据通信,可以采用读取iic总线上的心跳包数据,也可以读取存iic总线上向存储芯片读写的数据,而最简单快捷的方法,就是判断iic总线上是否出现低电平。因为在iic总线空闲时,总线(scl线和者sda线)上总是处于高电平。

本实施例提出的光耦隔离保护方式实现了数据存储芯片共用,使备用控制电路能够在主控电路出现故障时快速无缝的衔接,以确保电子装置的正常工作。由于采用光耦隔离,避免了主控电路和备用电路的直接的连接,提高了电子装置的可靠性;采用共用存储芯片,节省了存储芯片,降低了硬件成本;由于共用存储芯片,避免了数据的不一致问题,同是对相同的存储芯片操作,具有相同数据存储结构,可以直接的复用相关的程序代码,更不用建立相关的数据通信协议来交换数据,较大程度的简化了开发设计工作,降低了开发成本。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的明确的结构、连接和方法。尽管实施例中对本发明的方案、基本思路和原则、以及基本原理和有益效果都进行了较详细的说明,而基于这些思路和原则,对于本领域的技术人员来说,还可以对以上所记载的技术方案进行修改、或者对其中部分方案进行等同替换。因此,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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