HXC_CAN是一个CAN通信的基类,提供了CAN消息的发送、接收和回调处理功能。 并且提供了ESP32 的TWAI和MCP2515两种CAN通信方式的封装,方便用户使用。
CAN_RATE 是一个枚举类型,用于定义不同的CAN通信速率。以下是具体的速率选项:
CAN_RATE_1MBIT: 表示1Mbps的通信速率。CAN_RATE_800KBIT: 表示800Kbps的通信速率。CAN_RATE_500KBIT: 表示500Kbps的通信速率。CAN_RATE_250KBIT: 表示250Kbps的通信速率。CAN_RATE_125KBIT: 表示125Kbps的通信速率。CAN_RATE_100KBIT: 表示100Kbps的通信速率。
HXC_CAN_message_t 结构体定义了CAN消息的格式,包含以下成员:
bool extd: 扩展帧格式标志,用于标识是否为29位ID的扩展帧。默认为0,表示标准帧(11位ID)。bool rtr: 远程帧标志,用于标识是否为远程请求帧。默认为0,表示数据帧。bool self: 自我接收请求标志,用于发送时请求自我接收。在接收时此标志无效。默认为0。uint32_t identifier: 11位或29位的标识符,根据extd标志确定。uint8_t data_length_code: 数据长度代码,表示数据字段的长度,范围从0到8。uint8_t data[8]: 数据字节数组,用于存储实际的数据内容。在远程请求帧(RTR帧)中,此字段不包含数据。
本库仅提供通过回调函数的方式接收CAN消息。
HXC_can_feedback_func 是一个类型别名,定义了CAN消息接收回调函数的类型。它是一个函数对象,可以接受一个指向HXC_CAN_message_t结构体的指针作为参数,并在接收到CAN消息时被调用。
using HXC_can_feedback_func = std::function<void(HXC_CAN_message_t* can_message)>;必须初始化才能使用CAN消息收发
- setup(CAN_RATE can_rate): 初始化CAN通信,设置通信速率。
- 参数:
can_rate:CAN_RATE枚举值,指定CAN通信速率。
- 返回值:
esp_err_t类型,成功返回ESP_OK,否则返回ESP_FAIL。
- 参数:
- send(HXC_CAN_message_t message)*: 发送CAN消息,通过消息指针。
- 参数:
message:HXC_CAN_message_t*类型,指向CAN消息的指针。
- 返回值:
esp_err_t类型,成功返回ESP_OK,否则返回ESP_FAIL。
- 参数:
- send(HXC_CAN_message_t message): 发送CAN消息,通过消息对象。
- 参数:
message:HXC_CAN_message_t类型,CAN消息对象。
- 返回值:
esp_err_t类型,成功返回ESP_OK,否则返回ESP_FAIL。
- 参数:
- add_can_receive_callback_func(int addr, HXC_can_feedback_func func): 添加CAN消息接收回调函数。
- 参数:
addr:int类型,CAN消息地址。func:HXC_can_feedback_func类型,回调函数。
- 参数:
- remove_can_receive_callback_func(int addr): 移除CAN消息接收回调函数。
- 参数:
addr:int类型,CAN消息地址。
- 参数:
- exist_can_receive_callback_func(int addr): 判断是否存在指定地址的CAN消息接收回调函数。
- 参数:
addr:int类型,CAN消息地址。
- 返回值:
bool类型,存在返回true,否则返回false。
- 参数:
- get_setup_flag(): 查询CAN是否已初始化。
- 返回值:
bool类型,已初始化返回true,否则返回false。
- 返回值:
- 该类的所有成员函数和变量都应通过派生类实现具体功能。
- 拷贝构造函数、拷贝赋值函数、移动构造函数和移动赋值函数均被删除,以防止值传递CAN对象。
