跳转至

can

CAN (Controller Area Network) 提供控制器局域网通信功能,支持标准CAN和CAN-FD双协议栈,具备报文收发、过滤器配置、错误状态监控及TTCAN时间触发通信等能力。

头文件清单

#include "include/driver/can/v1/can.h"
#include "include/driver/can/v2/can_drv.h"

接口清单

接口名称 功能简述
uapi_can_init 初始化并配置CAN-FD
uapi_can_deinit 去初始化CAN-FD
uapi_can_send_msg CAN-FD请求发送报文
uapi_can_receive_msg CAN-FD从Rx-FIFO中读取CAN帧
uapi_can_callback_register 注册接收中断回调函数
uapi_can_callback_unregister 注销接收中断回调函数
uapi_can_get_controller_sts 查询CAN控制器错误状态
uapi_can_get_transmit_error_count 查询CAN控制器发送错误计数
uapi_can_get_receive_error_count 查询CAN控制器接收错误计数
uapi_can_get_rx_sts 查询CAN控制器RX脚电平
uapi_can_fd_config_tdc 配置CAN-FD的发送延迟补偿偏移
uapi_can_controller_init 初始化CAN控制器
uapi_can_controller_deinit 反初始化CAN控制器
uapi_can_controller_set_filter 设置CAN过滤器配置
uapi_can_controller_set_baudrate 设置CAN控制器波特率
uapi_can_controller_set_state 设置CAN控制器状态
uapi_can_controller_enable_interrupts 启用控制器中断
uapi_can_controller_disable_interrupts 禁用控制器中断
uapi_can_controller_get_error_state 获取CAN控制器错误状态
uapi_can_controller_get_state 获取CAN控制器工作状态
uapi_can_controller_get_rx_error_counter 获取CAN控制器接收错误计数器
uapi_can_controller_get_tx_error_counter 获取CAN控制器发送错误计数器
uapi_can_send 使用CAN控制器发送数据
uapi_can_send_cancel 取消待处理的CAN传输
uapi_can_controller_get_rx_sts 查询CAN控制器RX脚电平状态
uapi_can_register_tx_callback 注册发送回调函数
uapi_can_unregister_tx_callback 注销发送回调函数
uapi_can_register_tx_cancel_callback 注册发送取消回调函数
uapi_can_unregister_tx_cancel_callback 注销发送取消回调函数
uapi_can_register_rx_callback 注册接收回调函数
uapi_can_unregister_rx_callback 注销接收回调函数
uapi_can_register_bus_off_callback 注册总线关闭回调函数
uapi_can_unregister_bus_off_callback 注销总线关闭回调函数
uapi_can_register_wakeup_callback 注册唤醒回调函数
uapi_can_unregister_wakeup_callback 注销唤醒回调函数
uapi_can_register_state_callback 注册状态转移回调函数
uapi_can_unregister_state_callback 注销状态转移回调函数
uapi_can_process_write_polling CAN写操作轮询主函数
uapi_can_process_read_polling CAN读操作轮询主函数
uapi_can_process_bus_off_polling 处理总线关闭状态轮询主函数
uapi_can_process_wakeup_polling 唤醒操作轮询主函数
uapi_can_tt_config TTCAN基础配置
uapi_can_tt_ref_message_config TTCAN参考消息配置
uapi_can_set_time_trigger TTCAN时间触发器配置

Functions

uapi_can_init

errcode_t uapi_can_init(uint8_t bus, can_global_config_t *global_config, can_filter_list_t *std_filter,
                        can_filter_list_t *ex_filter)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 初始化CAN-FD控制器,配置波特率、工作模式及滤波器
  • 支持标准CAN和CAN-FD双波特率配置,支持标准帧和扩展帧独立滤波
  • 需在调用其他CAN接口前完成初始化

前置条件

  • 调用时序约束:CAN控制器硬件已上电,相关引脚已配置
  • 依赖关系:CAN总线物理连接已建立

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1
global_config can_global_config_t * CAN-FD全局配置,包含波特率和工作模式配置 非NULL,std_baud_rate参考can_baud_rate_t,fd_baud_rate参考can_fd_baud_rate_t,point参考can_sample_point_t,can_mode参考can_mode_t
std_filter can_filter_list_t * CAN-FD标准标识符滤波配置 可为NULL;非NULL时filter_num < CONFIG_STANDARD_CAN_FILTER_NUM
ex_filter can_filter_list_t * CAN-FD扩展标识符滤波配置 可为NULL;非NULL时filter_num < CONFIG_EXTENDED_CAN_FILTER_NUM

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 初始化成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y
CONFIG_CAN_BUS_NUM 编译参与宏 控制CAN总线数量配置 1
CONFIG_STANDARD_CAN_FILTER_NUM 编译参与宏 控制标准CAN滤波器数量配置 27
CONFIG_EXTENDED_CAN_FILTER_NUM 编译参与宏 控制扩展CAN滤波器数量配置 27

uapi_can_deinit

void uapi_can_deinit(uint8_t bus)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 去初始化CAN-FD控制器,释放硬件资源
  • 自动注销已注册的接收中断回调函数
  • 当所有CAN总线均去初始化后,注销HAL层中断回调

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_init()初始化完成
  • 依赖关系:调用时需确保当前无正在进行的CAN数据收发操作

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y
CONFIG_CAN_BUS_NUM 编译参与宏 控制CAN总线数量配置 1

uapi_can_send_msg

errcode_t uapi_can_send_msg(uint8_t bus, can_msg_attr_t *can_msg, uint8_t *data, uint8_t length)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 请求发送CAN数据帧或远程帧
  • 支持标准CAN帧和CAN-FD帧发送,帧属性由can_msg参数指定
  • 发送操作受锁保护,保证并发安全

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_init()初始化完成
  • 依赖关系:CAN总线处于正常工作状态

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1
can_msg can_msg_attr_t * 预计发送的CAN数据帧和远程帧的仲裁域 非NULL,参考can_msg_attr_t
data uint8_t * 预计发送的数据 CAN帧: length ≤ 8;CAN-FD帧: length ≤ 64
length uint8_t 数据长度 fdf=0时 ≤ 8,fdf=1时 ≤ 64

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 发送请求成功
ERRCODE_INVALID_PARAM(0x80000001) 参数无效 bus超范围或can_msg为NULL或数据长度超限
ERRCODE_CAN_FD_NOT_INIT(0x80001422) CAN未初始化 CAN控制器未初始化
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y
CONFIG_CAN_BUS_NUM 编译参与宏 控制CAN总线数量配置 1

