×
单片机 > 单片机程序设计 > 详情

一种基于I2C总线的新型多MCU系统的构建方法剖析

发布时间:2020-09-02 发布时间:
|

0. 引言

随着电力电子技术的快速发展,越来越多具有谐波源作用的非线性设备投入使用,电网电能质量日益恶化,现行的电能计量和考核方式不利于对谐波污染源的考核和治理。合理的解决办法是分别计量基波电能和各次谐波电能,并分谐波电能的传递方向分别执行惩罚性和补偿性计费制度以提高电网的电能质量。实现这个准确、合理的电能计量和质量评估方案的关键,是研制能够进行谐波分析的多功能电能计量监测装置,这样的装置必须能够在高速、实时采集数据的同时对数据进行快速傅立叶变换分析和对各项电能指标进行计算、显示,这要求用多MCU系统设计多功能电能表。

应用多MCU系统的电能计量、质量监测装置总体框图如图1所示。多MCU系统由两个微处理器MCU1、MCU2及数据共享接口构成,微处理器MCU1负责外围数据采集、滤波、A/D转换单元模块的控制、电能指标显示和远程抄表数据通信等功能,MCU2负责对采集到的数据进行FFT运算和对基波及各次谐波电能数据的分时计费计算,数据共享接口则承担着微处理器MCU1和MCU2之间数据交换共享的作用,相当于多MCU系统数据中心。因此,数据共享接口性能的优劣,将直接决定着多MCU系统工作效率的高低和和系统数据保护的可靠程度。

目前,多MCU系统多采用双口RAM(如IDT7134芯片)或微控制器的串行接口作为多个微处理器MCU之间数据共享接口,如图2a、b所示。双口RAM是一个配备两套独立的地址、数据、控制线的存储器,允许两个独立的MCU对数据进行存取共享。当发生两个MCU同时访问同一地址的存储单元时,通过内部仲裁逻辑控制电路提供访问允许和延缓保持的访问控制机制。以速度等级是55ns级的双口RAM为例,由于双MCU之间的数据共享读写控制突,这样的多MCU系统必定存在110ns的数据交换延时周期,而且数据存储具有易失性,系统一旦掉电重要数据就会丢失。另外,每个MCU需要至少16条I/O口线作为地址、数据、控制线,MCU之间的接线比较复杂。这对于运算速度高、数据量大、MCU外围模块多的多功能电能表来讲效果并不理想。与之相比,串行通信数据共享方案效率更低,难以满足系统对实时性的要求。随着符合I2C总线标准的铁电存储器(FRAM)的出现,为用户所熟悉的I2C总线技术将为我们解决多MCU系统数据共享的问题,提供了一种接线简单、数据访问高速、无读写时延和数据保护可靠性高的解决方案。

1. 符合I2C总线标准的铁电存储器(FRAM)工作原理和特性

1.1、 I2C总线标准

I2C 总线的信号线为数据线SDA ( Serial Data) 和时钟线SCL (Serial Clock) ,都是双向传输的。数据线SDA用于在器件之间串行的传输数据位、地址码、应答、非应答信号,时钟线SCL上传输由主控器件发出时钟同步信号。根据向总线发送数据还是从总线接收数据将总线上器件的工作模式分为发送和接收。通常,在I2C总线上有一个控制总线的器件,称为主器件(Master),负责为所有的通信操作产生时钟信号,而受控制的器件称为从器件( Slave),可以是任何符合I2C总线标准的器件,但是主器件只能由带CPU的器件担任。每一个主器件都可以工作于主发送模式或者主接收模式,每一个从器件都可以工作于从接收模式或者从发送模式,并且可以有多个主器件共存于一条I2C总线上,比如本文所设计的多MCU系统中MCU1和MCU2在I2C 总线上都作为主器件。

