CAN
更新时间:2019-01-31 12:10:42
接口列表
函数名称 | 功能描述 |
---|---|
hal_can_init | 初始化指定CAN端口 |
hal_can_filter_init | 初始化指定CAN端口滤波器 |
hal_can_send | 从指定CAN端口发送数据 |
hal_can_recv | 从指定CAN端口获取数据 |
hal_can_finalize | 关闭指定CAN端口 |
接口详情
int32_t hal_can_init(can_dev_t *can)
描述 | 初始化指定CAN端口 |
---|---|
参数 | can:CAN设备描述,定义需要初始化的CAN参数 |
返回值 | 返回成功或失败, 返回0表示CAN初始化成功,非0表示失败 |
int32_t hal_can_filter_init(can_dev_t *can, const uint8_t filter_grp_cnt, can_filter_item_t *filter_config)
描述
|
初始化指定CAN端口滤波器
|
参数
|
i2c:CAN设备描述,定义需要初始化的I2C参数
|
filter_grp_cnt:滤波器计数值
|
|
filter_config:滤波器配置
|
|
返回值
|
返回成功或失败, 返回0表示I2C初始化成功,非0表示失败
|
int32_t hal_can_send(can_dev_t *can, can_frameheader_t *tx_header, const void *data, const uint32_t timeout)
描述
|
从指定的CAN端口发送数据
|
参数
|
can:CAN设备描述
|
tx_header:发送数据头
|
|
data:指向发送缓冲区的数据指针
|
|
timeout:超时时间(单位ms),如果希望一直等待设置为HAL_WAIT_FOREVER
|
|
返回值
|
返回成功或失败, 返回0表示数据发送成功,非0表示失败
|
int32_t hal_can_recv(can_dev_t *can, can_frameheader_t *rx_header, void *data, const uint32_t timeout)
描述
|
从指定的CAN端口接收数据
|
参数
|
can:CAN设备描述
|
tx_header:接收数据头
|
|
data:指向接收缓冲区的数据指针
|
|
timeout:超时时间(单位ms),如果希望一直等待设置为HAL_WAIT_FOREVER
|
|
返回值
|
返回成功或失败, 返回0表示成功接收,非0表示失败
|
int32_t hal_can_finalize(can_dev_t *can)
描述 | 关闭指定CAN端口 |
---|---|
参数 | can:CAN设备描述 |
返回值 | 类型:int 返回成功或失败, 返回0表示关闭成功,非0表示失败。 |
相关结数据结构
can_dev_t
typedef struct {
uint8_t port; /* can port */
can_config_t config; /* can config */
void *priv; /* priv data */
} can_dev_t;
can_config_t
typedef struct {
uint32_t baud_rate; /* baud rate of can */
uint8_t ide; /* 0:normal can, 1:extend can */
uint8_t auto_bus_off; /* 1:enable auto bus off, 0:disable */
uint8_t auto_retry_transmit; /* 1:enable retry transmit, 0:disable */
} can_config_t;
can_frameheader_t
typedef struct {
uint32_t id; /* id of can */
uint8_t rtr; /* 0:data frame, 1:remote frame */
uint8_t dlc; /* must <=8 */
} can_frameheader_t;
can_filter_item_t
typedef struct{
uint8_t rtr; /* 0:data frame, 1:remote frame */
uint32_t check_id; /* the filter identification number */
uint32_t filter_mask; /* the filter mask number or identification number */
} can_filter_item_t;