uapi_can_receive_msg

errcode_t uapi_can_receive_msg(uint8_t bus, uint8_t fifo_index, can_msg_attr_t *receive_msg,
                               uint8_t *data, uint32_t *length)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 从Rx-FIFO中读取接收到的CAN帧
  • 支持从不同FIFO索引读取数据
  • 读取到的帧仲裁域信息和数据通过出参返回

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_init()初始化完成
  • 依赖关系:Rx-FIFO中有已接收的数据

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1
fifo_index uint8_t 接收FIFO的索引 0 ~ 1

出参

名称 数据类型 输出说明
receive_msg can_msg_attr_t * 接收到的CAN帧仲裁域
data uint8_t * 接收数据的缓冲区
length uint32_t * 接收到的数据真实长度

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 读取成功
ERRCODE_INVALID_PARAM(0x80000001) 参数无效 bus超范围
ERRCODE_CAN_FD_NOT_INIT(0x80001422) CAN未初始化 CAN控制器未初始化
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y
CONFIG_CAN_BUS_NUM 编译参与宏 控制CAN总线数量配置 1

uapi_can_callback_register

errcode_t uapi_can_callback_register(uint8_t bus, can_callback_t can_callback)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 注册CAN中断回调函数,用于接收帧接收、错误被动、总线关闭等中断事件通知
  • 回调函数在中断上下文中执行,需尽快返回
  • 注册后,当CAN中断发生时,将通过回调函数上报中断状态和接收数据

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_init()初始化完成
  • 上下文限制:回调函数在中断上下文中执行,禁止在回调中执行耗时操作

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1
can_callback can_callback_t CAN中断回调函数 非NULL,参考can_callback_t

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 注册成功
ERRCODE_INVALID_PARAM(0x80000001) 参数无效 bus超范围
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y
CONFIG_CAN_BUS_NUM 编译参与宏 控制CAN总线数量配置 1

uapi_can_callback_unregister

errcode_t uapi_can_callback_unregister(uint8_t bus)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 注销已注册的CAN中断回调函数
  • 注销后,CAN中断发生时不再调用回调函数

前置条件

  • 调用时序约束:已通过uapi_can_callback_register()注册了回调函数
  • 依赖关系:CAN控制器已通过uapi_can_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 注销成功
ERRCODE_INVALID_PARAM(0x80000001) 参数无效 bus超范围
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y
CONFIG_CAN_BUS_NUM 编译参与宏 控制CAN总线数量配置 1

uapi_can_get_controller_sts

can_controller_sts_t uapi_can_get_controller_sts(uint8_t bus)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 查询CAN控制器错误状态
  • 返回主动错误、被动错误、总线关闭或未初始化状态
  • 未初始化时返回CAN_BUS_NOT_INIT

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_init()初始化完成(未初始化时返回CAN_BUS_NOT_INIT)
  • 依赖关系:CAN控制器硬件可访问

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1

返回值

返回值 文字含义 触发场景
CAN_STS_ERROR_ACTIVE(0) 主动错误状态 控制器正常工作
CAN_STS_ERROR_PASSIVE(1) 被动错误状态 错误计数超限
CAN_STS_BUS_OFF(2) 总线关闭状态 总线关闭
CAN_BUS_NOT_INIT(3) CAN未初始化 控制器未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_get_transmit_error_count

uint8_t uapi_can_get_transmit_error_count(uint8_t bus)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 查询CAN控制器发送错误计数
  • 返回发送错误计数值
  • 未初始化时返回0

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_init()初始化完成
  • 依赖关系:CAN控制器硬件可访问

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1

返回值

返回值 文字含义 触发场景
0~255 发送错误计数 CAN控制器发送错误计数

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_get_receive_error_count

uint8_t uapi_can_get_receive_error_count(uint8_t bus)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 查询CAN控制器接收错误计数
  • 返回接收错误计数值
  • 未初始化时返回0

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_init()初始化完成
  • 依赖关系:CAN控制器硬件可访问

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1

返回值

返回值 文字含义 触发场景
0~255 接收错误计数 CAN控制器接收错误计数

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_get_rx_sts

uint8_t uapi_can_get_rx_sts(uint8_t bus)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 查询CAN控制器RX引脚电平状态
  • 返回RX引脚当前电平值
  • 未初始化时返回0xFF

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_init()初始化完成
  • 依赖关系:CAN控制器硬件可访问

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1

返回值

返回值 文字含义 触发场景
0x0 低电平 RX引脚低电平
0x1 高电平 RX引脚高电平
Other CAN未初始化 控制器尚未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_fd_config_tdc

errcode_t uapi_can_fd_config_tdc(uint8_t bus, uint8_t enable, uint8_t offset)

头文件清单

#include "include/driver/can/v1/can.h"

功能说明

  • 配置CAN-FD的发送延迟补偿(TDC)偏移
  • 启用或禁用TDC功能,并设置TDC偏移时间量子数
  • 仅CAN-FD模式下使用

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_init()初始化完成
  • 依赖关系:CAN控制器工作在CAN-FD模式下

入参

名称 参数类型 详细说明 约束取值范围
bus uint8_t CAN总线选择 0 ~ CONFIG_CAN_BUS_NUM-1
enable uint8_t 启用或禁用TDC 0: 禁用,1: 启用
offset uint8_t TDC偏移时间量子数 -

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 配置成功
ERRCODE_CAN_FD_NOT_INIT(0x80001422) CAN未初始化 CAN控制器未初始化
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V1_DRIVER 功能宏 支持CAN V1驱动接口功能 y
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_init

errcode_t uapi_can_controller_init(uint8_t controller_id, can_controller_config_t *controller_config)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 初始化CAN控制器,配置处理模式、波特率和工作模式
  • 支持AUTOSAR风格的控制器初始化
  • 配置完成后控制器处于未启动状态,需调用uapi_can_controller_set_state设置为STARTED状态

前置条件

  • 调用时序约束:CAN控制器硬件已上电,相关引脚已配置
  • 依赖关系:controller_config指针非NULL,波特率配置参数有效

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1
controller_config can_controller_config_t * CAN控制器配置结构体指针 非NULL,参考can_controller_config_t

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_deinit

