⑶故障自检功能
由于I2C总线上的信息是由SDA和SCL两线串行数据信号线双向传输的,因此CPU可以对I2C总线的通信情况和被控集成电路的工作状态进行监测,并在屏幕上显示检测结果,为维修人员提供有关故障自检信息。被控器送来的低电平应答信号,CPU就会判断该被控器有故障,并终止数据传送。由于各被控集成电路和器件均有自己的地址,所以,在总线上不同时间传送着众多的控制信号,但各被控器只要把与自己地址相同的控制信号从总线上取下来,并进行识别和处理,得到相应的控制信号,就可以实现相应的控制。
2.4 I2C总线系统的控制过程
⑴CPU与存储器之间的数据交换
I2C总线系统中的存储器存储有两种信息:一是用户信息,是用户写入的控制信息,此信息用户可以更改,如各种模拟控制量(例如电源的OVP、OCP、OTP和所需输出电压值等);另一种是控制信息,是由厂家写入的控制数据,此信息用户不能改变。电器正常工作时,CPU从存储器中取出有关用户信息和控制信息,并送往被控电路使其处于正常工作状态;当调整电器时,CPU也从存储器中取出控制信息,检修人员使用正确的调试步骤来改变这些控制信息,以确保采用I2C总线的电器处于最佳工作状态。
⑵CPU对被控电器的控制过程
CPU对采用I2C总线的被控电器控制需经过以下过程。
①CPU寻址过程。当CPU要对某被控器进行控制时,CPU将向总线发出该被控器的地址指令,被控器收到指令后,便发出应答信息,CPU总线收到应答信息后,就将该被控器作为控制对象。
②CPU调用数据过程。CPU找到被控器后,就从存储器中调出相应的用户信息及控制信息,并通过I2C总线送到被控器,使被控器处于所要求的工作状态。
③被控器执行指令的过程。被控器接收到指令后,便对指令进行译码,并将译码的结果与自己的控制内容编码进行比较,以确定进行何种操作,这项工作是由总线接口电路中的译码器来完成的。确定进行何种操作后,总线接口电路中的相应控制开关便自动接通,控制数据经过控制开关送到D/A转换器,转换成模拟控制电压,用以控制相应的模拟电路,完成有关操作。I2C总线数据传送最繁忙的时刻是在采用I2C总线电路的刚开机一瞬间,由于被控电路没有存储数据的功能,因此,每次开机时CPU都要从存储器中取出控制数据,送往各被控器,使被控器进人相应的工作状态。因此,刚开机时CPU的控制任务最繁重,控制过程最复杂,损坏的可能性也就最大,所以使用I2C总线的电器应尽量避免频繁开/关机。
根据电器功能的强弱以及在I2C总线上挂接的被控电路的不同,在I2C总线采用的CPU上可引出一组或多组I2C总线。
由I2C总线控制的集成电路或器件必须具有专用的总线端子,即SDA端子与SCL端子。凡是具有SDA、SCL端子(引脚)的集成电路或器件,均可以由总线控制。
2.5 I2C总线信号的传输方式
I2C总线中的两根信号线(SDA、SCL)在传输各种控制信号的过程中是有严格分工的。其中,SDA数据线用来传输各控制信号的数据及这些数据占有的地址等内容;SCL时钟线用来控制器件与被控器件之间的工作节拍。为保证总线输出电路得到供电,SDA线和SCL线均通过上拉电阻和电源连接,当总线空闲时,SDA和SCL两线均保持高电平。I2C总线控制信号传输波形如图3所示。
图3 I2C总线控制信号传输波形
(1)时钟线控制信号
SCL线为高电平期间,SDA线上传输的数据必须保持稳定,在此期间,控制器件与被控制器件之间可以交换数据;SCL线为低电平期间,SDA线上传输的数据可以变化,即允许数据线上电平高低跳变。
(2)数据线控制信号
数据线上传输的控制信号,均按图3所示的内容和顺序先后传输:起始状态信号、被控电路地址、读写方式(数据传输方向位)、应答信号、数据信号、应答信号、数据信号、应答信号、终止状态信号。
在时钟线为高电平期间,数据线上一个电平由高到低的跳变规定为起始状态,电平由低到高的跳变规定为终止状态,起始状态信号和终止状态信号均由CPU发出。当CPU发出起始状态信号后,总线即处于占用状态;当CPU发出终止状态信号后,总线又处于空闲状态。在SDA线上传输的数据,其字节为8位。前7位是被控电路的地址,第8位是数据传输的方向位,“0”表示由CPU发送数据,“1”表示CPU接收数据。每传输一个数据字节后,跟着一位应答(确认)信号,这个应答信号是由CPU发出的,在应答位时钟期间,CPU释放数据线,以便被控器在这一位上送出应答信号。
当被控器的数据接收无误时,被控器发出低电平应答信号,经确认后的数据才有效。当数据被确认后,CPU便可以继续传送数据并继续对数据加以确认,直到CPU发出终止状态信号为止。若在应答位时钟期间,CPU未接收到被控器送来的低电平应答信号,CPU就会判断该被控器有故障,并终止数据传送。由于各被控集成电路和器件均有自己的地址,所以,在总线上不同时间传送着众多的控制信号,但是各被控器只要把与自己的地址相同的控制信号从总线上取下来,并进行识别和处理,得到相应的控制信号,就可以实现相应的控制。
2.6 I2C总线系统与外部电路的连接方式
I2C总线系统的外部电路结构简单,它与被控电路之间的连接方式有直接式和隔离式两种。
(1)直接式I2C总线
直接式I2C总线是指被控集成电路直接或通过电阻挂在I2C总线上,其电路工作原理图如图4所示。因为CPU的I2C总线输出端口内部电路形式为集电极开路(或漏极开路)形式,所以在CPU的I2C总线输出端必须通过上拉电阻R接+5V电源,为CPU的I2C总线输出端口的内部电路供电。图4中的电阻R为隔离电阻,C为抗干扰电容,主要是为了提高I2C总线上数据传输的可靠性,防止误动作进人维修状态和防止由于外部干扰信号改变I2C总线数据。稳压管VS是为了防止外部高电压损坏CPU的I2C总线输出端的内部电路。
图4 直接式I2C总线工作原理图
(2)隔离式I2C总线
隔离式I2C总线是指CPU引出的总线通过隔离器与被控集成电路相连接。隔离器一般由晶体管组成,其电路工作原理图如图5所示。这种电路的优点是CPU与被控集成电路被晶体管隔离器隔离开,当被控对象发生故障使I2C总线上电压升高时,晶体管会截止,从而保护CPU不被高电压冲击而损坏。
图5 隔离式I2C总线工作原理图