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

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

    关注

    2573

    文章

    54369

    浏览量

    786069
  • 测试
    +关注

    关注

    8

    文章

    6027

    浏览量

    130720
  • 仿真
    +关注

    关注

    53

    文章

    4406

    浏览量

    137671

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SPII2CUART三种串行总线的区别与对比

    1)概念定义 SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS:意为IC之间总线)
    发表于 11-20 07:19

    SPII2CI2S、UART:通信协议解释

            在嵌入式开发中,最常用的几种通信接口无非就是SPII2CI2S、UART。名字看起来差不多,但应用场景和特性却大不相同。为什么都叫
    的头像 发表于 11-18 10:53 204次阅读

    SPII2CI2S、UART:通信协议对比表

    在嵌入式开发中,最常用的几种通信接口无非就是SPII2CI2S、UART。名字看起来差不多,但应用场景和特性却大不相同。很多初学者容易混淆:为什么都叫
    的头像 发表于 11-17 10:53 1168次阅读
    <b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>、<b class='flag-5'>I2</b>S、<b class='flag-5'>UART</b>:通信协议对比表

    I2C总线复用

    帝晶智慧屏I2C总线复用
    的头像 发表于 03-11 17:20 1853次阅读

    I2C总线通信原理 如何设计I2C总线电路

    、高效的通信接口标准。I2C总线通信原理主要包括以下要点: 总线结构 : I2C总线仅使用两条信号线,即
    的头像 发表于 01-31 15:01 1879次阅读

    I2C总线的优缺点分析

    I2C总线作为一种广泛使用的串行通信协议,以其简单性和高效性在嵌入式系统中占据着重要地位。 I2C总线的优点 1. 简单性和低成本
    的头像 发表于 01-17 15:50 1763次阅读

    I2C总线数据包结构详解

    I2C(Inter-Integrated Circuit)总线是一种用于连接微控制器和各种外围设备的通信协议。它使用两条线:串行数据线(SDA)和串行时钟线(SCL),实现了设备之间的
    的头像 发表于 01-17 15:46 1391次阅读

    I2C总线与Arduino的接口示例

    基础 I2C总线由两条线组成:数据线(SDA)和时钟线(SCL)。SDA用于传输数据,而SCL用于同步数据传输。I2C设备可以是主设备或从设备。主设备生成时钟信号并启动数据传输,从设备
    的头像 发表于 01-17 15:34 2360次阅读

    I2C总线的工作模式介绍

    在现代电子系统中,I2C总线作为一种多主机、多从机的串行通信协议,扮演着至关重要的角色。它允许多个设备共享同一总线,进行数据传输,从而简化了系统设计并降低了成本。
    的头像 发表于 01-17 15:32 1635次阅读

    I2C总线协议详细解析

    总线以其简单性、灵活性和低功耗而闻名,广泛应用于嵌入式系统中。 2. I2C总线的基本组成 I2C总线
    的头像 发表于 01-17 15:22 1572次阅读

    I2C总线故障排除技巧

    I2C总线是一种广泛使用的串行通信协议,它允许多个设备在两条线上(数据线SDA和时钟线SCL)进行通信。由于其简单性和灵活性,I2C总线在嵌
    的头像 发表于 01-17 15:20 3864次阅读

    I2C总线与单片机的连接

    在现代电子系统中,单片机(MCU)是核心控制单元,而I2C总线作为一种多主机、多从机的串行通信协议,因其简单、高效和节省引脚的特性而被广泛应用于各种电子设备中。 I2C
    的头像 发表于 01-17 15:18 1971次阅读

    I2C总线应用实例分析

    在现代电子系统中,I2C总线因其简单、灵活和高效的特点而被广泛应用于各种设备之间的通信。 I2C总线概述 I2C
    的头像 发表于 01-17 15:09 1242次阅读

    I2C总线SPI总线的比较

    在现代电子系统中,微控制器与各种外设之间的通信是必不可少的。I2CSPI是两种流行的串行通信协议,它们各自具有独特的特点和应用场景。 I2C总线
    的头像 发表于 01-17 15:08 1714次阅读

    为什么嵌入式调试经常用UART,却很少用SPII2C或USRT?

    在嵌入式调试中经常使用 UART(通用异步收发传输器)而较少使用 SPI串行外设接口)、I2C(集成电路总线)或 USRT(通用
    的头像 发表于 12-18 09:58 1139次阅读
    为什么嵌入式调试经常用<b class='flag-5'>UART</b>,却很少用<b class='flag-5'>SPI</b>、<b class='flag-5'>I2C</b>或USRT?