errcode_t uapi_can_controller_deinit(uint8_t controller_id)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 反初始化CAN控制器,释放硬件资源
  • 反初始化后控制器进入未初始化状态

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:调用时需确保当前无正在进行的CAN数据收发操作

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_set_filter

errcode_t uapi_can_controller_set_filter(uint8_t controller_id, can_filter_config_t *filter_config)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 设置CAN控制器过滤器配置
  • 支持标准帧和扩展帧过滤,支持双边界、双ID和ID&MASK三种过滤模式
  • 过滤器配置后生效,影响后续接收报文的筛选

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:filter_config指针非NULL,过滤器索引有效

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1
filter_config can_filter_config_t * CAN过滤器配置结构体指针 非NULL,参考can_filter_config_t

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_set_baudrate

errcode_t uapi_can_controller_set_baudrate(uint8_t controller_id, can_baudrate_config_t *baudrate_config)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 设置CAN控制器波特率
  • 支持标称位时间和CAN-FD数据段波特率独立配置
  • 通过位时间参数(预分频器、段1、段2、同步跳跃宽度)精确配置波特率

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:控制器处于STOPPED状态

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1
baudrate_config can_baudrate_config_t * CAN控制器波特率配置 非NULL,参考can_baudrate_config_t

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_set_state

errcode_t uapi_can_controller_set_state(uint8_t controller_id, can_controller_state_type_t state)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 设置CAN控制器工作状态
  • 支持未初始化、已启动、已停止、休眠四种状态切换
  • 需将控制器设置为STARTED状态后才能进行数据收发

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:波特率已正确配置

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1
state can_controller_state_type_t 要设置的控制器状态 CAN_CS_UNINIT(0) / CAN_CS_STARTED(1) / CAN_CS_STOPPED(2) / CAN_CS_SLEEP(3)

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_enable_interrupts

errcode_t uapi_can_controller_enable_interrupts(uint8_t controller_id)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 启用CAN控制器中断
  • 启用后,CAN中断事件将通过回调函数通知
  • 需在启用中断前注册对应回调函数

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:已注册相关回调函数

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_disable_interrupts

errcode_t uapi_can_controller_disable_interrupts(uint8_t controller_id)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 禁用CAN控制器中断
  • 禁用后,CAN中断事件不再触发回调
  • 已在处理中的中断回调不受影响

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:CAN控制器中断已启用

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_get_error_state

errcode_t uapi_can_controller_get_error_state(uint8_t controller_id, can_error_state_t *error_state)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 获取CAN控制器的错误状态
  • 返回主动错误、被动错误或总线关闭状态
  • 通过出参返回错误状态枚举值

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:error_state指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1

出参

名称 数据类型 输出说明
error_state can_error_state_t * 存储错误状态的指针,参考can_error_state_t

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_get_state

errcode_t uapi_can_controller_get_state(uint8_t controller_id, can_controller_state_type_t *state)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 获取CAN控制器的工作状态
  • 返回未初始化、已启动、已停止或休眠状态
  • 通过出参返回控制器当前工作状态

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:state指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1

出参

名称 数据类型 输出说明
state can_controller_state_type_t * 存储控制器工作状态的指针,参考can_controller_state_type_t

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_get_rx_error_counter

errcode_t uapi_can_controller_get_rx_error_counter(uint8_t controller_id, uint8_t *rx_error_counter)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 获取CAN控制器的接收错误计数器
  • 通过出参返回接收错误计数值
  • 计数值范围为0~255

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:rx_error_counter指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1

出参

名称 数据类型 输出说明
rx_error_counter uint8_t * 存储接收错误计数器的指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_get_tx_error_counter

errcode_t uapi_can_controller_get_tx_error_counter(uint8_t controller_id, uint8_t *tx_error_counter)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 获取CAN控制器的发送错误计数器
  • 通过出参返回发送错误计数值
  • 计数值范围为0~255

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:tx_error_counter指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1

出参

名称 数据类型 输出说明
tx_error_counter uint8_t * 存储发送错误计数器的指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_send

errcode_t uapi_can_send(uint8_t controller_id, uint8_t *tx_buffer_index, can_frame_t *can_frame,
                        bool use_tx_fifo, bool is_polling)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 使用CAN控制器发送数据
  • 支持FIFO模式和指定缓冲区索引模式发送
  • 支持轮询模式发送,轮询模式下发送完成在process_write_polling中上报

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化并设置为STARTED状态
  • 依赖关系:已通过uapi_can_controller_set_baudrate配置波特率

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1
tx_buffer_index uint8_t * 传输使用的缓冲区索引(use_tx_fifo=false时为输入参数,指定缓冲区索引) use_tx_fifo=false时指定缓冲区索引
can_frame can_frame_t * 指向要传输的CAN帧数据的指针 非NULL,参考can_frame_t
use_tx_fifo bool 是否使用传输FIFO true / false
is_polling bool 是否执行轮询操作 true: 轮询模式,发送完成在process_write_polling中上报;false: 中断模式

出参

名称 数据类型 输出说明
tx_buffer_index uint8_t * use_tx_fifo=true时返回分配的缓冲区索引

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_send_cancel

errcode_t uapi_can_send_cancel(uint8_t controller_id, uint8_t tx_index)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 取消一个待处理的CAN传输
  • 通过指定缓冲区索引取消对应的发送请求
  • 仅能取消尚未完成的发送请求

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:tx_index对应的缓冲区已有待发送数据

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1
tx_index uint8_t 要取消传输的缓冲区索引 -

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_controller_get_rx_sts

errcode_t uapi_can_controller_get_rx_sts(uint8_t controller_id, uint8_t *rx_sts)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 查询CAN控制器RX脚电平状态
  • 通过出参返回RX引脚电平状态
  • 需由调用方分配内存,函数填充结果

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:rx_sts指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1

出参

名称 数据类型 输出说明
rx_sts uint8_t * 存储RX引脚电平状态的指针

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_register_tx_callback

void uapi_can_register_tx_callback(can_tx_callback_t callback)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注册发送回调函数
  • 该函数只能调用一次,后续调用将无效直到回调函数被注销
  • 发送完成后触发回调,上报控制器ID和缓冲区索引

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:callback指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
callback can_tx_callback_t 要注册的发送回调函数 非NULL,参考can_tx_callback_t

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_unregister_tx_callback

