主要内容

本页采用了机器翻译。点击此处可查看英文原文。

使用 CAN 模块进行通信

本示例展示了如何使用 CAN 模块在目标硬件和主机之间建立 CAN 通信,以支持 Texas Instruments™ C2000™ Microcontroller Blockset。

简介

通过这个示例,您将:

  • 学习如何使用目标硬件上的 CAN Transmit 和 Receive 模块以及主机上的 Vehicle Network Toolbox™ (VNT) CAN Transmit 和 Receive 模块在目标硬件和主机之间建立通信。

  • 演示如何使用接收过滤在目标硬件上接收具有标准 ID 和扩展 ID 的特定消息。

  • 演示如何使用轮询和中断方法接收目标硬件上的数据。

前提条件

完成以下教程:

所需硬件:

  • 任何带有 CAN 模块的 Texas Instruments™ C2000™ 开发板。

  • Vector CAN 硬件。

注意:如果您尝试在 Launchpad 上运行此示例,请将 TX 和 RX 引脚连接到 Vector CAN 设备。对于控制卡,需要在 Vector CAN 设备和控制卡之间连接一个收发器(TCAN EVM 收发器)。

任务 1 - 主机与目标硬件之间的 CAN 通信

在这个任务中,您需要分两部分将计数器数据从主机传输到目标硬件。

  • 当目标硬件收到来自主机的新消息时,它会使用不同的消息 ID 将该数据发送回主机。

  • 然后主机显示已发送和已接收的 CAN 信号。

目标模型

1.打开目标模型 c28x_CAN_comm.slx

2.示例模型配置为 TI Piccolo F28069M launchpad。要选择不同的目标硬件,请在 Simulink® 编辑器中浏览至配置参数 > 硬件实现 > 硬件板

3.导航至硬件实现>目标硬件资源>CAN_A,并确保将波特率设置为 1Mbps

4.该模型配置为在 0.05s 采样时间接收数据,并在收到消息后使用不同的消息 ID 发送相同的数据。

5.以下是针对目标模型完成的 CAN 模块配置。双击模块即可打开模块参数配置。如果要在其他硬件板上运行此示例,请确保指定的参数值相同。

  • 接收到的长度用作输入,以提取从主机传输的特定数据。

6.硬件选项卡中点击构建、部署和启动或按 Ctrl+B 构建并下载可执行文件。

运行主机模型

1.打开主机 c2000_host_CAN_comm.slx 模型。

2.配置设备以进行 CAN 配置、CAN 发送和 CAN Receive 模块。请确保在 CAN configuration 模块中将 baud rate 设置为 1Mbps

注意

  • 本示例中的模型使用 Vector VN1610 1 硬件。但是,您可以将您的模型连接到其他支持的硬件。

  • 根据您的配置选择 CAN 设备和通道。

  • 主机上的 CAN 配置、CAN 发送和 CAN Receive 模块来自 Vehicle Network Toolbox™ 库。

3.停止时间设置为无限,然后点击运行下拉菜单,并启用仿真速,以确保与目标进行实时通信。

4.点击运行

5.观察并比较从目标硬件接收的 CAN 数据和从主机发送的 CAN 数据。

任务 2 - 在目标硬件上使用接收过滤来接收特定消息

在本任务中,您将在主机模型和目标模型中执行以下操作:

主机

  • 以不同的速率向目标发送多个标准消息和扩展消息。

  • 接收来自目标的消息并进行比较。

目标

  • 使用两种方法(轮询和中断)从主机接收标准消息和扩展消息。

  • 使用 ID 过滤仅接收来自主机的所需消息。

  • 将接收到的数据以不同的 ID 发送回主机进行比较。

目标模型

1.打开目标模型 c28x_CAN_acceptance_filtering.slx

2.示例模型配置为 TI Piccolo F28069M launchpad。要选择不同的目标硬件,请在 Simulink 编辑器中浏览到配置参数 > 硬件实现 > 硬件板

3.导航至硬件实现>目标硬件资源>CAN_A,并确保将波特率设置为 1Mbps

