| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #ifndef _SOFT_CAN_H_
- #define _SOFT_CAN_H_
- #include <stdint.h>
- #include "hpm_can_drv.h"
- /*----------------------------- 飞控自定义 CAN 组成协议格式
- * ---------------------*/
- // CAN协议使用扩展ID进行过滤,总共29位, 0x1FFFFFFF,禁止高7位全为1
- // 第28~26位,帧类型
- #define FRAME_TYPE_MASK 0xE0000000 // 1110 0000 0000 0000 0000 0000 0000 0000
- #define CAN_FRAME_TYPE_DATA 0x00 // 数据帧
- #define CAN_FRAME_TYPE_REQ 0x01 // 请求帧
- // 第25~19位,消息ID
- #define MSG_ID_MASK 0x1FC00000 // 0001 1111 1100 0000 0000 0000 0000 0000
- // 飞控发出的消息序号
- #define CAN_MSGID_CONTROLLER_TO_LED_TEST 0X00 // 测试消息
- #define CAN_MSGID_CONTROLLER_TO_LED_BLINK 0x01 // 灯闪烁
- // led发出的消息序号
- #define CAN_MSGID_LED_TO_CONTROLLER_VOLTAGE 0x01 // 电压监测
- // 第18~12位,目标nodeID,11~5位,源nodeID, ID最大0x7F
- #define DESTINATION_ID_MASK \
- 0x003F8000 // 0000 0000 0011 1111 1000 0000 0000 0000
- #define SOURCE_ID_MASK 0x00007F00 // 0000 0000 0000 0000 0111 1111 0000 0000
- #define CAN_NODEID_CONTROLLER 0x01 // 主控CANID
- #define CAN_NODEID_LED 0x02 // led灯板nodeid
- // 第4位帧开始标志,第3位帧结束标志
- #define CAN_MSG_STA 0x00000080
- #define CAN_MSG_END 0x00000040
- // 第2~0位,帧序号
- #define FRAME_SEQ_MASK 0x00000031 // 0000 0000 0000 0000 0000 0000 0011 1000
- ////////////////////////////////////////////////////////////////////////////////
- // CANmaskID,
- // maskID中为1的位,需要filterID和消息帧中对应位的值完全一样,才能通过过滤
- // 因此目标nodeID的位全置1, 其它位置暂不过滤
- #define CAN_CONTROLLER_MASK_ID 0x003F8006
- #define CAN_CONTROLLER_FILTER_ID ((unsigned int)CAN_NODEID_CONTROLLER << 15)
- enum can_ext_id_set
- {
- //莫之比智能-避障雷达UAVR20 前向
- CAN_UAVR20_1_MSG = (0x000EFF01),
- //莫之比智能-避障雷达UAVR20 后向
- CAN_UAVR20_2_MSG = (0x000EFF02),
- //莫之比智能-定高雷达UAVH30
- CAN_UAVH30_MSG = (0x000EFF0B),
- //莫之比智能-避障雷达UAVR21 前向
- CAN_UAVR21_1_MSG = 0x000EFF11,
- //莫之比智能-避障雷达UAVR21 后向
- CAN_UAVR21_2_MSG = 0x000EFF12,
- //莫之比系列扩展ID
- CAN_MICOB_FILTER_ID = 0x000EFF01,
- CAN_MICOB_MASK_ID = 0x1FFFFFE0,
- // 格式智能电池 ID
- CAN_TATTU_BMS_ID = (0x01109216),
- // 视觉模块
- CAN_VINS2FMU_MSG = (0X1662),
- CAN_FMU2VINS_MSG = (0X1661),
- // afc id
- CAN_MC2AFC_ID = 0x1664,
- CAN_AFC2MC_ID = 0x1663,
- // ulanding 雷达
- CAN_ULANDING_MSG = (0x90002),
- // V7PMU
- CAN_V7_PMU = 528472
- };
- enum can_std_id_set
- {
- //标准帧 11位 组成16位后面要加5(RTR+IDE+EXID[17:15]位
- CAN_NRA24_TARINFO = (0x70C),
- CAN_NRA24_TARSTAT = (0x70B),
- //标准帧 11位 组成16位后面要加5(RTR+IDE+EXID[17:15]位
- CAN_MR72_GENERAL = (0x60B),
- CAN_MR72_STATUS = (0x60A),
- // 吉利发动机 can id
- can_id_version_msg = 0x1C0,
- can_id_status_msg = 0x1C1,
- can_id_fault_msg = 0x1C2,
- can_id_ack_msg = 0x1C3,
- can_id_worktime_msg = 0x1C4,
- can_id_ctl_msg = 0x1A0,
- };
- /*----------------------------------------------------------------------------*/
- void CAN_BusInit(void);
- int canSendVkMsg(unsigned char *data, unsigned char length, unsigned int extid,
- uint16_t time_out_ms);
- int canSendMsg(can_transmit_buf_t *pTxMsg);
- void CanTxRxServicePoll(void);
- #endif
|