void uapi_can_unregister_tx_callback(void)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注销发送回调函数
  • 注销后,发送完成事件不再触发回调
  • 注销后可重新注册新的回调函数

前置条件

  • 调用时序约束:已通过uapi_can_register_tx_callback()注册了回调函数
  • 依赖关系:CAN控制器已通过uapi_can_controller_init()初始化完成

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_register_tx_cancel_callback

void uapi_can_register_tx_cancel_callback(can_tx_cancel_callback_t callback)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注册发送取消回调函数
  • 该函数只能调用一次,后续调用将无效直到回调函数被注销
  • 发送取消后触发回调,上报控制器ID和缓冲区索引

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:callback指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
callback can_tx_cancel_callback_t 要注册的发送取消回调函数 非NULL,参考can_tx_cancel_callback_t

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_unregister_tx_cancel_callback

void uapi_can_unregister_tx_cancel_callback(void)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注销发送取消回调函数
  • 注销后,发送取消事件不再触发回调
  • 注销后可重新注册新的回调函数

前置条件

  • 调用时序约束:已通过uapi_can_register_tx_cancel_callback()注册了回调函数
  • 依赖关系:CAN控制器已通过uapi_can_controller_init()初始化完成

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_register_rx_callback

void uapi_can_register_rx_callback(can_rx_callback_t callback)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注册接收回调函数
  • 该函数只能调用一次,后续调用将无效直到回调函数被注销
  • 接收到数据后触发回调,上报控制器ID、过滤器索引和CAN帧数据

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:callback指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
callback can_rx_callback_t 要注册的接收回调函数 非NULL,参考can_rx_callback_t

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_unregister_rx_callback

void uapi_can_unregister_rx_callback(void)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注销接收回调函数
  • 注销后,接收事件不再触发回调
  • 注销后可重新注册新的回调函数

前置条件

  • 调用时序约束:已通过uapi_can_register_rx_callback()注册了回调函数
  • 依赖关系:CAN控制器已通过uapi_can_controller_init()初始化完成

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_register_bus_off_callback

void uapi_can_register_bus_off_callback(can_bus_off_callback_t callback)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注册总线关闭回调函数
  • 该函数只能调用一次,后续调用将无效直到回调函数被注销
  • 总线关闭时触发回调,上报控制器ID

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:callback指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
callback can_bus_off_callback_t 要注册的总线关闭回调函数 非NULL,参考can_bus_off_callback_t

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_unregister_bus_off_callback

void uapi_can_unregister_bus_off_callback(void)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注销总线关闭回调函数
  • 注销后,总线关闭事件不再触发回调
  • 注销后可重新注册新的回调函数

前置条件

  • 调用时序约束:已通过uapi_can_register_bus_off_callback()注册了回调函数
  • 依赖关系:CAN控制器已通过uapi_can_controller_init()初始化完成

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_register_wakeup_callback

void uapi_can_register_wakeup_callback(can_wakeup_callback_t callback)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注册唤醒回调函数
  • 该函数只能调用一次,后续调用将无效直到回调函数被注销
  • 唤醒事件发生时触发回调,上报控制器ID

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:callback指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
callback can_wakeup_callback_t 要注册的唤醒回调函数 非NULL,参考can_wakeup_callback_t

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_unregister_wakeup_callback

void uapi_can_unregister_wakeup_callback(void)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注销唤醒回调函数
  • 注销后,唤醒事件不再触发回调
  • 注销后可重新注册新的回调函数

前置条件

  • 调用时序约束:已通过uapi_can_register_wakeup_callback()注册了回调函数
  • 依赖关系:CAN控制器已通过uapi_can_controller_init()初始化完成

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_register_state_callback

void uapi_can_register_state_callback(can_state_callback_t callback)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注册状态转移回调函数
  • 该函数只能调用一次,后续调用将无效直到回调函数被注销
  • 控制器状态变化时触发回调,上报控制器ID和目标状态

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:callback指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
callback can_state_callback_t 要注册的状态转移回调函数 非NULL,参考can_state_callback_t

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_unregister_state_callback

void uapi_can_unregister_state_callback(void)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 注销状态转移回调函数
  • 注销后,状态转移事件不再触发回调
  • 注销后可重新注册新的回调函数

前置条件

  • 调用时序约束:已通过uapi_can_register_state_callback()注册了回调函数
  • 依赖关系:CAN控制器已通过uapi_can_controller_init()初始化完成

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_process_write_polling

void uapi_can_process_write_polling(void)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • CAN写操作轮询主函数
  • 轮询模式下发送完成后通过此函数上报发送完成回调
  • 需在主循环中周期性调用

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:已注册发送相关回调函数且发送时is_polling设置为true

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_process_read_polling

void uapi_can_process_read_polling(void)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • CAN读操作轮询主函数
  • 轮询模式下接收数据通过此函数上报接收回调
  • 需在主循环中周期性调用

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:已注册接收回调函数

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_process_bus_off_polling

void uapi_can_process_bus_off_polling(void)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 处理总线关闭状态轮询主函数
  • 轮询模式下总线关闭事件通过此函数上报回调
  • 需在主循环中周期性调用

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:已注册总线关闭回调函数

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_process_wakeup_polling

void uapi_can_process_wakeup_polling(void)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • 唤醒操作轮询主函数
  • 轮询模式下唤醒事件通过此函数上报回调
  • 需在主循环中周期性调用

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:已注册唤醒回调函数

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y

uapi_can_tt_config

errcode_t uapi_can_tt_config(uint8_t controller_id, can_tt_config_t *tt_config)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • TTCAN基础配置
  • 配置TTCAN工作模式、GAP功能、Time Master模式、同步偏差限制等参数
  • 需在CAN控制器初始化后调用

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:tt_config指针非NULL

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1
tt_config can_tt_config_t * TTCAN基本配置项 非NULL,参考can_tt_config_t

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y
CONFIG_CAN_SUPPORT_TTCAN 功能宏 支持TTCAN功能 n

uapi_can_tt_ref_message_config

errcode_t uapi_can_tt_ref_message_config(uint8_t controller_id, uint32_t ref_id, bool xtd)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • TTCAN参考消息配置
  • 配置TTCAN参考消息ID及其格式
  • 参考消息用于TTCAN时间同步

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:已通过uapi_can_tt_config完成TTCAN基础配置

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1
ref_id uint32_t 参考消息ID -
xtd bool 参考消息ID是否为扩展格式 true: 扩展格式,false: 标准格式

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y
CONFIG_CAN_SUPPORT_TTCAN 功能宏 支持TTCAN功能 n

