博客
希望我们能与您分享和探讨成长中的点点滴滴
CANoe对SPI、UART和I2C等串行总线的同步仿真与测试
分享到
“转载自维克多汽车技术(上海)有限公司,作者Vector China”
在ECU和传感器系统中,除去各种汽车总线以及智能传感器之间的PSI5和SENT协议之外,在短距离和低成本通信场景中还会广泛使用SPI、UART、RS232、RS485、RS422和I2C等通用串行总线。在HIL系统中,如果被测对象涉及上述串行总线,则需要测试设备能够同时支持对应接口,实现测试、仿真及分析。在CANoe为平台的HIL系统中,I/O板卡VT2710同时支持PSI5/SENT以及上述串行总线协议,为构建经济型测试系统提供便利。
SPI简述与测试解决方案
SPI(Serial Peripheral Interface Bus,串行外设接口)常用于芯片之间通讯,没有具体标准技术规范,各厂家的实际方案可能存在一定差异性,如线束拓扑常见形式有四线SPI、三线SPI和isoSPI等,时序操作模式以及具体指令集定义等均需结合实际芯片手册进行开发和配置。最常见的SPI通讯需要4根线,可进行全双工通讯。
图1:SPI通信接口拓扑
当采用单主机多从机的通讯拓扑时,SCLK、MOSI、MISO均为1根线由主机并联至各从机,而CS片选信号线的数量,需要与从机数量对应。时序模式如图2。
图2:时序操作模式示意图
SPI除了引脚定义、时序操作、指令集多样以外,对于通讯速率、电平范围也无明确定义,需根据通讯芯片进行匹配。ECU中通常将SPI用于MCU与外设芯片之间的通讯,如EEPROM、看门狗等;在BMS领域的主从板菊花链通讯中,也通过SPI与外置通讯芯片进行交互(如Maxim、Analog Devices、NXP等)。
CANoe/VT2710对SPI的支持情况:
> 每块VT2710可以提供2个独立通道的四线SPI通讯,最多支持5路片选;
> SPI通讯电压范围支持0~6V,可进行星型或菊花链连接;
> 仿真SPI主机时最高支持10Mbps速率,仿真SPI从机时最高支持6Mbps速率。
SPI通讯指令集开发实现方式有3种:
> 用户自定义信号帧:CANoe内置清晰且便于使用的图形配置界面,用户可自由添加信号定义,实现SPI通讯“数据库”的制作。
图3:SPI参数及信号配置界面
> 原始通信帧:直接通过CAPL编程方式实现通讯指令集开发,CANoe提供MISO和MOSI读写队列函数,将需要发送的数据写进VT2710缓存队列,用于灵活和快速的通讯交互。
> FPGA封装高速帧:当通讯过程中需要微秒或纳秒级的数据响应,并且需要动态结合前帧指令进行判断并响应时,可以使用FPGA编程进行SPI指令集开发。VT2710默认集成可自编程的FPGA芯片,用户可选VHDL语言或Intel® DSP Builder Advanced Blockset Builder进行FPGA开发。
图4:SPI实际通讯展示
UART简述与测试解决方案
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。UART通讯需要2根线:TX发送数据,RX接收数据。UART在汽车行业内用于座舱和触摸信号等附属设备的交互,还可扩展为LIN通讯接口使用。
图5:UART通讯接口拓扑
UART帧以一个起始位(逻辑0)开始, 然后是7~9个数据位,由一个可选的奇偶校验位以及一个或两个停止位(逻辑1)完成,该位同时用于接收节点的同步。
图6:UART数据帧格式
CANoe/VT2710对UART的支持情况:
> 每块VT2710可以提供2个独立通道的UART通讯;
> 可以自定义电平,也可使用RS232、RS485、RS422等电平逻辑进行通讯;
> 自定义内部电平支持最高6V,通讯速率最高支持1Mbps;
> 用户可通过系统变量、CAPL函数或FPGA编程方式实现UART通讯。
图7:UART通讯配置界面
RS232、RS485和RS422简述与测试解决方案
RS-232是美国电子工业联盟(EIA)制定的串行数据通信的接口标准。由于RS232标准未对编码方式、帧的构成方式、传输顺序、错误检测机制做出规定,一般会使用UART的字符格式和传输比特率设置,当然也可由用户自定义协议。不同于TTL电平,RS232规定逻辑“1”的电平为-15V~-3 V,逻辑“0”的电平为+3V~+15V。
RS485(现称EIA-485)是TIA及EIA联合发布的物理层标准,在干扰环境下进行长距离的高效通信,支持在一个网络上有多个接收器的总线拓扑,适用于环境耐久等试验环境。RS485是双线、半双工、差分电压信号通讯,通讯速率上限随线束长度而定,一般10米时最高35Mbit/s,1200米时最高100kbit/s。
RS422(现称EIA-422)同样是TIA及EIA联合发布的物理层标准,旨在提供更高速度、更好的抗噪性和更长电缆长度的标准。传输数据速率可以高达10Mbit/s,在较低的速率下可在长达1500米的电缆上发送数据。RS422采用4线、全双工、差分电压信号通讯。RS422只能有1个发送端,多个接收端,因此其全双工是主从节点之间的点对多点双向通讯。由于RS485/422未定义具体的上层协议,实际使用中常会使用UART、Modbus、Profibus协议。RS232、RS485、RS422在汽车行业中用于GNSS数据传输、车机与附属部件交互数据,以及测试时控制电源、环境舱等设备的场景。
CANoe/VT2710对RS232、RS485和RS422的支持情况:
> 每块VT2710可提供2路RS232,2路RS485/RS422(复用二选一);
> 编码方式均默认提供UART编码;
> 用户可通过系统变量、CAPL函数或FPGA编程方式实现对应通讯。
图8:RS485配置及板卡控制界面
I²C简述与测试解决方案
I²C Bus(Inter-Integrated Circuit Bus,内部集成电路总线)是一种同步、多主从、分组交换、单端的串行通讯总线,主要用于短距离、板内通讯中将低速的外部芯片连接至CPU/MCU。I²C使用2条双向开漏(Open-Drain)通讯线:SDA(Serial Data Line)用于传输数据,SCL(Serial Clock Line)用于控制通讯过程,需上拉电阻,常用电平为+5V或+3.3V。常见通讯速率有标准模式100kbit/s和快速模式400kbit/s。新一代I²C总线可以支持快速模式400 kbit/s、更快速模式1 Mbit/s、高速模式3.4 Mbit/s和 超快速模式5 Mbit/s。I²C 通信始终按照以下流程进行:
> Master主机在总线上产生一个启动条件;
> Master主机发送Slave从机地址和读/写位请求,对应的Slave从机产生ACK应答(低电平),Master主机根据读/写位切换为发送方或接收方模式;
> 数据在Master主机和被寻址的Slave从机之间按字节进行数据传输,相应的接收方通过 ACK 进行应答(低电平);
> Master主机在总线上产生一个停止条件。
此外,主机可以发起另一个启动条件而非停止条件,从而立即启动新的数据传输。此过程称为重复启动。I²C在汽车领域常用于MCU与EEPROM、GPIO芯片等集成电路通讯,也会用于触摸指令传输、摄像头光圈/曝光度控制等交互。
图9:I²C通讯过程数据结构示意图
CANoe/VT2710对I²C的支持情况:
> 每块VT2710支持最多2路I²C总线,可以仿真Master主机或Slave从机;
> 支持100kb/s、400kb/s、1Mb/s三种典型速率,最低可配置为50kb/s,最高可配置为1.6Mb/s;
> 高电平电压(0~6V)、上拉电阻(4.7kΩ)是否接入均可配置。
在Sensor Protocol Configuration窗口,可以添加所需I²C总线通道,对于Slave从机可以配置其寻址长度、Slave从机地址、是否对供应商ID等信息进行响应等,对于I²C报文可以配置其读/写长度,以及具体信号的Layout及序列化规则,方便直接通过系统变量进行数据读/写。与其他串行总线一样,除直接通过系统变量进行操作外,也可通过CAPL操作原始帧、FPGA编程开发指令集等方式进行应用。
图10:I²C 总线报文配置界面
CANoe为I²C的应用提供1主2从的示例工程,利用VT2710的两个通道分别仿真主、从,用户可以基于该示例工程进行修改,创建符合自身使用场景的项目工程。
图11:I²C 应用示例工程界面