串行周边介面(SPI)和I2C介面是时下流行的通讯标准。工厂自动化、建筑自动化、状态监测和结构监控等应用要求周边位于远端位置,为量测控制增加了难度。预测添加性维护(PdM)是智慧产业的关键组成部分,透过运行期间监控设备以检测潜在故障的预警迹象,藉以提升效益。


电路功能与优势

对于控制器和周边设备之间的短距离电路板内连接,串行周边介面(SPI)和Inter-Integrated Circuit(I2C)介面是时下流行的通讯标准。由于存在广泛的硬体 和软体支援,SPI和I2C已被感测器、执行器和资料转换器制造商广泛採用。当控制器和周边设备位于同一电路板上、共用同一接地层且相距不远(不大于1公尺) 时,这些介面的实现相当简单。



但是,状态监测、工厂自动化、建筑自动化和结构监控等应用要求周边位于远端位置,通常远离控制器。系统设计人员传统上利用中继器或具有更高驱动强度的驱动器来扩展这些介面,其代价是整体成本和功耗增加。


图1所示电路轻而易举解决了长距离、稳固的SPI/I2C 通讯问题,对电路元件数量、工作速度或软体复杂性则沒有任何影响。为了在高杂讯、恶劣的工业环境中无错误运行,元件必须能承受较大地电位差。 SPI/I2C扩展器具有稳固的收发器,可在+/-25V(SPI通讯)和+/-15V(I2C通讯)的扩展共模范围内工作,支援长达1200公尺的距离。每个链路由位于电缆任一端的单个元件组成,电源电压范围为3V至5.5V,而单独的逻辑电源允许I2C或SPI介面从1.62V至5.5V电源供电。 扩展器还提供了用于故障监测的内部控制介面;当长距离监测设备时,这非常重要。



图1 : EVAL-CN0564-ARDZ 简化功能框图
图1 : EVAL-CN0564-ARDZ 简化功能框图

电路描述

I2C讯号标准综述 I2C 是用于双向双缐介面的串列协定,可将 EEPROM、类比数位和数位类比转换器、I/O 介面及其他周边连接到嵌入式处理器。由于简单且可扩展,其在感测器领域非常受欢迎。匯流排上可以存在多个元件,每个元件都有自己的唯一位址。它只需要 2 条缐便可在元件之间传输资料。这2条缐包括:


*SCL—串列时脉讯号缐


*SDA—用于在控制器和周边之间发送和接收资料的串列资料缐


SCL和SDA讯号是开漏逻辑,I2C匯流排规范和使用者手册中定义了逻辑位准和时序规格,提供I2C匯流排上可以存在的周边数量受位址空间和最大400 pF的匯流排总电容限制。开漏逻辑具有相对较高的阻抗和较低的杂讯抗扰度,这就要求所有周边以低阻抗连接到公共接地迴路,并且在100kHz时, 最大匯流排长度以大约一公尺为限。CN0564则不同,其具有差分收发器,可将匯流排长度扩展至1200公尺,并能承受控制器和周边之间最高+/-15V的共模压差。


SDA本质上是双向的,在交易处理过程中,控制器与周边之间的资料流程向会改变方向。虽然不是很常见,但是I2C支援时脉延展,即周边可以让SCK保持 低位准以减慢时脉速率。因此,SCL也是双向的。I2C的双向性质使其不便于利用缓冲器扩展、隔离或转换到其他实体层,这需要多种逻辑位准和其他非 标准技术。


常见I2C总缐速度为100 kHz标准模式和400 kHz快速模式。LTC4331控制器介面支援最高2000 kHz的所有常见I2C时脉速率。然而,在高时脉频率和长电缆的情况下,强烈建议使用完全支援SCL时脉延展的控制器。


SPI 讯号标准综述

串列周边介面(SPI)是一种同步串列通讯介面规范, 用于短距离通讯,主要用在嵌入式系统中。与 I2C 不同,SPI 的定义不严格。其支援多种时脉频率、 逻辑位准和时序关系,需要仔细检查控制器和周边规格。SPI 是全双工通讯(即资料既可从控制器流向周边,同时也可从周边流向控制器)。


SPI实体层由4个讯号组成:


*SCLK - 串列时脉,通常由控制器驱动


*MISO - 控制器资料登录、周边资料输出


*MOSI - 控制器资料输出、周边资料登录


*CS – 晶片选择支援与周边通讯。每个周边需要一条CS缐。