uapi_can_set_time_trigger

errcode_t uapi_can_set_time_trigger(uint8_t controller_id, can_time_trigger_t *time_trigger)

头文件清单

#include "include/driver/can/v2/can_drv.h"

功能说明

  • TTCAN时间触发器配置
  • 配置TTCAN时间触发器参数,包括触发器索引、触发时间戳、触发器类型等
  • 触发器类型决定发送、接收或监视等行为

前置条件

  • 调用时序约束:CAN控制器已通过uapi_can_controller_init()初始化完成
  • 依赖关系:已通过uapi_can_tt_config完成TTCAN基础配置

入参

名称 参数类型 详细说明 约束取值范围
controller_id uint8_t CAN控制器标识符 0 ~ CONFIG_CAN_BUS_NUM-1
time_trigger can_time_trigger_t * TTCAN时间触发器 非NULL,参考can_time_trigger_t

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 操作成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_CAN_USE_V2_DRIVER 功能宏 支持CAN V2驱动接口功能 n
CONFIG_DRIVER_SUPPORT_CAN_FD 编译参与宏 控制can_fd模块参与编译 y
CONFIG_CAN_SUPPORT_TTCAN 功能宏 支持TTCAN功能 n

Type definitions

errcode_t

typedef uint32_t errcode_t;

使用说明

SDK公共错误码类型,被本模块多个接口用作返回值类型。[SDK公共基础类型]

can_callback_t

typedef void (*can_callback_t)(can_int_sts_t status, can_msg_attr_t *received_msg,
                               uint8_t *data, uint8_t length);

使用说明

V1 CAN中断回调函数类型。调用时机:CAN中断发生时(帧接收、错误被动、总线关闭等)由中断处理函数调用;回调在中断上下文中执行,需尽快返回。参数 status 为中断状态,参数 received_msg 为接收到的CAN帧仲裁域,参数 data 为接收到的数据,参数 length 为数据长度。

can_tx_callback_t

typedef void (*can_tx_callback_t)(uint8_t controller_id, uint8_t buffer_index);

使用说明

V2 发送完成回调函数类型。调用时机:CAN发送完成后由中断处理函数或轮询处理函数调用。参数 controller_id 为上报回调的控制器标识符,参数 buffer_index 为发送完成的硬件单元索引。

can_tx_cancel_callback_t

typedef void (*can_tx_cancel_callback_t)(uint8_t controller_id, uint8_t buffer_index);

使用说明

V2 发送取消回调函数类型。调用时机:CAN发送取消完成后触发。参数 controller_id 为上报回调的控制器标识符,参数 buffer_index 为被取消的发送硬件单元索引。

can_rx_callback_t

typedef void (*can_rx_callback_t)(uint8_t controller_id, uint8_t filter_index, can_frame_t *can_frame);

使用说明

V2 接收回调函数类型。调用时机:CAN接收到数据后由中断处理函数或轮询处理函数调用。参数 controller_id 为上报回调的控制器标识符,参数 filter_index 为匹配接收消息的过滤器索引,参数 can_frame 为接收到的CAN帧数据指针。

can_bus_off_callback_t

typedef void (*can_bus_off_callback_t)(uint8_t controller_id);

使用说明

V2 总线关闭回调函数类型。调用时机:CAN总线关闭事件发生时触发。参数 controller_id 为上报回调的控制器标识符。

can_wakeup_callback_t

typedef void (*can_wakeup_callback_t)(uint8_t controller_id);

使用说明

V2 唤醒回调函数类型。调用时机:CAN唤醒事件发生时触发。参数 controller_id 为上报回调的控制器标识符。

can_state_callback_t

typedef void (*can_state_callback_t)(uint8_t controller_id, can_controller_state_type_t target_state);

使用说明

V2 控制器状态变化回调函数类型。调用时机:CAN控制器状态发生变化时触发。参数 controller_id 为上报回调的控制器标识符,参数 target_state 为控制器目标状态。

Enumerations

can_baud_rate_t

typedef enum can_baud_rate {
    CAN_BPS_10K = 10,
    CAN_BPS_20K = 20,
    CAN_BPS_50K = 50,
    CAN_BPS_125K = 125,
    CAN_BPS_250K = 250,
    CAN_BPS_500K = 500,
    CAN_BPS_800K = 800,
    CAN_BPS_1M = 1000,
    CAN_BPS_MAX = 1000
} can_baud_rate_t;
枚举成员 取值 描述
CAN_BPS_10K 10 10Kbps
CAN_BPS_20K 20 20Kbps
CAN_BPS_50K 50 50Kbps
CAN_BPS_125K 125 125Kbps
CAN_BPS_250K 250 250Kbps
CAN_BPS_500K 500 500Kbps
CAN_BPS_800K 800 800Kbps
CAN_BPS_1M 1000 1Mbps
CAN_BPS_MAX 1000 最大波特率

can_fd_baud_rate_t

typedef enum can_fd_baud_rate {
    CAN_FD_BPS_10K = 10,
    CAN_FD_BPS_20K = 20,
    CAN_FD_BPS_50K = 50,
    CAN_FD_BPS_125K = 125,
    CAN_FD_BPS_250K = 250,
    CAN_FD_BPS_500K = 500,
    CAN_FD_BPS_800K = 800,
    CAN_FD_BPS_1M = 1000,
    CAN_FD_BPS_2M = 2000,
    CAN_FD_BPS_4M = 4000,
    CAN_FD_BPS_5M = 5000,
    CAN_FD_BPS_8M = 8000,
    CAN_FD_BPS_10M = 10000,
    CAN_FD_BPS_MAX = 10000
} can_fd_baud_rate_t;
枚举成员 取值 描述
CAN_FD_BPS_10K 10 10Kbps
CAN_FD_BPS_20K 20 20Kbps
CAN_FD_BPS_50K 50 50Kbps
CAN_FD_BPS_125K 125 125Kbps
CAN_FD_BPS_250K 250 250Kbps
CAN_FD_BPS_500K 500 500Kbps
CAN_FD_BPS_800K 800 800Kbps
CAN_FD_BPS_1M 1000 1Mbps
CAN_FD_BPS_2M 2000 2Mbps
CAN_FD_BPS_4M 4000 4Mbps
CAN_FD_BPS_5M 5000 5Mbps
CAN_FD_BPS_8M 8000 8Mbps
CAN_FD_BPS_10M 10000 10Mbps
CAN_FD_BPS_MAX 10000 最大波特率

