/* * @Description: * @Date: 2020-12-16 18:05:14 * @LastEditors: CK.Zh * @LastEditTime: 2020-12-25 17:52:50 * @FilePath: \NaviKit_stm32\Core\Inc\navikit.h */ /* * navikit.h * * Created on: Apr 17, 2020 * Author: oarap */ #ifndef _NAVIKIT_H_ #define _NAVIKIT_H_ #include "main.h" #include "adc.h" #include //#include "stm32f1xx_hal.h" //#include "gpio.h" #define ADC_CH_COUNT 5+2 //number of adc channels (include temp sensor and vrefint adc_in17) typedef enum { standby, //minimum current state idle, //only mcu runing run, //all function runing sleep, //SOCs and FANs are stop dfu, //device firmware update for SOM isp //in system program for EC }state_t; typedef struct { struct{ state_t sta,next_sta; //power state machine bool ps_on_allow; //allow power-on // bool power_btn; //power button pressed flag // bool custom_btn;//custom button pressed flag // bool pwr_led;//power led (on switch) // bool run_led;//run led (on board) // bool dbg_msg_out;//enable/disable debug message output }sys; struct{ bool mod_sleep; bool power_en; bool shutdown_req; bool sys_reset; bool force_recovery; bool sleep_wake; }som;//som power management struct{ struct{ uint32_t adc[ADC_CH_COUNT]; float out_24v;//_div16 float out_5v;//_div8 float out_12v;//_div8 float bkp_bat;//_div8 float main_pwr;//_div16 }rails;//power rails struct{ bool temp_sen_en; bool temp_sen_alt; bool coulomb_alcc; bool chrg_stat2; bool chrg_stat1; }sta; struct{ float voltage; float current; float cap; float temp; }coulomb; bool main_pwr_good; }pmb;//power management board }NaviKit_t; extern NaviKit_t NaviKit; //device on board enum Device_t{ //USB Port USB2_Port1=0x00,USB2_Port2,USB2_Port3,USB2_Port4,USB2_Port5,USB2_Port6, //USB2.0 Port USB3_Port5,USB3_Port6,USB3_Port1,USB3_Port2,USB3_Port3,USB3_Port4, //USB3.0 Port //SOC on Board SOC_USB2_HUB=0x10,SOC_USB3_HUB,SOC_USB3_HOST,SOC_USB3_GEC,SOC_GE_SW, //System component SYS_FAN1=0x20,SYS_FAN2,SYS_FAN3, //Fan on Board SYS_RUN_LED,SYS_PWR_LED, //LED on Board SYS_SRC_BUZZ, //Oscillation source internal buzzer //System on module --Jetson nano SOM_PWR_EN=0x30,SOM_DFU,SOM_RESET,SOM_SLEEP, //Power Management Board PMB_PS_ON=0x40}; void PWR_Enable(enum Device_t device,bool en,uint16_t delay); bool PWR_Enable_IRQ(enum Device_t device,bool en,uint16_t delay); bool PWR_Status(enum Device_t device); void NaviKit_var_init(); //power state machine switch function void enter_standby_state(uint16_t delay); void enter_isp_state(); void enter_run_state(uint16_t interval); void enter_idle_state(uint16_t interval); void enter_sleep_state(uint16_t interval); void enter_dfu_state(uint16_t interval); void som_reboot(uint16_t delay); //non-blocking beep function with os delay void TaskBeep(uint32_t time_ms, uint8_t n); void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc); void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); #endif /* INC_NAVIKIT_H_ */