通常,挂在总线上的从器件都有唯一的地址标号,称为从地址(Slave ID),主器件通过向总线发送从地址来呼叫某个要与之交换数据的器件,这种呼叫和数据交换以I2C 总线通信协议为规范进行,这种协议由SDA、SCL信号线上的启动(Start)、数据位传输(Data Bit)、应答(Acknowledge)和停止(Stop)四种状态的变换控制,图3a说明了这四种状态的信号组成。其中启动和停止由主器件发送,数据位和应答位可以由主器件发送,也可以由从器件发送。当主器件发送数据位时,它工作于主发送模式,此时从器件工作于从接收模式并对每个收到的字节数据以一个应答位作为收到确认信号。与此相反,从器件向总线发送数据位,主器件负责对每一个收到的字节数据进行应答或者非应答(根据需要用于结束通信)。通常,通信由主器件发送一个启动状态开始,然后发送一个带有读、写识别的从地址,这个从地址的高7位标识器件的ID号,最低位标识读写或数据传输方向,0为写1为读。写数据时由主器件向从器件传送数据,读数时由从器件向主器件传送数据。总线上所有器件都有内部逻辑,当检测到启动状态后则进入电平比较状态,如果从地址与其ID标号相符则被选中并自动产生一个应答位,从而建立通信连接,否则不予应答。一旦建立通信连接,可根据需要由通信软件控制主、从器件之间传输数据字节的长短。最后,通信结束时由主器件产生一个停止状态(Stop)以结束这次通信。图3b说明了I2C 总线的通信时序。

当I2C 总线是多主器件总线时,由于SDA和SCL信号线接上拉电阻,并且各个器件的输出都为开漏或开集的形式,因而构成“线与”的功能,就是说只要有一个器件担当了主器件的角色,总线就处于忙的状态,这形成了良好有序的竞争检测机制,因而不会产生数据共享传输冲突。

1.2、铁电存储器结构原理、特性及应用

FM31256芯片集成了256Kb容量的铁电存储器(FRAM)、实时时钟(RTC)、外部事件计数器、看门狗及掉电监测复位等功能,其结构原理如图4示。

其中,铁电存储器(FRAM)同时具备随机存取记忆体(RAM)和非易失性存储器(ROM)的特点,既可无限次读写存取数据,又能在断电情况下保存数据,并且没有读写延时可以总线速度存取数据,具有即时读写的优点。与此相比,E2PROM在写入数据后一般要5~10ms的等待数据写入时间,而且写入寿命有限,通常读写一百万次以后数据写入失效,因而并不适合做数据共享存储器。

在这个集成了多个逻辑器件的芯片中,铁电存储器单元(FRAM)和实时时钟单元(RTC)均符合I2C 总线标准,最大可达到1MHz的总线频率。由于集成在同一个芯片上,FRAM和RTC共用同一个I2C 总线接口,但是地址标号(Slave ID)各自独立,分别为1010XA1A0D和1101X A1A0D,其中D 是数据传输方向位用于标志读、写操作,A1A0用来选择I2C 总线上的多个同类器件,最多可以从4个FRAM或RTC器件中进行选择,各个器件的A1A0值由芯片的外部引脚电平决定。编写通信软件时,在I2C 总线上首先给一个启动(Start)信号,然后发送Slave ID(1010XA1A0D),再判断Acknowledge信号,如果有,则主控器件发送两个字节的存储器地址(MSB和LSB)对FRAM的32KByte存储空间进行寻址,之后进行数据传输,每个数据字节跟随一个Acknowledge(或者Non-Acknowledge)信号,通信完毕以Stop信号结束操作。其中,MSB和LSB寻址字节可以用于单字节、多字节两种形式的存取操作,当多字节操作时MSB指示存储页面不变,LSB保存在内部缓存器中,每存取一个字节单元的数据LSB自动增加1以指向下一个存储单元,当达到存储范围末端时存储器地址自动回归0000H。这在多MCU系统中对特定参数的数据共享操作十分方便。

由于FRAM的上述优点,特别适合于那些对数据采集、读写时间要求很高的场合,而且由于不会出现数据丢失,其可靠的存储能力足以让我们放心的把一些重要数据存储其中。其近乎无限次写入的使用寿命,使它很适合担当数据共享存储体,用来在多功能电能表的MCU之间共享数据,供各个子系统频繁读写。

2. 基于I2C总线的多MCU系统结构及工作原理

I2C 总线接口电路简单,使用灵活,加上铁电存储器的读写速度高、数据保护可靠、读写寿命无限等优点,自然为我们提供了一种十分理想的基于I2C 总线的新型多MCU系统构建方案,以FM31256芯片为例设计的系统结构框图如图5所示。