can_sample_point_t

typedef enum can_sample_point {
    CAN_SAMPLE_PERCENT_75,
    CAN_SAMPLE_PERCENT_80,
    CAN_SAMPLE_PERCENT_85,
    CAN_SAMPLE_PERCENT_MAX
} can_sample_point_t;
枚举成员 取值 描述
CAN_SAMPLE_PERCENT_75 0 75%采样点
CAN_SAMPLE_PERCENT_80 1 80%采样点
CAN_SAMPLE_PERCENT_85 2 85%采样点
CAN_SAMPLE_PERCENT_MAX 3 最大采样点

can_int_sts_t

typedef enum can_int_sts {
    CAN_FRAME_RECEIVED_INT,
    CAN_ERROR_PASSIVE_INT,
    CAN_BUS_OFF_INT,
} can_int_sts_t;
枚举成员 取值 描述
CAN_FRAME_RECEIVED_INT 0 帧接收中断
CAN_ERROR_PASSIVE_INT 1 错误被动中断
CAN_BUS_OFF_INT 2 总线关闭中断

can_mode_t

typedef enum can_mode {
    NORMAL_OPREATION = 0x0,
    LOOP_BACK_MODE = 0x1
} can_mode_t;
枚举成员 取值 描述
NORMAL_OPREATION 0x0 正常工作模式
LOOP_BACK_MODE 0x1 回环模式

can_filter_type_t

typedef enum filter_type {
    RANGE_FILTER = 0x0,
    DUAL_ID_FILTER,
    CLASSIC_FILTER
} can_filter_type_t;
枚举成员 取值 描述
RANGE_FILTER 0x0 范围滤波
DUAL_ID_FILTER 1 双ID滤波
CLASSIC_FILTER 2 经典滤波

can_controller_sts_t

typedef enum can_controller_sts {
    CAN_STS_ERROR_ACTIVE,
    CAN_STS_ERROR_PASSIVE,
    CAN_STS_BUS_OFF,
    CAN_BUS_NOT_INIT
} can_controller_sts_t;
枚举成员 取值 描述
CAN_STS_ERROR_ACTIVE 0 错误主动状态
CAN_STS_ERROR_PASSIVE 1 错误被动状态
CAN_STS_BUS_OFF 2 总线关闭状态
CAN_BUS_NOT_INIT 3 控制器未初始化

can_opreation_mode_t

typedef enum {
    CAN_NORMAL_OPREATION = 0x0,
    CAN_LOOPBACK_MODE = 0x1
} can_opreation_mode_t;
枚举成员 取值 描述
CAN_NORMAL_OPREATION 0x0 正常工作模式
CAN_LOOPBACK_MODE 0x1 回环模式

can_rx_fifo_storage_t

typedef enum {
    CAN_RX_STORAGE_RX_FIFO_0 = 0xFE,
    CAN_RX_STORAGE_RX_FIFO_1 = 0xFF
} can_rx_fifo_storage_t;
枚举成员 取值 描述
CAN_RX_STORAGE_RX_FIFO_0 0xFE 存储至FIFO0
CAN_RX_STORAGE_RX_FIFO_1 0xFF 存储至FIFO1

can_controller_state_type_t

typedef enum {
    CAN_CS_UNINIT = 0,
    CAN_CS_STARTED,
    CAN_CS_STOPPED,
    CAN_CS_SLEEP,
    CAN_CS_MAX
} can_controller_state_type_t;
枚举成员 取值 描述
CAN_CS_UNINIT 0 未初始化状态
CAN_CS_STARTED 1 已启动状态
CAN_CS_STOPPED 2 已停止状态
CAN_CS_SLEEP 3 休眠状态
CAN_CS_MAX 4 最大状态值

can_error_state_t

typedef enum {
    CAN_ERRORSTATE_ACTIVE = 0,
    CAN_ERRORSTATE_PASSIVE,
    CAN_ERRORSTATE_BUSOFF
} can_error_state_t;
枚举成员 取值 描述
CAN_ERRORSTATE_ACTIVE 0 主动错误状态
CAN_ERRORSTATE_PASSIVE 1 被动错误状态
CAN_ERRORSTATE_BUSOFF 2 总线关闭状态

can_processing_mode_t

typedef enum {
    CAN_INTERRUPT_MODE = 0,
    CAN_MIXED_MODE,
    CAN_POLLING_MODE
} can_processing_mode_t;
枚举成员 取值 描述
CAN_INTERRUPT_MODE 0 中断模式
CAN_MIXED_MODE 1 混合模式,仅发送支持,其余场景配置该值表现与中断模式一致
CAN_POLLING_MODE 2 轮询模式

can_filter_id_type_t

typedef enum {
    CAN_STANDARD_FILTER = 0,
    CAN_EXTENDED_FILTER
} can_filter_id_type_t;
枚举成员 取值 描述
CAN_STANDARD_FILTER 0 标准帧过滤器
CAN_EXTENDED_FILTER 1 扩展帧过滤器

can_filter_mode_t

typedef enum {
    CAN_RANGE_FILTER = 0x0,
    CAN_DUAL_ID_FILTER,
    CAN_CLASSIC_FILTER
} can_filter_mode_t;
枚举成员 取值 描述
CAN_RANGE_FILTER 0x0 双边界模式
CAN_DUAL_ID_FILTER 1 双ID模式
CAN_CLASSIC_FILTER 2 ID & MASK模式

tt_opreation_mode

typedef enum {
    CAN_TT_DISABLE = 0,
    CAN_TT_LEVEL1 = 1,
    CAN_TT_LEVEL2 = 2,
    CAN_TT_LEVEL0 = 3,
} tt_opreation_mode;
枚举成员 取值 描述
CAN_TT_DISABLE 0 TTCAN禁用
CAN_TT_LEVEL1 1 TTCAN Level1
CAN_TT_LEVEL2 2 TTCAN Level2
CAN_TT_LEVEL0 3 TTCAN Level0