SPI接脚使用推挽逻辑(而不是开漏),控制器和周边之间的逻辑位准必须匹配。每个周边都需要自己的CS讯号,这使SPI匯流排的物理扩展进一步复杂化。



图2 : SPI 配置模式
图2 : SPI 配置模式

时脉和资料之间支援四种不同的时序关系,分別称为模式0、1、2、3,对应于四种可能的时脉配置。 每个事务都是在晶片选缐被驱动到逻辑低位准时开始(晶片选择通常是低位准有效讯号)。晶片选择、资料和时脉缐之间的确切关系取决于时脉极性(CPOL)和时脉相位(CPHA)的配置。这四种模式总结在图2中。


LTC4332最多支援3个远端周边,每个周边都有自己的CS缐。每个周边的SPI模式都可以独立设定为模式0、1、2或3。资料从控制器透明的传输到周边, 但从周边到控制器的资料会引入一个字的延迟。


系统拓扑

CN0564使用LTC4331和LTC4332来扩展I2C和SPI讯号,距离最长可达1200公尺。每个链路由一对元件组成,控制器侧配置为本地模式(REMOTE接脚接低位准),周边侧元件配置为远端模式(REMOTE接脚接高位准)。


LTC4332/LTC4331将来自控制器的SPI/I2C讯号编码为差分讯号,然后透过双绞缐电缆传输。在电缆的远端,差分讯号由远端LTC4332/LTC4331接收并 解码回SPI/I2C,然后路由到远端周边。正常工作时, 远端周边会镜像本地控制器产生的事件。


可选串列传输速率

LTC4332/LTC4331可以使用可选速度索引改变链路串列传输速率—即资料在本地和远程链路之间传输的速度。此速度索引透过配置链路和介面时序选择接脚SPEED1和SPEED2来设定,这 两个接脚均为三态输入。


电缆上的可选串列传输速率支援根据应用要求平衡性能与电缆长度。但是,链路两侧的速度配置必须相同。


增加电缆传输长度

LTC4332/LTC4331利用高速差分收发器在最长1200公尺的链路上通讯。I2C/SPI讯号转换为差分讯号以实现高速高品质讯号传输、杂讯抗扰度和共模抑制。对于提供的速度设定,必须遵守表1(适用于 LTC4331)和表2(适用于LTC4332)中提供的电缆长度规格,否则链路不会工作。表中的值是在实验室环境中使用Cat5E乙太网路电缆测得。请注意,实际最大电缆长度取决于电缆类型和应用环境。


共模电压和 ESD稳固性

差分收发器工作在+/-25V(SPI扩展器)和+/-15V(I 2 C 扩展器)的扩展共模范围内,因此它适合于高杂讯环境或存在接地电位差的系统(参见图1)。


介面接脚(LTC4331 A和B接脚,LTC4332 A、B、Y 和Z接脚)具有故障保护功能,可承受最高+/-60V的 电压。介面接脚还有异常稳固的静电放电(ESD)保 护特性。在所有工作模式下,或在未供电时,介面接脚能承受相对于GND和VCC(具有4.7μF电容接 GND)的+/-40kV HBM ESD(人体模型测试),而不 会发生闩锁或损坏。


另外,LTC4331/LTC4332 ESD均通过了国际电工委员会(IEC) ESD和EFT(电气快速瞬态)测试。IEC ESD应力在峰值电流、幅度和上升时间方面均超过了HBM测试,而EFT测试提供了长时间的重复应力。 这种保护等级可确保LTC4332/LTC4331在各种实际危险下都能如常运行。


一字延迟 - SPI 读取命令

在I2C通讯的情况下,LTC4331(本地)— LTC4331(远端)链路是透明的;远端周边显示为本地控制器的本地元件。 但是,对于SPI扩展器解决方案,LTC4332(本地)— LTC4332(远端)在存取期间会引起一个字的延迟。从SPI控制器发送到周边的资料会经歷与控制器启动的介面时脉(SCK)相同的延迟,因此两者在整个资料连结上会保持同步。


在相反方向上,仅当第一时脉缘到达周边时,周边才将MISO资料发送到控制器。此资料在返回控制器的路径上会经歷第二次延迟,因此MISO资料会不同步,偏差为电缆传输延迟的两倍。物理上较远的元件将需要大幅降低时脉速率以适应每个位元宽度内的传输延迟。为了克服这种限制,LTC4332 将移位暂存器引入MISO讯号路径,如图3所示。



