0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CANoe对SPI、UART和I2C等串行总线的同步仿真与测试

Vector维克多 来源:Vector维克多 作者:Vector China 2021-09-02 18:17 次阅读

在ECU和传感器系统中,除去各种汽车总线以及智能传感器之间的PSI5和SENT协议之外,在短距离和低成本通信场景中还会广泛使用SPI、UARTRS232RS485RS422I2C等通用串行总线。在HIL系统中,如果被测对象涉及上述串行总线,则需要测试设备能够同时支持对应接口,实现测试、仿真及分析。在CANoe为平台的HIL系统中,I/O板卡VT2710同时支持PSI5/SENT以及上述串行总线协议,为构建经济型测试系统提供便利。

SPI简述与测试解决方案

SPI(Serial Peripheral Interface Bus,串行外设接口)常用于芯片之间通讯,没有具体标准技术规范,各厂家的实际方案可能存在一定差异性,如线束拓扑常见形式有四线SPI、三线SPI和isoSPI等,时序操作模式以及具体指令集定义等均需结合实际芯片手册进行开发和配置。最常见的SPI通讯需要4根线,可进行全双工通讯。

当采用单主机多从机的通讯拓扑时,SCLK、MOSI、MISO均为1根线由主机并联至各从机,而CS片选信号线的数量,需要与从机数量对应。时序模式如图2。

SPI除了引脚定义、时序操作、指令集多样以外,对于通讯速率、电平范围也无明确定义,需根据通讯芯片进行匹配。ECU中通常将SPI用于MCU与外设芯片之间的通讯,如EEPROM看门狗等;在BMS领域的主从板菊花链通讯中,也通过SPI与外置通讯芯片进行交互(如MaximAnalog Devices、NXP等)。

CANoe/VT2710对SPI的支持情况:

每块VT2710可以提供2个独立通道的四线SPI通讯,最多支持5路片选;

SPI通讯电压范围支持0~6V,可进行星型或菊花链连接;

仿真SPI主机时最高支持10Mbps速率,仿真SPI从机时最高支持6Mbps速率。

SPI通讯指令集开发实现方式有3种:

用户自定义信号帧:CANoe内置清晰且便于使用的图形配置界面,用户可自由添加信号定义,实现SPI通讯“数据库”的制作。

原始通信帧:直接通过CAPL编程方式实现通讯指令集开发,CANoe提供MISO和MOSI读写队列函数,将需要发送的数据写进VT2710缓存队列,用于灵活和快速的通讯交互。

FPGA封装高速帧:当通讯过程中需要微秒或纳秒级的数据响应,并且需要动态结合前帧指令进行判断并响应时,可以使用FPGA编程进行SPI指令集开发。VT2710默认集成可自编程的FPGA芯片,用户可选VHDL语言或Intel DSP Builder Advanced Blockset Builder进行FPGA开发。

UART简述与测试解决方案

UART(Universal Asynchronous Receiver

/Transmitter,通用异步收发传输器)是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。UART通讯需要2根线:TX发送数据,RX接收数据。UART在汽车行业内用于座舱和触摸信号等附属设备的交互,还可扩展为LIN通讯接口使用。

UART帧以一个起始位(逻辑0)开始, 然后是7~9个数据位,由一个可选的奇偶校验位以及一个或两个停止位(逻辑1)完成,该位同时用于接收节点的同步。

CANoe/VT2710对UART的支持情况:

每块VT2710可以提供2个独立通道的UART通讯;

可以自定义电平,也可使用RS232、RS485、RS422等电平逻辑进行通讯;

自定义内部电平支持最高6V,通讯速率最高支持1Mbps;

用户可通过系统变量、CAPL函数或FPGA编程方式实现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编程方式实现对应通讯。

I2C简述与测试解决方案

I2C 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编程开发指令集等方式进行应用。

CANoe为I²C的应用提供1主2从的示例工程,利用VT2710的两个通道分别仿真主、从,用户可以基于该示例工程进行修改,创建符合自身使用场景的项目工程。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2525

    文章

    48057

    浏览量

    739952
  • 测试
    +关注

    关注

    8

    文章

    4439

    浏览量

    125119
  • 仿真
    +关注

    关注

    50

    文章

    3872

    浏览量

    132147