tt_trigger_type_t

typedef enum {
    CAN_TT_TX_REF_TRIGGER = 0,
    CAN_TT_TX_REF_TRIGGER_GAP = 1,
    CAN_TT_TX_TRIGGER_SINGLE = 2,
    CAN_TT_TX_TRIGGER_CONTINOUS = 3,
    CAN_TT_TX_TRIGGER_ARBITRATION = 4,
    CAN_TT_TX_TRIGGER_MERGED = 5,
    CAN_TT_WATCH_TRIGGER = 6,
    CAN_TT_WATCH_TRIGGER_GAP = 7,
    CAN_TT_RX_TRIGGER = 8,
    CAN_TT_TIME_BASE_TRIGGER = 9,
    CAN_TT_END_OF_LIST = 10
} tt_trigger_type_t;
枚举成员 取值 描述
CAN_TT_TX_REF_TRIGGER 0 发送参考触发器
CAN_TT_TX_REF_TRIGGER_GAP 1 发送参考触发器GAP
CAN_TT_TX_TRIGGER_SINGLE 2 单次发送触发器
CAN_TT_TX_TRIGGER_CONTINOUS 3 连续发送触发器
CAN_TT_TX_TRIGGER_ARBITRATION 4 仲裁发送触发器
CAN_TT_TX_TRIGGER_MERGED 5 合并发送触发器
CAN_TT_WATCH_TRIGGER 6 监视触发器
CAN_TT_WATCH_TRIGGER_GAP 7 监视触发器GAP
CAN_TT_RX_TRIGGER 8 接收触发器
CAN_TT_TIME_BASE_TRIGGER 9 时间基准触发器
CAN_TT_END_OF_LIST 10 列表结束标志

Structures

can_global_config_t

typedef struct can_global_config {
    uint32_t std_baud_rate;
    uint32_t fd_baud_rate;
    uint8_t point;
    uint8_t can_mode;
} can_global_config_t;

成员说明

成员名称 数据类型 描述
std_baud_rate uint32_t 标准CAN协议波特率,参考can_baud_rate_t
fd_baud_rate uint32_t CAN-FD数据段波特率,参考can_fd_baud_rate_t
point uint8_t CAN采样点,参考can_sample_point_t
can_mode uint8_t CAN工作模式,参考can_mode_t

can_filter_t

typedef struct can_filter {
    uint32_t fid1;
    uint32_t fid2;
    uint8_t fifo_id;
    uint8_t filter_type;
} can_filter_t;

成员说明

成员名称 数据类型 描述
fid1 uint32_t 滤波器的首要ID
fid2 uint32_t 滤波器的次要ID,可作为掩码、次要标识符或右边界
fifo_id uint8_t 滤波器绑定的Rx-FIFO索引,中断优先级按索引升序排列
filter_type uint8_t 滤波器模式,参考can_filter_type_t

can_filter_list_t

typedef struct can_filter_list {
    can_filter_t *filters;
    uint8_t filter_num;
} can_filter_list_t;

成员说明

成员名称 数据类型 描述
filters can_filter_t * 滤波器列表
filter_num uint8_t 滤波器个数

can_msg_attr_t

typedef struct can_msg_attr {
    uint32_t std_id;
    uint32_t extend_id;
    uint8_t rtr;
    uint8_t ide;
    uint8_t fdf;
    uint8_t brs;
} can_msg_attr_t;

成员说明

成员名称 数据类型 描述
std_id uint32_t 标准标识符
extend_id uint32_t 扩展标识符
rtr uint8_t 远程帧标志
ide uint8_t 扩展格式标志
fdf uint8_t FD帧格式标志
brs uint8_t 波特率切换标志

can_frame_t

typedef struct {
    uint32_t id;
    uint8_t ide;
    uint8_t fdf;
    uint8_t rtr;
    uint8_t length;
    uint8_t *data;
} can_frame_t;

成员说明

成员名称 数据类型 描述
id uint32_t CAN ID
ide uint8_t 扩展ID标识
fdf uint8_t FD帧格式标识
rtr uint8_t 远程帧标识
length uint8_t 数据长度
data uint8_t * 数据指针

can_fd_baudrate_config_t

/*
    位时间分配:
    采样点视为seg1与seg2之间的边沿
    seg1 = prop_seg + phase_seg1;
    seg2 = phase_seg2;
    baudrate = cclk_freq / ((seg1 + seg2) * (brp + 1))
*/
typedef struct {
    uint8_t can_fd_brp;
    uint8_t can_fd_seg1;
    uint8_t can_fd_seg2;
    uint8_t can_fd_sjw;
    uint8_t can_fd_ssp_offset;
    uint8_t can_fd_tx_brs;
    uint32_t fd_baudrate;
} can_fd_baudrate_config_t;

成员说明

成员名称 数据类型 描述
can_fd_brp uint8_t CAN FD数据段波特率预分频器
can_fd_seg1 uint8_t CAN FD数据段时间段1的长度
can_fd_seg2 uint8_t CAN FD数据段时间段2的长度
can_fd_sjw uint8_t CAN FD数据段同步跳跃宽度
can_fd_ssp_offset uint8_t CAN FD第二采样点偏移
can_fd_tx_brs uint8_t 传输速率切换标志
fd_baudrate uint32_t CAN FD波特率

can_baudrate_config_t

typedef struct {
    uint8_t can_brp;
    uint8_t can_seg1;
    uint8_t can_seg2;
    uint8_t can_sjw;
    uint32_t baudrate;
    can_fd_baudrate_config_t fd_baudrate_config;
} can_baudrate_config_t;

成员说明

成员名称 数据类型 描述
can_brp uint8_t 波特率预分频器
can_seg1 uint8_t 时间段1的长度
can_seg2 uint8_t 时间段2的长度
can_sjw uint8_t 同步跳跃宽度
baudrate uint32_t 波特率
fd_baudrate_config can_fd_baudrate_config_t FD波特率配置,参考can_fd_baudrate_config_t

can_processing_t

typedef struct {
    can_processing_mode_t busoff_processing;
    can_processing_mode_t rx_buffer_processing;
    can_processing_mode_t rx_fifo0_processing;
    can_processing_mode_t rx_fifo1_processing;
    can_processing_mode_t tx_processing;
    can_processing_mode_t wakeup_processing;
} can_processing_t;

成员说明