每个MCU只需两条I/O口线如P2.2、P2.3分别与SDA、SCL总线相连即可,MCU1和MCU2分别用做控制和计算的微控制器,通常用数字信号处理器(DSP)执行复杂算法的计算,图5中MCU2的P2.2、P2.3线仅代表普通I/O口。另外,为了更好的协调对I2C总线资源的使用,我们设计了两条I/O口线P2.0、P2.1用来在两个MCU之间传递I2C 总线的使用信息,以达到提高多个MCU之间数据共享效率的目的。MCU1作为I2C 总线的主器件时,P2.0输出高电平以通知MCU2此时I2C 总线正被占用,使用完毕将P2.0电平置低,此时MCU2的P2.1检测到电平跳变则判断出I2C 总线处于空闲可用状态。同样,MCU2作为I2C总线的主器件时,也从P2.0输出高电平来通知MCU1此时I2C 总线正被占用,使用完毕将其置低,由MCU1的P2.1引脚根据电平跳变决定何时可以使用I2C 总线。这样,无论何时铁电存储器都可以处于被访问状态,充分发挥了无读写延时的优点,很大程度上提高了数据采集单元和FFT运算单元之间数据交换的实时性。

这种新型多MCU系统构建方案与双口RAM的多MCU系统相比,既没有数据共享冲突,也没有读写延时的缺点,而且接线简单,数据保护可靠,读写效率高,器件数量少,从多方面提高了可靠性,尤其适用于对数据处理实时性和可靠性要求高的电能计量和质量监测装置。

3. 基于新型多MCU系统的多功能电能表的硬件结构设计

为了合理的对谐波污染源进行考核和治理,有必要对基波电能和各次谐波电能及其传递方向进行计量,那么具备电能计量和质量监测的多功能电能表必须能够在进行高速、实时数据采集同时执行快速傅立叶变换,从而达到谐波分析的目的。要实现这些功能,通常采用多MCU系统,把控制和数据处理的功能进行分离,以充分发挥各个微处理器MCU的功能。在此,考虑到数据采集的实时性要求和运算量大的需要,由MCU1负责对数据采集、滤波、A/D转换、LCD显示等单元进行控制,以及远程抄表通信,采用MCS51系列单片机就可以完成上述功能;由MCU2负责对采集到的数据进行FFT变换并计算各类电能指标数据,算法复杂运算速度问题尤其突出,需要采用数字信号处理器(DSP)。硬件连接原理图如图6所示。

其中,MCU1的P0口作为数据采集通道接收经过A/D转换的数字信号,W、R作为读写控制,P2.7和P3.3分别作为数据转换启动和数据接收中断启动信号控制引脚,串行口作为远程自动抄表的通信接口(可扩展红外无线通道),P1口作为液晶显示器(LCD)的数据口,P2.3、P2.4、P2.5用于LCD的显示控制引脚,P2.2、P2.3分别接I2C 总线的SDA和SCL,P2.0、P2.1作为双MCU之间数据共享协调通道。MCU2主要用做运算,掉电时数据保护显得十分重要,因此以外部中断作为FM31256芯片的掉电监测输出信号的输入端,随时进行中断数据保护处理。

这个系统与采用双口RAM的多MCU系统相比,接线简单,数据交换速度高、实时性好,数据保护可靠。另外,由于FM31256芯片集成了实时时钟、看门狗、掉电保护中断等单元,因而系统以较少的器件数量增加了电能峰、平、谷期分时计费,防止程序跑飞和系统掉电欠压数据保护等功能,很大程度上提高了可靠性。

4. 结束语

为了对谐波污染源进行合理的考核和治理,有必要计量基波和各次谐波电能,实现这个电能计量和质量评估方案的关键,是研制能够进行谐波分析的多功能电能计量监测装置,该装置能够在高速、实时采集数据的同时进行快速傅立叶变换分析和对各项电能指标进行计算、显示。显然,设计基于多MCU系统的多功能电能表十分必要。

本文提出了一种基于I2C总线的新型多MCU系统的构建方法,应用读写快速、数据保护可靠、符合I2C总线标准的铁电芯片(FM31256)作为多MCU系统的实时数据共享模块,以I2C总线作为数据交换通道传递采集到的电量数据、加工过的电能数据以及实时时钟数据。这种方法接线简单,数据共享访问高速、无读写延时、数据保护可靠并且元器件集成度高,是一种高效可靠的多MCU系统解决方案,能够很好的发挥多MCU系统中各个MCU的功能,在实时测控领域中具有很高的应用价值。同时,用这种多MCU系统设计的多功能电能表装置体积小,芯片集成度高,工作稳定可靠,很好的满足了电量数据采集、处理的高速实时性和可靠性的要求,为实现具有谐波分析功能的电能计量和质量监测提供了先进的技术手段。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多