图3 : 将移位暂存器引入 MISO 讯号路径以适应传输延迟
图3 : 将移位暂存器引入 MISO 讯号路径以适应传输延迟

因此,对远端周边的SPI写请求是软体透明的,但对远端周边的SPI读取请求会产生一个字的延迟,表示读取命令需要扩展一个字。若不这么做,则当晶片选择取消置位时,LTC4332 MISO移位暂存器中的最后一个字会丢失。WORD_LENGTH暂存器表示LTC4332上MISO讯号路径中的移位暂存器的深度,决定了 SPI控制器何时开始在MISO缐上接收有效资料。例如,若WORD_LENGTH为8,则在CS置为有效后经过8个时脉週期,使用者将开始接收有效MISO资料。


故障监控

LTC4331/LTC4332LINK 接脚表示通讯链路的状态,驱动到低位准时表示远端I2C/SPI匯流排已加入本地I2C/SPI匯流排。 LTC4331/LTC4332支援中断讯号,LTC4331上为ALERT接脚,LTC4332上为INT接脚。这些讯号从远端匯流排镜像到本地匯流排。


在远端,中断接脚是输入,可以连接到相连I2C/SPI周边的中断输出。在本地端,ALERT/INT用于开漏输出,可以连接到共享本地中断缐。如果启用,本地LTC4331/LTC4332 的控制介面将使用ALERT/INT 接脚报告链路和故障事件。本地侧ALERT/INT输出是远端ALERT/INT 与内部端点中断讯号的逻辑「AND」结果。


本地侧LTC4331/LTC4332还可以透过让ON接脚保持低位准至少180ms来触发远程侧復位。如果链路断开,远程LTC4331/LTC4332会在180ms后自动复位。远端復位会禁用所有远端侧输出,直到重新建立链路通讯。



图4 : 读/写故障监控暂存器的控制介面时序图
图4 : 读/写故障监控暂存器的控制介面时序图

LTC4331/LTC4332 控制介面要配置LTC4331/LTC4332链路本地侧的控制介面,可使用单独的内部可定址周边。透过配置接脚A1和A2,可为本地LTC4331的内部介面分配一个唯一的I2C位址。LTC4332则提供了单独的晶片选择接脚SSC,允许用户与内部SPI可定址暂存器通讯。



图5 : LTC4332(左侧)和 LTC4331(右侧)的内部框图
图5 : LTC4332(左侧)和 LTC4331(右侧)的内部框图

LTC4331/LTC4332控制介面支援读取速度配置、链路状态和中断/警报状态,以及存取其他I2C/SPI特定选项。LTC4331可以配置为将I2C位址转换为远端 周边,从而扩展I2C位址空间并防止地址冲突。 LTC4332允许每个CS接脚使用独立的SPI模式配置, 以及配置字长(用于确定所接收的资料延迟)。


PCB 尺寸

PCB设计中的元件密度增加会导致复杂的问题。为了编码SPI或I2C,通常需要额外的微控制器,这会增加解决方案成本和尺寸,但使用CN0564的话,远程侧无需额外的微控制器。这样可实现更小的感测器解决方案,其佔用的PCB面积更小,从而降低制造总成本,并为其他元件留下更多空间以提供更多特性。



图6 : LTC4331(I2C 扩展器)和 LTC4332(SPI 扩展器)的本地 EVAL-CN0564-ARDZ 节点和远端节点
图6 : LTC4331(I2C 扩展器)和 LTC4332(SPI 扩展器)的本地 EVAL-CN0564-ARDZ 节点和远端节点

扩展感测器介面功能

更长传输距离的感测器介面传统上使用类比讯号技术,例如0-10V或4-20 mA。例如,在状态监测应用中,整合电子压电(IEPE)感测器介面是振动传感 器最常用的讯号标准。其为振动感测器提供恆定电流源,感测器输出电压透过相同缐路读回。当传输交流讯号内容时,这种双缐系统可以简化系统设计, 但不提供额外的故障监控或配置能力。


LTC4332/LTC4331则支援弹性的配置和处理,发 故障事件时可直接在数位输出感测器上轻松除错。


常见变化

当本地和远端地电位之差超过容许的+/-25V(LTC4332)或+/-15V(LTC4331)时,需要使用电气隔离。使用ADUM141E或ADUM140E之类的数位隔离器, 可以将I2C/SPI讯号与EVAL-CN0564-ARDZ上的本地LTC4331/ LTC4332进行电气隔离,如图7所示。



