2024-04-15 09:23:32 +08:00
|
|
|
|
#ifndef _APP_CONTROL_OUT_H_
|
|
|
|
|
#define _APP_CONTROL_OUT_H_
|
|
|
|
|
|
2024-05-11 00:04:28 +08:00
|
|
|
|
// ADC参考电压
|
|
|
|
|
#define VREF_1V2 1200
|
|
|
|
|
#define VREF_2V4 2400
|
|
|
|
|
#define VREF_VDD 3300
|
|
|
|
|
#define SADC_VREF VREF_2V4
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
2024-05-11 00:04:28 +08:00
|
|
|
|
// Dmin =(0.9V*(1024/3.3))/2 =139.6;
|
|
|
|
|
// Dmax =(3.8V*(1024/3.3))/2 =589.6;
|
2024-06-02 20:59:18 +08:00
|
|
|
|
// #define ACC_Dmin 138
|
|
|
|
|
// #define ACC_Dmax 591
|
|
|
|
|
|
|
|
|
|
extern uint16_t ACC_Dmin ;
|
|
|
|
|
extern uint16_t ACC_Dmax ;
|
|
|
|
|
|
|
|
|
|
#define ACC_ADC_init(VDD_val) ACC_Dmin =(880*(1024.0/(VDD_val)))/2; \
|
|
|
|
|
ACC_Dmax =(3820*(1024.0/(VDD_val)))/2;
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
2024-05-11 00:04:28 +08:00
|
|
|
|
#define ACC_PERCENT(s) (ACC_Dmin + ((ACC_Dmax - ACC_Dmin)*(s))/100)
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
2024-08-19 01:14:21 +08:00
|
|
|
|
enum app_adc_dac_chx{
|
|
|
|
|
ACC_IN_CH =SADC_CH_AIN7, // 油门输入
|
|
|
|
|
ACC_FEED_CH =SADC_CH_AIN2, // 油门输出监测
|
|
|
|
|
BAT_IN_CH =SADC_CH_AIN3, // 电池输入
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum app_control{
|
|
|
|
|
OUT_12V_Control =PA17, // 12V电源控制输出 /H:12V输出
|
|
|
|
|
OUT_Door_lock =PA18, // 电门锁 /H:开锁
|
|
|
|
|
IN_01 =PA03, // 自定义输入
|
|
|
|
|
IN_GPS =PA19, // GPS输入0 /边沿触发
|
|
|
|
|
IO_MANAGER_MODE =PA13, // 管理员模式 /边沿触发
|
|
|
|
|
IO_BACK =PA14, // 倒车 /H:前进/L:后退
|
|
|
|
|
IO_BRAKE =PA15, // 制动 /L:低使能
|
|
|
|
|
|
|
|
|
|
IO_TTL_TX =PA11, // 串口发送
|
|
|
|
|
IO_TTL_RX =PA12, // 串口接收
|
|
|
|
|
|
|
|
|
|
RADAR_TXD0 =PA07, // 串口0发送
|
|
|
|
|
RADAR_RXD0 =PA06, // 串口0接收
|
|
|
|
|
PAD_TXD1 =PA10, // 串口1发送
|
|
|
|
|
PAD_RXD1 =PA09, // 串口1接收
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
2024-08-19 01:14:21 +08:00
|
|
|
|
ACC_PA8_ADC7 =PA08, // 油门输入
|
|
|
|
|
PWM4_DAC =PA05, // 油门输出
|
|
|
|
|
ACC_FEEDBACK_ADC2 =PA02, // 油门输出监测
|
|
|
|
|
|
|
|
|
|
RGB_DATA_IO =PA16, // RGB数据输出
|
|
|
|
|
|
|
|
|
|
BAT_PA4_ADC3 =PA04, // 电池电压输入
|
2024-05-11 00:04:28 +08:00
|
|
|
|
};
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
2024-08-19 01:14:21 +08:00
|
|
|
|
typedef struct sys_sta{
|
|
|
|
|
// uint16_t Pmode:2;
|
|
|
|
|
union{
|
|
|
|
|
uint8_t Pmode:2;
|
2024-08-20 11:02:49 +08:00
|
|
|
|
uint8_t Smode:2;
|
2024-08-19 01:14:21 +08:00
|
|
|
|
struct{
|
|
|
|
|
uint8_t Tourist:1;
|
|
|
|
|
uint8_t Manager:1;
|
2024-08-20 11:02:49 +08:00
|
|
|
|
uint8_t RES0 :2;
|
|
|
|
|
|
|
|
|
|
uint8_t IOgps:1;
|
|
|
|
|
uint8_t IOmanager:1;
|
|
|
|
|
uint8_t RES1 :2;
|
2024-08-19 01:14:21 +08:00
|
|
|
|
};
|
|
|
|
|
};
|
2024-08-20 11:02:49 +08:00
|
|
|
|
union{// 输入状态
|
|
|
|
|
uint8_t I_STA:8;
|
2024-08-19 01:14:21 +08:00
|
|
|
|
struct{
|
2024-08-20 11:02:49 +08:00
|
|
|
|
uint8_t I_01 :1; // 自定义输入状态
|
|
|
|
|
uint8_t I_brake :1; // 制动信号输入状态
|
|
|
|
|
uint8_t I_back :1; // 倒车信号输入状态
|
|
|
|
|
uint8_t A_brake :1; // 自动刹车状态
|
|
|
|
|
uint8_t A_Speed_Cut :1; // 自动减速状态
|
|
|
|
|
uint8_t O_lock :1; // 电门锁输出状态
|
|
|
|
|
uint8_t Reserve0:2;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
union{// 输入输出状态
|
|
|
|
|
uint8_t IO_STA:8;
|
|
|
|
|
struct{
|
|
|
|
|
uint8_t IO_TX :1;
|
|
|
|
|
uint8_t IO_RX :1;
|
|
|
|
|
uint8_t O_12V :1; // 12V电源输出状态
|
|
|
|
|
uint8_t Reserve1:5;
|
2024-08-19 01:14:21 +08:00
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
} sys_sta_t;
|
|
|
|
|
|
|
|
|
|
extern sys_sta_t sys_sta;
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
|
|
|
|
|
2024-08-19 01:14:21 +08:00
|
|
|
|
extern bool app_control_en[PA_MAX];
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
2024-05-11 00:04:28 +08:00
|
|
|
|
// 写1使能,写0失能
|
|
|
|
|
#define Set_Status(pad,activity) (gpio_put(pad, ((0 == activity) ? !app_control_en[pad] : app_control_en[pad])))
|
|
|
|
|
// 获取状态 1使能,0失能
|
|
|
|
|
#define Get_Status(pad) ((app_control_en[pad] == gpio_get(pad)) ? 1 : 0)
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
2024-08-19 01:14:21 +08:00
|
|
|
|
#define SYS_Manager_STA Get_Status(IO_MANAGER_MODE) //管理员输入状态
|
|
|
|
|
#define SYS_Back_STA Get_Status(IO_BACK) //倒车状态
|
|
|
|
|
#define SYS_Brake_STA Get_Status(IO_BRAKE) //制动状态
|
|
|
|
|
|
2024-05-11 00:04:28 +08:00
|
|
|
|
//中控控制IO初始化
|
|
|
|
|
void app_control_init(void);
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
2024-05-11 00:04:28 +08:00
|
|
|
|
// 获取电池电压值(unit:V)
|
|
|
|
|
float get_bat_voltage(void);
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
2024-05-11 00:04:28 +08:00
|
|
|
|
// 获取输入油门百分比(unit:%)(踏板信号)
|
|
|
|
|
uint16_t get_in_acc_percent(void);
|
|
|
|
|
// 设置输出油门百分比(unit:%)
|
|
|
|
|
void set_out_acc_percent(uint8_t percent);
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
|
|
|
|
|
2024-05-11 00:04:28 +08:00
|
|
|
|
// 控制进程,定时调用
|
|
|
|
|
void Control_procedure(void);
|
2024-04-15 09:23:32 +08:00
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|