中国电子技术网

设为首页 网站地图 加入收藏

 
 

适合工业应用的鲁棒SPI/I2C通信

关键词:工业应用 SPI I2C总线

时间:2022-06-06 16:37:06      来源:ADI

对于控制器和外设之间的短距离电路板内连接,串行外设接口(SPI)和Inter-Integrated Circuit (I2C)接口是流行的事实上的通信标准。由于存在广泛的硬件和软件支持,SPI和I2C已被传感器、执行器和数据转换器制造商广泛采用。当控制器和外设位于同一电路板上、共享同一接地层且相距不远(不大于1米)时,这些接口的实现相当简单。

评估和设计支持

电路评估板
   CN0564参考设计板(EVAL-CN0564-ARDZ)

设计和集成文件
   原理图、布局文件、物料清单

电路功能与优势

对于控制器和外设之间的短距离电路板内连接,串行外设接口(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简化功能框图

ADI公司的Circuits from the Lab™电路由ADI工程师设计构建。每个电路的设计和构建都严格遵循标准工程规范,电路的功能和性能都在实验室环境中以室温条件进行了测试和检验。然而,您需负责自行测试电路,并确定对您是否适用。因而,ADI公司将不对由任何原因、连接到任何所用参考电路上的任何物品所导致的直接、间接、特殊、偶然、必然或者惩罚性的损害负责。(下接最后一页)
 
电路描述

I2C信号标准综述

I2C是用于双向双线接口的串行协议,可将EEPROM、模数和数模转换器、I/O接口及其他外设连接到嵌入式处理器。由于简单且可扩展,它在传感器领域非常受欢迎。总线上可以存在多个器件,每个器件都有自己的唯一地址。它只需要2条线便可在器件之间传输数据。这2条线包括:

• SCL - 串行时钟信号线
• SDA - 用于在控制器和外设之间发送和接收数据的串行数据线
• SCL和SDA信号是开漏逻辑,I2C总线规范和用户手册(规范 - I2C总线)中定义了逻辑电平和时序规格

给定I2C总线上可以存在的外设数量受地址空间和最大400 pF的总线总电容限制。开漏逻辑具有相对较高的阻抗和较低的噪声抗扰度,这就要求所有外设以低阻抗连接到公共接地回路,并且在100kHz时,最大总线长度以大约一米为限。CN0564则不同,它具有差分收发器,可将总线长度扩展至1200米,并能承受控制器和外设之间最高±15V的共模压差。

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

常见I2C总线速度为100 kHz标准模式和400 kHz快速模式。LTC4331控制器接口支持最高2000 kHz的所有常见I2C时钟速率。然而,在高时钟频率和长电缆的情况下,强烈建议使用完全支持SCL时钟延展的控制器。(更多信息请参阅LTC4331数据手册)

SPI信号标准综述

串行外设接口(SPI)是一种同步串行通信接口规范,用于短距离通信,主要用在嵌入式系统中。与I2C不同,SPI的定义不严格。它支持多种时钟频率、逻辑电平和时序关系,需要仔细检查控制器和外设规格。SPI是全双工通信(即数据既可从控制器流向外设,同时也可从外设流向控制器)。

SPI物理层由4个信号组成:

• SCLK - 串行时钟,通常由控制器驱动
• MISO - 控制器数据输入、外设数据输出
• MOSI - 控制器数据输出、外设数据输入
•  - 片选使能与外设通信。每个外设需要一条线。

SPI引脚使用推挽逻辑(而不是开漏),控制器和外设之间的逻辑电平必须匹配。每个外设都需要自己的信号,这使SPI总线的物理扩展进一步复杂化。


图2.SPI配置模式

时钟和数据之间支持四种不同的时序关系,分别称为模式0、1、2、3,对应于四种可能的时钟配置。每个事务都是在片选线被驱动到逻辑低电平时开始(片选通常是低电平有效信号)。片选、数据和时钟线之间的确切关系取决于时钟极性(CPOL)和时钟相位(CPHA)的配置。这四种模式总结在图2中。

LTC4332最多支持3个远程外设,每个外设都有自己的 eq sup4(f(,CS))线。每个外设的SPI模式都可以独立设置为模式0、1、2或3。数据从控制器透明地传输到外设,但从外设到控制器的数据会引入一个字的延迟。有关更多信息,请参阅一字延迟 - SPI读取命令部分。

系统拓扑

CN0564使用LTC4331和LTC4332来扩展I2C和SPI信号,距离最长可达1200米。每个链路由一对器件组成,控制器侧配置为本地模式(REMOTE引脚接低电平),外设侧器件配置为远程模式(REMOTE引脚接高电平)。
 
电路描述

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

可选波特率

LTC4332/LTC4331可以使用可选速度索引(如表1和表2所示)改变链路波特率——即数据在本地和远程链路之间传输的速度。此速度索引通过配置链路和接口时序选择引脚SPEED1和SPEED2来设置,这两个引脚均为三态输入。

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

表1.LTC4331链路速度与电缆长度的关系

速度索引

有效I2C链路速率(kHz)

最大电缆长度(米)

8

1000

30

7

500

60

6

250

200

5

125

600

4

100

1200

3

63

1200+

2

31

1200+

1

20

1200+

0

12.5

1200+

表2.LTC4332链路速度与电缆长度的关系

速度索引

最大SCLK频率(kHz)

最大电缆长度(米)

8

2000

30

7

1000

60

6

500

150

5

250

250

4

125

500

3

83

750

2

63

1000

1

31

1200

0

25

1200+

增加电缆传输长度

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

共模电压和ESD鲁棒性

差分收发器工作在±25V(SPI扩展器)和±15V(I2C扩展器)的扩展共模范围内,因此它适合于高噪声环境或存在地电位差的系统(参见图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信号路径以适应传输延迟

电路描述

因此,对远程外设的SPI写请求是软件透明的,但对远程外设的SPI读请求会产生一个字的延迟,这意味着读取命令需要扩展一个字。若不如此,则当片选取消置位时,LTC4332 MISO移位寄存器中的最后一个字会丢失。WORD_LENGTH寄存器(参见LTC4332数据手册中的寄存器映射)表示LTC4332上MISO信号路径中的移位寄存器的深度,决定了SPI控制器何时开始在MISO线上接收有效数据。例如,若WORD_LENGTH为8,则在置为有效后经过8个时钟周期,用户将开始接收有效MISO数据。

故障监控

LTC4331/LTC4332 引脚表示通信链路的状态,驱动到低电平时表示远程I2C/SPI总线已加入本地I2C/SPI总线。

LTC4331/LTC4332支持中断信号,LTC4331上为  引脚,LTC4332上为引脚。这些信号从远程总线镜像到本地总线。在远程端,中断引脚是输入,可以连接到相连I2C/SPI外设的中断输出。在本地端,用作开漏输出,可以连接到共享本地中断线。如果使能,本地LTC4331/LTC4332的控制接口将使用 引脚报告链路和故障事件。本地侧ALERT/INT输出是远程与内部端点中断信号的逻辑“与”结果。

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


图4.读/写故障监控寄存器的控制接口时序图

LTC4331/LTC4332控制接口

要配置LTC4331/LTC4332链路本地侧的控制接口,可使用单独的内部可寻址外设。通过配置引脚A1和A2,可为本地LTC4331的内部接口分配一个唯一的I2C地址。LTC4332则提供了单独的片选引脚 eq sup4(f(,SSC)),允许用户与内部SPI可寻址寄存器通信。


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

LTC4331/LTC4332控制接口支持读取速度配置、链路状态和中断/警报状态,以及访问其他I2C/SPI特定选项。LTC4331可以配置为将I2C地址转换为远程外设,从而扩展I2C地址空间并防止地址冲突。LTC4332允许每个CS引脚使用独立的SPI模式配置,以及配置字长(用于确定所接收的数据延迟)。有关更多信息,请参阅LTC4331和LTC4332数据手册。

PCB尺寸

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


图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所示。

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


图7.包含对数据和电源信号进行电气隔离的框图

电路评估与测试

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

有关完整的设置详情,以及SPI和I2C扩展器(本地和远程LTC4331/LTC4332)上的设置说明,请访问EVAL-CN0564-ARDZ用户指南。

设备要求

• 带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上的 eq sup4(f(,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上的跳线配置

系统测试

将EVAL-ADXL357Z和远程LTC4332安装在EVAL-XLMOUNT1上,然后接通为电路板供电的电源。现在应能够在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系统测试设置

电路评估与测试


图10.加速度数据的实时图

也可以获得图11所示的FFT分析,以使用所获得的X、Y和Z数据识别目标频率。FFT分析常用于监视旋转部件的健康状况。预测性维护(PdM)是智能行业的关键组成部分,其涉及在运行期间监控设备以检测潜在故障的预警迹象。有关如何分析状态监控(CbM)系统中的振动数据的更多信息,请参阅此文章。


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

ESD警告

ESD(静电放电)敏感器件。带电器件和电路板可能会在没有察觉的情况下放电。尽管本产品具有专利或专有保护电路,但在遇到高能量ESD时,器件可能会损坏。因此,应当采取适当的ESD防范措施,以避免器件性能下降或功能丧失。

(上接第一页)Circuits from the Lab电路仅供与ADI公司产品一起使用,并且其知识产权归ADI公司或其授权方所有。虽然您可以在产品设计中使用参考电路,但是并未默认授予其它许可,或是通过此参考电路的应用及使用而获得任何专利或其它知识产权。ADI公司确信其所提供的信息是准确可靠的。不过,Circuits from the Lab电路是以“原样”的方式提供的,并不具有任何性质的承诺,包括但不限于:明示、暗示或者法定承诺,任何适销性、非侵权或者某特定用途实用性的暗示承诺,ADI公司无需为参考电路的使用承担任何责任,也不对那些可能由于其使用而造成任何专利或其它第三方权利的侵权负责。ADI公司有权随时修改任何参考电路,恕不另行通知。

  • 分享到:

 

猜你喜欢

  • 主 题:ADI电能计量方案:新一代直流表、三相电表和S级电能表
  • 时 间:2025.01.14
  • 公 司:ADI&DigiKey