图7 : 包含对资料和电源讯号进行电气隔离的框图
图7 : 包含对资料和电源讯号进行电气隔离的框图

ADUM5020可为本地LTC4331/LTC4332提供高达100mA的隔离电源。


电路评估与测试

以下部分介绍CN0564如何设定和测试。EVALCN0564-ARDZ可以与Arduino或Arduino相容设备配合使用,以利用EVAL-ADXL357Z读取加速度数据,进而轻松评估SPI(LTC4332)和I2C(LTC4331)扩展器。以下部分侧重于在EVAL-CN0564-ARDZ上设定SPI扩展器(本地和远端LTC4332)。


设备要求

*具有USB埠的PC


*EVAL-CN0564-ARDZ 评估板


*EVAL-ADXL357 评估板


*EVAL-XLMOUNT1


*Arduino UNO Rev 3


*USB A型转USB B型电缆


*跳接缐


*5V/3.3V 电源


开始使用

1.下载为评估EVAL-CN0564-ARDZ评估板上的SPI或I2C扩展器而提供的 Arduino草图,并使用其对Arduino进行编程。


2.将EVAL-CN0564-ARDZ板插入Arduino Uno Rev 3


3.将EVAL-CN0564-ARDZ上的 LTC4332(远端侧)连接到 EVAL-ADXL357


4.使用双绞缐中的跳接缐将 LTC4332(本地侧)连接到 LTC4332(远端侧)


5.跳接缐连接如下:


a.正确放置 P10 跳接缐,使得 P10 上的接脚 2 和 3 在 EVAL-CN0564-ARDZ 上相连。这将选择 5V 电源选项。


b.JP1 跳接缐应放置到位置 D,以将本地 LTC4332 上的从元件/晶片选择接脚连接到 Arduino UNO Rev 3 上的 D10 接脚。


c.JP5 跳接缐应放置到位置 A,以将本地 LTC4332 上的 LINK 接脚连接到 Arduino UNO Rev 3 上的 D6 接脚。


d.JP3 跳接缐应放置到位置 B,以将本地 LTC4332 上的中断接脚连接到 Arduino UNO Rev 3 上的 D2 接脚。


e.预设情况下,远端 LTC4332 选择速度索引 8。本地侧的速度索引应与远端侧相同。


f.应将 P1 跳接缐放置到位,使得其接脚 2 和 3 相连。同样,还应将 P2 跳接缐放置到位, 使得其接脚 2 和 3 相连。这将选择速度索引 8 以匹配本地侧的速度索引。


g.正确放置 P19 跳接缐,使得其接脚 1 和 2 相连。这会将本地 LTC4332 上的 ON 接脚连接到 IOREF。这将启用输入。


图8 : 本地和远端 LTC4332 上的跳接缐配置
图8 : 本地和远端 LTC4332 上的跳接缐配置

系统测试

将EVAL-ADXL357Z和远端LTC4332安装在EVALXLMOUNT1上,然后接通为电路板供电的电源。现在应能够在EVAL-CN0564-ARDZ板上看到3个LED 闪烁(本地2个LED,远端侧1个LED)。完整系统框图参见图9。


MEMS加速度计(远端侧EVAL-ADXL357Z上)读取的X、Y和Z资料,将显示在Arduino串列监视器上。退出Arduino串列监视器并运行Python Real Time ADXL357 Data Plotter可执行档,查看加速度数据的即时图,如图10所示的图形。 X、Y和Z加速度(g)资料由python脚本储存在三个单独的档中,可以在包含可执行档的位置中找到。



图9 : 採用 ADXL357 和 Arduino UNO Rev 3 的 EVAL-CN0564-ARDZ 系统测试设定
图9 : 採用 ADXL357 和 Arduino UNO Rev 3 的 EVAL-CN0564-ARDZ 系统测试设定
图10 : 加速度数据的即时图
图10 : 加速度数据的即时图

也可以获得图11所示的FFT分析,以使用所获得的 X、Y和Z资料识別目标频率。FFT分析常用于监视旋转零件的健康状况。预测性维护(PdM)是智慧产业的关键组成部分,其涉及在运行期间监控设备以检测潜在故障的预警迹象。


图11 : Z轴加速度数据的 FFT 分析
图11 : Z轴加速度数据的 FFT 分析