原文标题:CANoe对SPI、UART和I2C等串行总线的同步仿真与测试

文章出处:【微信号:VectorChina,微信公众号:Vector维克多】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问哪些PSoC 4000设备支持I2CSPIUART

    哪些 PSoC 4 设备支持 I2CSPIUART? 使用 PSoC Creator 中的设备选择器会显示所有 PSoC 4000 设备都有通信块。设备选择器并未说明这些通信块支持什么。 我
    发表于 01-31 07:31

    蓝牙串口通讯总线——I2C/SPI/UART

    嵌入式工程师在做串口通信调试工作的时候,会经常用到I2CSPIUART这3条总线I2CSPI
    的头像 发表于 01-22 09:41 378次阅读
    蓝牙串口通讯<b class='flag-5'>总线</b>——<b class='flag-5'>I2C</b>/<b class='flag-5'>SPI</b>/<b class='flag-5'>UART</b>

    最简单的总线通讯!I2C通讯总线的原理原来这么好懂

    通讯I2C
    安泰仪器维修
    发布于 :2024年01月02日 11:16:31

    【先楫HPM5361EVK开发板试用体验】RT-Thread I2C使用

    RT-Thread 的I2C简介 I2C(Inter Integrated Circuit)总线是 PHILIPS 公司开发的一种半双工、双向二线制同步
    发表于 12-25 23:57

    UARTSPII2C比较 串口通信介绍

    UARTSPII2C比较 I2C线更少,比UARTSPI更为强大,但是技术上也更加麻烦些,
    的头像 发表于 11-09 18:06 742次阅读
    <b class='flag-5'>UART</b>、<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>比较 串口通信介绍

    I2CSPIUART:如何布局这些通用总线

    UART等协议与下游MCU或可编程IC进行接口。I2C总线SPI总线UART
    的头像 发表于 11-08 17:33 421次阅读
    <b class='flag-5'>I2C</b>与<b class='flag-5'>SPI</b>与<b class='flag-5'>UART</b>:如何布局这些通用<b class='flag-5'>总线</b>

    AT32F423 I2C使用指南

    AT32 的 I2C 总线接口用于处理微控制器和串行 I2C 总线之间的通信,支持主机和从机模式,支持唤醒深睡眠模式,最大通信速度为 1Mb
    发表于 10-26 06:33

    ROCKCHIP I2C开发指南

    vs-rk3399与vs-rk3288板卡 linuxi2c 简单文档描述分享前言 rockchip系列芯片为客户提供了标准i2c 总线,方便客户实现对不同外接设备的控制和访问。i2c
    发表于 10-09 08:00

    终于搞清了:SPIUARTI2C通信的区别与应用!

    使用的方法 缺点 数据帧的大小最大为9位 不支持多个从属系统或多个主系统 每个UART的波特率必须在彼此的10%之内 I2C通信 I2C总线是由Philips公司开发的一种简单、双向二
    发表于 10-07 17:01

    CAN、I2S、I2CSPI、SSP总线简介

    串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Mot
    发表于 09-27 06:58

    I2C串行总线协议是什么?I2C总线有哪些优点?

    I2C串行总线协议是什么?I2C总线有哪些优点? I2C(Inter-Integrated Ci
    的头像 发表于 09-12 11:18 810次阅读

    I2C总线的使用与编程

    I2C总线是飞利浦公司在20世纪80年代初由S定义的一种二线制总线系统。I2C总线是一种双向的,专为简单但高效的控制应用而设计。 它广泛应用
    发表于 09-04 07:23

    I²C总线通信的应用方法

    可通过指令控制 驱动芯片SSD1306 接口I2C GD32VF103的I²C接口 GD32VF103的I²C(内部集成电路
    发表于 08-16 07:36

    基于 FPGA 的模拟 I2C协议系统设计

    TestBench仿真测试程序的方法。 第一篇内容摘要:本篇会介绍 I2C 总线解析,包括 I2C
    发表于 08-14 18:21

    I2C连接ESP8266没有结果怎么结果?

    我最后一次尝试用 I2C 连接 2x 8266。 一为主人,一为奴隶。 但没有结果。我在 Web 上阅读了很多内容并尝试了很多变体,但没有任何效果。 I2C 总线工作正常,因为我在同一
    发表于 06-02 12:11