4.目标硬件以 0.001 的速率使用轮询方法接收标准 ID 消息,并使用中断方法接收扩展 ID 消息(使用 CAN1INTA 接收)。

5.以下是针对目标模型完成的 CAN 模块配置。双击模块即可打开模块参数配置。如果要在其他硬件板上运行此示例,请确保指定的参数值相同。

  • CAN 接收模块配置为接收如下所示的标准消息:

  • CAN 接收模块配置为接收扩展消息,如下所示:

6.收到新消息后,目标硬件会将接收到的数据连同更新后的消息 ID 一起发送出去。根据从 CAN 接收块接收到的消息,可以使用多个 CAN Transmit 模块发送具有不同消息标识符的标准或扩展消息。

7.硬件选项卡中点击构建、部署和启动或按 Ctrl+B 构建并下载可执行文件。

在主机模型上运行

1.打开主机 c2000_host_CAN_acceptance_filtering.slx 模型

2.配置设备以进行 CAN 配置、CAN 发送和 CAN Receive 模块。确保在 CAN configuration 模块中将波特率设置为 1Mbps。

3.该模型配置为发送具有不同标准 ID 和扩展 ID 的三条消息。

4.CAN Transmit 模块配置为以以下采样率与 Standard IDs 模块一起传输消息:

  • hex2dec('0x00000371'): at 0.005

  • hex2dec('0x00000372'): at 0.007

  • hex2dec('0x00000374'): at 0.009

5.CAN Transmit 模块配置为以以下采样率与 Extended IDs 模块一起传输消息:

  • hex2dec('0x1C00000B'): at 0.005

  • hex2dec('0x1C000003'): at 0.007

  • hex2dec('0x1C000007'): at 0.009

6.主机模型有两个 Receive 模块,一个接收所有标准消息,另一个接收所有扩展消息,采样时间为 0.001 秒。

7.停止时间设置为无限,然后点击运行下拉菜单,并启用仿真起搏

8.点击运行

9.在 Display 模块中观察主机上接收到的 CAN 数据。接收到的数据与目标硬件上接收到的不同 ID 的消息的数据相对应。

接受度过滤行为分析

CAN Receive 模块在目标模型中配置为标准消息类型

  • 消息类型Standard

  • 消息标识符掩码hex2dec('0x00000007')

  • 消息标识符hex2dec('0x00000001')

由于消息标识符掩码设置为 hex2dec('0x00000007'),因此仅考虑消息标识符的最后 3 位进行过滤。

消息标识符中的这 3 位设置为 1,因此,在目标硬件上,它只能接收标准 ID hex2dec('0x00000371') 的消息。

CAN Receive 模块在目标模型中配置了扩展消息类型

  • 消息类型Extended

  • 消息标识符掩码hex2dec('0x00000007')

  • 消息标识符hex2dec(''0x00000003'')

由于消息标识符掩码设置为 hex2dec('0x00000007'),因此仅考虑消息标识符的最后 3 位进行过滤。

消息标识符中的这 3 位设置为 3,即最后三位为 0x011。这意味着 ID 最后三位为 011 的消息将被接受。因此,在目标硬件上,它只能接收扩展 ID 为 hex2dec('0x1C00000B')hex2dec('0x1C000003') 的消息。

当目标收到这些消息时,它会将修改后的消息 ID 的相同数据传输给主机进行比较。目标硬件中修改后的消息 ID 如下所示:

主机根据目标硬件上过滤后的 ID 接收相应的 ID 和数据,并显示它们。

其他可以尝试的操作

  • 在配置为接收标准消息的 CAN Receive 模块中,将消息标识符参数更改为 hex2dec('0x00000002') or hex2dec('0x00000004'),以便在目标硬件上分别接收标准 ID 为 hex2dec('0x00000372') 或 hex2dec('0x00000374') 的消息。

  • 在配置为接收扩展消息的 CAN Receive 模块中,将消息标识符掩码参数更改为 hex2dec('0x00000003'),以接收所有具有扩展 ID 的消息。

有关详细信息