成员名称 数据类型 描述
busoff_processing can_processing_mode_t 总线关闭处理模式,参考can_processing_mode_t
rx_buffer_processing can_processing_mode_t 接收buffer处理模式,参考can_processing_mode_t
rx_fifo0_processing can_processing_mode_t 接收FIFO0处理模式,参考can_processing_mode_t
rx_fifo1_processing can_processing_mode_t 接收FIFO1处理模式,参考can_processing_mode_t
tx_processing can_processing_mode_t 发送处理模式,参考can_processing_mode_t
wakeup_processing can_processing_mode_t 唤醒处理模式,参考can_processing_mode_t

can_controller_config_t

typedef struct {
    can_processing_t processing_config;
    can_baudrate_config_t *baudrate_config;
    can_opreation_mode_t opreation_mode;
} can_controller_config_t;

成员说明

成员名称 数据类型 描述
processing_config can_processing_t 控制器处理模式配置,参考can_processing_t
baudrate_config can_baudrate_config_t * 波特率配置指针,参考can_baudrate_config_t
opreation_mode can_opreation_mode_t 控制器工作模式,参考can_opreation_mode_t

can_hw_filter_t

typedef struct {
    can_filter_id_type_t filter_id_type;
    can_filter_mode_t filter_type;
    uint32_t fid1;
    uint32_t fid2;
} can_hw_filter_t;

成员说明

成员名称 数据类型 描述
filter_id_type can_filter_id_type_t 过滤器ID类型,参考can_filter_id_type_t
filter_type can_filter_mode_t 过滤器掩码类型,参考can_filter_mode_t
fid1 uint32_t 过滤器掩码1
fid2 uint32_t 过滤器掩码2

can_filter_config_t

typedef struct {
    uint8_t filter_index;
    uint8_t storage_buffer_index;
    can_hw_filter_t *hw_filter;
} can_filter_config_t;

成员说明

成员名称 数据类型 描述
filter_index uint8_t 过滤器索引,用于标识过滤器
storage_buffer_index uint8_t 存储缓冲区索引,欲存储至FIFO参考can_rx_fifo_storage_t
hw_filter can_hw_filter_t * 硬件过滤器指针,参考can_hw_filter_t;若存储至固定buffer,则接收与fid1完全一致的帧

can_tt_config_t

typedef struct {
    uint32_t tt_opreation_mode;
    uint32_t tt_gap_enable;
    uint32_t is_time_master;
    uint32_t sync_deviation_limit;
    uint32_t init_ref_trigger_offset;
    uint32_t global_time_filter;
    uint32_t clock_calibration;
    uint32_t basic_cycle_num;
    uint32_t tx_enable_window;
    uint32_t tx_trigger_num;
    uint32_t tur_numerator;
    uint32_t tur_denominator;
} can_tt_config_t;

成员说明

成员名称 数据类型 描述
tt_opreation_mode uint32_t TTCAN工作模式,参考tt_opreation_mode
tt_gap_enable uint32_t TTCAN GAP功能使能
is_time_master uint32_t TTCAN time master模式使能
sync_deviation_limit uint32_t 同步跨度限制
init_ref_trigger_offset uint32_t 初始参考消息偏移
global_time_filter uint32_t 全局时间过滤
clock_calibration uint32_t 时间自动补偿
basic_cycle_num uint32_t 基本周期个数
tx_enable_window uint32_t tx发送窗口长度
tx_trigger_num uint32_t tx触发器数量
tur_numerator uint32_t TUR分子
tur_denominator uint32_t TUR分母

can_time_trigger_t

typedef struct {
    uint32_t trigger_index;
    uint32_t time_mark;
    uint32_t trigger_type;
    uint32_t start_cycle;
    uint32_t cycle_period;
    uint32_t tx_index;
    uint32_t filter_type;
    uint32_t filter_index;
} can_time_trigger_t;

成员说明

成员名称 数据类型 描述
trigger_index uint32_t 触发器索引
time_mark uint32_t 触发器触发时间戳
trigger_type uint32_t 触发器类型,参考tt_trigger_type_t
start_cycle uint32_t 触发器起始周期
cycle_period uint32_t 触发器触发频率
tx_index uint32_t 绑定的tx_buffer索引(Tx Trigger限定)
filter_type uint32_t 绑定的rx_filter类型(Rx Trigger限定)
filter_index uint32_t 绑定的rx_filter索引(Rx Trigger限定)

Macros

CAN_EXTENDED_MARK_MASK

#define CAN_EXTENDED_MARK_MASK 0x80000000

CAN_FD_MARK_MASK

#define CAN_FD_MARK_MASK 0x40000000

CAN_ID_MASK

#define CAN_ID_MASK 0x3FFFFFFF

build_can_fd_format_standard_data_frame

#define build_can_fd_format_standard_data_frame(id, bit_rate_switch) { \
    .std_id = (id), \
    .extend_id = 0, \
    .rtr = 0, \
    .ide = 0, \
    .fdf = 1, \
    .brs = (bit_rate_switch), \
}

build_can_fd_format_extend_data_frame

#define build_can_fd_format_extend_data_frame(id, ex_id, bit_rate_switch) { \
    .std_id = (id), \
    .extend_id = (ex_id), \
    .rtr = 0, \
    .ide = 1, \
    .fdf = 1, \
    .brs = (bit_rate_switch), \
}

build_can_standard_data_frame

#define build_can_standard_data_frame(id) { \
    .std_id = (id), \
    .extend_id = 0, \
    .rtr = 0, \
    .ide = 0, \
    .fdf = 0, \
    .brs = 0, \
}

build_can_extend_data_frame

#define build_can_extend_data_frame(id, ex_id) { \
    .std_id = (id), \
    .extend_id = (ex_id), \
    .rtr = 0, \
    .ide = 1, \
    .fdf = 0, \
    .brs = 0, \
}

build_can_standard_remote_frame

#define build_can_standard_remote_frame(id) { \
    .std_id = (id), \
    .extend_id = 0, \
    .rtr = 1, \
    .ide = 0, \
    .fdf = 0, \
    .brs = 0, \
}

build_can_extend_remote_frame

#define build_can_extend_remote_frame(id, ex_id) { \
    .std_id = (id), \
    .extend_id = (ex_id), \
    .rtr = 1, \
    .ide = 1, \
    .fdf = 0, \
    .brs = 0, \
}