第一次提交

This commit is contained in:
2025-07-05 20:11:15 +08:00
commit 89b0708dfb
56 changed files with 10876 additions and 0 deletions

204
interface_can.h Normal file
View File

@@ -0,0 +1,204 @@
#ifndef _INTERFACE_CAN_H_
#define _INTERFACE_CAN_H_
#include "regs_base.h"
#include "irq_num.h"
#include <sdrv_flexcan.h>
#define CAN_INDEX_0 FLEXCAN7
#define CAN_INDEX_1 FLEXCAN21
#define CAN_INDEX_2 FLEXCAN16
#define CAN_INDEX_3 FLEXCAN3
#define CAN_INDEX_4 FLEXCAN23
#define CAN_INDEX_5 FLEXCAN5
#define CAN_INDEX_6 FLEXCAN6
#define CAN_INDEX_7 FLEXCAN4
#define TX_MB_INDEX (USED_MB_FOR_FIFO)
#define LEFT_FRONT_MOTOR_INPUT1 0x101
#define LEFT_FRONT_MOTOR_INPUT2 0x103//<2F><EFBFBD>
#define LEFT_REAR_MOTOR2_INPUT1 0x102
#define LEFT_REAR_MOTOR2_INPUT2 0x104//<2F><EFBFBD>
#define RIGHT_FRONT_MOTOR_INPUT1 0x101
#define RIGHT_FRONT_MOTOR_INPUT2 0x103//<2F><EFBFBD>
#define RIGHT_REAR_MOTOR_INPUT1 0x102
#define RIGHT_REAR_MOTOR_INPUT2 0x104//<2F><EFBFBD>
#define LEFT_FRONT_MOTOR_OUTPUT1 0x201
#define LEFT_FRONT_MOTOR_OUTPUT2 0x103
#define LEFT_REAR_MOTOR_OUTPUT1 0x202
#define LEFT_REAR_MOTOR_OUTPUT2 0x104
#define RIGHT_FRONT_MOTOR_OUTPUT1 0x201
#define RIGHT_FRONT_MOTOR_OUTPUT2 0x103
#define RIGHT_REAR_MOTOR_OUTPUT1 0x202
#define RIGHT_REAR_MOTOR_OUTPUT2 0x104
//#define MOTOR_INPUT_ID_1 0x15000003//<2F>ɼ<EFBFBD>ģ<EFBFBD><C4A3>
//#define MOTOR_INPUT_ID_2 0x10F92708//<2F><>ǰ
//#define MOTOR_INPUT_ID_3 0x15000003//<2F>ɼ<EFBFBD>ģ<EFBFBD><C4A3>
//#define MOTOR_INPUT_ID_4 0x10F94708//<2F>Һ<EFBFBD>
//
//
#define MOTOR_INPUT_ID_5 0x10F81708//<2F><>ǰ <20><>λ
#define MOTOR_INPUT_ID_6 0x10F82708//<2F><>ǰ
#define MOTOR_INPUT_ID_7 0x10F83708//<2F><><EFBFBD><EFBFBD>
#define MOTOR_INPUT_ID_8 0x10F84708//<2F>Һ<EFBFBD>
#define BMS_INPUT_ID1 0x100
#define BMS_INPUT_ID2 0x101
#define REMOTE_ID 0x12000023
#define TEMP_MODULE_INPUT_ID_1 0x15000003
#define CAN_FIFO_SIZE 8
//#define TEMP_MODULE_INPUT_ID_2 0x302
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
typedef struct _StrCanFault
{
uint8_t navigator_count; //<2F><><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD>
uint8_t motor1_count; //<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>
uint8_t motor2_count; //<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>
uint8_t motor3_count; //<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>
uint8_t motor4_count; //<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>
uint8_t bms_count; //bms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t temperature_count; //<2F>¶ȼ<C2B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
uint8_t remote_count; //ң<>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>
uint8_t navigator_state; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
uint8_t motor1_state; //<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>״̬
uint8_t motor2_state; //<2F><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>״̬
uint8_t motor3_state; //<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>״̬
uint8_t motor4_state; //<2F><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>״̬
uint8_t bms_state; //bms״̬
uint8_t temperature_state; //<2F>¶ȼ<C2B6><C8BC><EFBFBD><EFBFBD><EFBFBD>
uint8_t remote_state; //ң<><D2A3>״̬
} StrCanFault;
typedef union _UnCanFault
{
StrCanFault bit_data; // ʹ<>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t arr[sizeof(StrCanFault)]; // ͨ<><CDA8><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>С
} UnCanFault;
// can<61><6E><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
typedef struct _StrCanBuffer
{
uint32_t id; //**< CAN Frame Identifier. */
uint8_t dataBuffer[8]; //<2F><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>
unsigned int length : 7; //**< CAN frame payload length in bytes(Range: 0~8). */
unsigned int type : 1; //**< CAN Frame Type(DATA or REMOTE). */
unsigned int format : 1; //**< CAN Frame Identifier(STD or EXT format). */
}StrCanBuffer;
typedef struct Fifo_Queue_Tag
{
StrCanBuffer Data[CAN_FIFO_SIZE];//<2F><><EFBFBD><EFBFBD>
uint8_t front;//ͷָ<CDB7><D6B8>
uint8_t rear;//βָ<CEB2><D6B8>
}StrCanFifoQueue;
#define ON 1
#define OFF 0
#define left_motor_fan(Value) un_inf_can_kgf_output1.bit_data.KGF01 = Value;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define right_motor_fan(Value) un_inf_can_kgf_output1.bit_data.KGF03 = Value;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define pre_charge_relay(Value) un_inf_can_kgf_output1.bit_data.KGF04 = Value;//Ԥ<><D4A4>
#define high_voltage_relay(Value) un_inf_can_kgf_output1.bit_data.KGF07 = Value;un_inf_can_kgf_output1.bit_data.KGF08 = Value//<2F><>ѹ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>
#define low_voltage_relay(Value) un_inf_can_kgf_output1.bit_data.KGF11 = Value;un_inf_can_kgf_output1.bit_data.KGF12 = Value//<2F><>ѹ<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>
#define yellow_light(Value) un_inf_can_kgf_output1.bit_data.KGF06 = Value;//<2F>Ƶ<EFBFBD>
#define red_light(Value) un_inf_can_kgf_output1.bit_data.KGF09 = Value;//<2F><><EFBFBD><EFBFBD>
#define left_vehicle_fan(Value) un_inf_can_kgf_output1.bit_data.KGF14 = Value;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define right_vehicle_fan(Value) un_inf_can_kgf_output2.bit_data.KGF03 = Value;//<2F><><EFBFBD>ҷ<EFBFBD><D2B7><EFBFBD>
#define computer(Value) un_inf_can_kgf_output2.bit_data.KGF01 = Value;un_inf_can_kgf_output2.bit_data.KGF02 = Value//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define network_switch(Value) un_inf_can_kgf_output2.bit_data.KGF05 = Value;un_inf_can_kgf_output2.bit_data.KGF06 = Value//<2F><><EFBFBD><EFBFBD><E7BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
//H<><48>
#define brake_motor_forward un_h_bridge_output.bit_data.channel_01 = ON ;un_h_bridge_output.bit_data.channel_04 = ON ;un_h_bridge_output.bit_data.channel_02 = OFF;un_h_bridge_output.bit_data.channel_03 = OFF;un_h_bridge_output.bit_data.sleep_01 = ON ;un_h_bridge_output.bit_data.sleep_02 = ON//<2F><>ת
#define brake_motor_reversal un_h_bridge_output.bit_data.channel_01 = OFF;un_h_bridge_output.bit_data.channel_04 = OFF;un_h_bridge_output.bit_data.channel_02 = ON ;un_h_bridge_output.bit_data.channel_03 = ON ;un_h_bridge_output.bit_data.sleep_01 = ON ;un_h_bridge_output.bit_data.sleep_02 = ON//<2F><>ת
#define brake_motor_off un_h_bridge_output.bit_data.channel_01 = OFF;un_h_bridge_output.bit_data.channel_04 = OFF;un_h_bridge_output.bit_data.channel_02 = OFF;un_h_bridge_output.bit_data.channel_03 = OFF;un_h_bridge_output.bit_data.sleep_01 = OFF;un_h_bridge_output.bit_data.sleep_02 = OFF//<2F>ر<EFBFBD>
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
void flexcan_transfer_callback(flexcan_handle_t *handle,flexcan_status_e status, uint32_t result,void *userData);
uint8_t flexcan_config_rx_fifo(flexcan_handle_t *handle,flexcan_rx_fifo_config_t *config);
uint8_t CAN_Send_Msg( flexcan_handle_t *handle, uint32_t ID, flexcan_frame_format_e ide, flexcan_frame_type_e rtr, uint8_t *msg, uint8_t len, uint8_t tx_index);
void flexcan_Busoff_Recovery(void);
void initialization_All_Flexcan(void);
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
extern flexcan_handle_t g_flexcan_handle;
extern bool busoff_occur_flag;//<2F><>־<EFBFBD><D6BE>
extern bool WDTReFresh_flag;//<2F><><EFBFBD>±<EFBFBD>־
extern flexcan_handle_t g_flexcan_handle;
extern uint16_t FrameHeader;//֡ͷ
extern flexcan_handle_t can_handle_0;//can<61><6E>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><E1B9B9>
extern flexcan_handle_t can_handle_1;
extern flexcan_handle_t can_handle_2;
extern flexcan_handle_t can_handle_3;
extern flexcan_handle_t can_handle_4;
extern flexcan_handle_t can_handle_5;
extern flexcan_handle_t can_handle_6;
extern flexcan_handle_t can_handle_7;
extern UnCanFault can_fault_info;
extern uint32_t time_elapsed;
extern uint32_t time_elapsed1;
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
void canInterfaceInit(void);
#endif /* INTERFACE_CAN_H */