特殊指令:CAN通讯


Can_Config:CAN通讯配置

CAN通讯配置指令用于设定CAN通讯参数,即波特率。

参数名称数据类型读写方向说明
EN能流输入当EN使能时,进行对通讯端口的波特率配置;CAN通讯模块会比较设定值与当前值,只有在设定值发生变化时,才重新配置CAN硬件。
PortUSINT输入需要配置的CAN通讯端口。
BaudRateUDINT输入设定的波特率,即位速率,单位为:bit/S。

CAN通讯配置指令会遍历所有的硬件分频,使用误差最小的方式来实现需要设定的波特率。

Can_Enable:CAN报文接收开启

CAN报文接收开启指令打开一个CAN报文接收筛选器,如果接收到的报文匹配此筛选器规则,则接收此报文。

参数名称数据类型读写方向说明
EN能流输入当EN使能时,进行对筛选器进行配置;CAN通讯模块会比较设定值与当前值,只有在设定值发生变化时,才重新配置筛选器。
PortUSINT输入需要配置的CAN通讯端口。
EpUSINT输入筛选器的编号,范围是:0 - 4。
IdUDINT输入筛选器ID。
IdMskUDINT输入筛选器ID掩码。
FMskUSINT输入可接收CAN报文的类型掩码(暂未实现)。

可接收报文的ID为:接收报文ID与上筛选器ID掩码等于筛选器ID。

  • 若筛选器ID掩码等于0;筛选器ID等于0,则表示可以接收任意ID的CAN报文。
  • 若筛选器ID掩码等于16#000000FF;筛选器ID等于16#00000080,则表示可以接收报文的ID最后8位必须为16#80。
  • 若筛选器ID掩码等于0;筛选器ID等于1,则表示不接收任何报文。

Can_Disable:CAN报文接收禁止

CAN报文接收禁止指令关闭一个CAN报文接收筛选器。

参数名称数据类型读写方向说明
EN能流输入当EN使能时,进行对筛选器进行配置;CAN通讯模块会比较设定值与当前值,只有在设定值发生变化时,才重新配置筛选器。
PortUSINT输入需要配置的CAN通讯端口。
EpUSINT输入筛选器的编号,范围是:0 - 4。

Can_Transmit:CAN报文发送

CAN报文发送指令发送一个CAN报文。

参数名称数据类型读写方向说明
EN能流输入当EN使能时,进行CAN报文的发送。指令会维护一个报文发送缓冲队列,可以同时发送多个CAN报文,而不必等待上一个CAN报文发送完成。
PortUSINT输入发送报文的CAN通讯端口。
FlagUSINT输入CAN报文的类型:Bit0:是否为扩展帧;Bit1:是否为远程帧。
DatLenUSINT输入CAN报文的数据长度,范围是:0 - 8。
DatUSINT输入CAN报文的数据。
DoneBIT输出0:CAN报文写入队列失败;1:CAN报文写入队列成功,即将发送。

Can_Receive:CAN报文接收

CAN报文接收指令接收一个CAN报文。

参数名称数据类型读写方向说明
EN能流输入当EN使能时,进行CAN报文的接收。指令会维护一个报文接收缓冲队列,指令只尝试在缓冲中取CAN报文。而不必等待。
PortUSINT输入接收报文的CAN通讯端口。
FlagUSINT输出CAN报文的类型:Bit0:是否为扩展帧;Bit1:是否为远程帧。
DatLenUSINT输出CAN报文的数据长度,范围是:0 - 8。
DatUSINT输出CAN报文的数据。
DoneBIT输出0:接收缓冲中没有报文;1:接收缓冲中有报文被读取。