27. HPM Ethercat转Can之网关
27.1. 依赖SDK1.10.0
27.2. 概述
本例程使用HPM6E系列芯片的Ethercat通信及Can通信功能,并基于ETG的5001.5000 ethercat转can协议,实现Ethercat通信转can通信功能。
特点:
基于ETG的5001.5000 ethercat转can协议,协议内容参考《ETG5001_3_V0i1i2_S_D_MDP_Gateways》的5000协议
支持设置Can参数
支持触发和循环发送两种模式
支持整帧或以字节方式发送或接收报文
支持远程帧 标准帧 远程帧
支持USB SH 命令行
支持module slot方式,动态修改PDO映射
27.3. 例程说明
27.3.1. 环境
27.3.1.1. SDK版本
V1.10.0
27.3.1.2. BOARD
HPM6E00EVK
27.3.2. 软件配置
27.3.2.1. A. SSC代码生成
新建SSC项目,选择Gateway2

如果没有Gateway2配置,依次点击Tool->Options->Configurations,并导入software/apps/ecat/gateway_apps_config.xml

依次点击Tool->Application->Import,导入software/apps/ecat/gateway_apps.xlsx

生成SSC代码,依次点击Project->Create new Slave Files,生成代码,同时生成gateway_apps.xml文件。Source Folder:hpm_apps\apps\gateway_ecat2can\software\apps\ecat\Src

注:可以直接使用gateway_apps.esp,该文件已经配置好相关参数,可以直接生成代码。
27.3.2.2. B. 生成工程
通过HPM SDK Project Generator生成segger工程

27.3.3. TwinCAT做主机使用说明
TwinCAT在OP状态
按照5001.5000协议,RxMessage_1为接收标准can帧,TxMessage_1为发送标准can帧,RxMessage1_1为接收扩展can帧,TxMessage1_1为发送扩展can帧。发送标准CAN帧,需要写入TxMessage_1,如发送 1 2 3 4 5 6 7 8 标准CAN帧 id=0

接收标准CAN帧,需要读取RxMessage_1

通过Trigger方式发送 当写入TxMessage_1后,通过主站写0x8000索引的32子索引的bit4为1,代表TriggerMode,bit2每写一次1,即可触发发送。

通过Cycle方式发送 当写入TxMessage_1后,通过主站写0x8000索引的32子索引的bit4为0,代表CycleMode,根据37子索引的值确定循环发送时间,即可循环发送。

设置Can参数 通过主站写0xF800索引的2子索引设置Can波特率
注:设置COE需要先将从设备切换到PREOP状态。
值与波特率对应关系
switch (ParameterSet0xF800.Baudrate)
{
case 0: //1M
mq_msg.param = 1000000;
break;
case 1: //800k
mq_msg.param = 800000;
break;
case 2: //500k
mq_msg.param = 500000;
break;
case 3: //250k
mq_msg.param = 250000;
break;
case 4: //125k
mq_msg.param = 125000;
break;
case 5: //100k
mq_msg.param = 100000;
break;
case 6: //50k
mq_msg.param = 50000;
break;
case 7: //20k
mq_msg.param = 20000;
break;
case 8: //10k
mq_msg.param = 10000;
break;
case 255: //defined in bustiming register
mq_msg.param = 255;
break;
default:
mq_msg.param = 1000000;
break;
}