can
CAN (Controller Area Network) 提供控制器局域网通信功能,支持标准CAN和CAN-FD双协议栈,具备报文收发、过滤器配置、错误状态监控及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)
头文件清单
功能说明
- 初始化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
头文件清单
功能说明
- 去初始化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
头文件清单
功能说明
- 请求发送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)
头文件清单
功能说明
- 从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
头文件清单
功能说明
- 注册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
头文件清单
功能说明
- 注销已注册的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控制器错误状态
- 返回主动错误、被动错误、总线关闭或未初始化状态
- 未初始化时返回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
头文件清单
功能说明
- 查询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
头文件清单
功能说明
- 查询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
头文件清单
功能说明
- 查询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
头文件清单
功能说明
- 配置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)
头文件清单
功能说明
- 初始化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
头文件清单
功能说明
- 反初始化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
头文件清单
功能说明
- 设置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)
头文件清单
功能说明
- 设置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
头文件清单
功能说明
- 设置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
头文件清单
功能说明
- 启用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
头文件清单
功能说明
- 禁用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)
头文件清单
功能说明
- 获取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
头文件清单
功能说明
- 获取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)
头文件清单
功能说明
- 获取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)
头文件清单
功能说明
- 获取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)
头文件清单
功能说明
- 使用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
头文件清单
功能说明
- 取消一个待处理的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
头文件清单
功能说明
- 查询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
头文件清单
功能说明
- 注册发送回调函数
- 该函数只能调用一次,后续调用将无效直到回调函数被注销
- 发送完成后触发回调,上报控制器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
头文件清单
功能说明
- 注销发送回调函数
- 注销后,发送完成事件不再触发回调
- 注销后可重新注册新的回调函数
前置条件
- 调用时序约束:已通过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
头文件清单
功能说明
- 注册发送取消回调函数
- 该函数只能调用一次,后续调用将无效直到回调函数被注销
- 发送取消后触发回调,上报控制器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
头文件清单
功能说明
- 注销发送取消回调函数
- 注销后,发送取消事件不再触发回调
- 注销后可重新注册新的回调函数
前置条件
- 调用时序约束:已通过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
头文件清单
功能说明
- 注册接收回调函数
- 该函数只能调用一次,后续调用将无效直到回调函数被注销
- 接收到数据后触发回调,上报控制器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
头文件清单
功能说明
- 注销接收回调函数
- 注销后,接收事件不再触发回调
- 注销后可重新注册新的回调函数
前置条件
- 调用时序约束:已通过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
头文件清单
功能说明
- 注册总线关闭回调函数
- 该函数只能调用一次,后续调用将无效直到回调函数被注销
- 总线关闭时触发回调,上报控制器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
头文件清单
功能说明
- 注销总线关闭回调函数
- 注销后,总线关闭事件不再触发回调
- 注销后可重新注册新的回调函数
前置条件
- 调用时序约束:已通过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
头文件清单
功能说明
- 注册唤醒回调函数
- 该函数只能调用一次,后续调用将无效直到回调函数被注销
- 唤醒事件发生时触发回调,上报控制器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
头文件清单
功能说明
- 注销唤醒回调函数
- 注销后,唤醒事件不再触发回调
- 注销后可重新注册新的回调函数
前置条件
- 调用时序约束:已通过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
头文件清单
功能说明
- 注册状态转移回调函数
- 该函数只能调用一次,后续调用将无效直到回调函数被注销
- 控制器状态变化时触发回调,上报控制器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
头文件清单
功能说明
- 注销状态转移回调函数
- 注销后,状态转移事件不再触发回调
- 注销后可重新注册新的回调函数
前置条件
- 调用时序约束:已通过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
头文件清单
功能说明
- 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
头文件清单
功能说明
- 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
头文件清单
功能说明
- 处理总线关闭状态轮询主函数
- 轮询模式下总线关闭事件通过此函数上报回调
- 需在主循环中周期性调用
前置条件
- 调用时序约束: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
头文件清单
功能说明
- 唤醒操作轮询主函数
- 轮询模式下唤醒事件通过此函数上报回调
- 需在主循环中周期性调用
前置条件
- 调用时序约束: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
头文件清单
功能说明
- 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
头文件清单
功能说明
- 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
头文件清单
功能说明
- 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
使用说明
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
使用说明
V2 发送完成回调函数类型。调用时机:CAN发送完成后由中断处理函数或轮询处理函数调用。参数 controller_id 为上报回调的控制器标识符,参数 buffer_index 为发送完成的硬件单元索引。
can_tx_cancel_callback_t
使用说明
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
使用说明
V2 总线关闭回调函数类型。调用时机:CAN总线关闭事件发生时触发。参数 controller_id 为上报回调的控制器标识符。
can_wakeup_callback_t
使用说明
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
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| NORMAL_OPREATION | 0x0 | 正常工作模式 |
| LOOP_BACK_MODE | 0x1 | 回环模式 |
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
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| 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
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| CAN_INTERRUPT_MODE | 0 | 中断模式 |
| CAN_MIXED_MODE | 1 | 混合模式,仅发送支持,其余场景配置该值表现与中断模式一致 |
| CAN_POLLING_MODE | 2 | 轮询模式 |
can_filter_id_type_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| CAN_STANDARD_FILTER | 0 | 标准帧过滤器 |
| CAN_EXTENDED_FILTER | 1 | 扩展帧过滤器 |
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
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| 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
CAN_FD_MARK_MASK
CAN_ID_MASK
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, \
}