WXK
2025-02-11 e328ebef585cea2351b37117b2d5ac4978ecd3c0
keil/include/drivers/PCA9555.h
@@ -17,49 +17,96 @@
#define  PCA_INPUT_CONFIG_MASK 0xff
#define  SDA_0 gpio_pin_clr(SDA_PIN)
#define  SCL_0 gpio_pin_clr(SCL_PIN)
#define  PCA_INPUT_DETECT   IO_PIN_17
//输出和配置
#define MAX_GPIO_NUM 16
////0组
//#define  MCU_A                0x01
//#define  CHG_G               0x02
//#define  LORA_IRQ         0x03
//#define  LORA_NRST          0x04
//#define  ADC_MINIUS       0x05
//#define  INPUT_5V          0x06
//#define  PWR_ON             0x07
//#define  PWR_ENABLE       0x08
////1组
//#define GPS_LED              0x09
//#define TTS_ENABLE          0x0A
//#define WAKE_UP              0x0B
//#define AIR780E_ENBALE    0x0C
//#define SOS_ENBALE          0x0D
//#define GPS_BACKUP          0x0E
//#define GPS_POWER           0x0F
//#define MAIN_RI             0x10
//重新定义宏
//0组
#define  MCU_A          0x01
#define  CHG_G          0x02
#define  LORA_IRQ    0x03
#define  LORA_NRST    0x04
#define  ADC_MINIUS 0x05
#define  INPUT_5V    0x06
#define  PWR_ON       0x07
#define  PWR_ENABLE 0x08
#define  PWR_GND               0x01
#define  IN_5V               0x02
#define  CHGN               0x03
#define  MOTO                0x04
#define  BT_IRQ             0x05
#define  RED_LED            0x06
#define  GREEN_LED          0x07
#define  BT_LED           0x08
//1组
#define GPS_LED     0x09
#define TTS_ENABLE 0x0A
#define WAKE_UP     0x0B
#define AIR780E_ENBALE 0x0C
#define SOS_ENBALE 0x0D
#define GPS_BACKUP 0x0E
#define GPS_POWER  0x0F
#define MAIN_RI    0x10
#define LORA_LED              0x09
#define UWB_LED             0x0A
#define IO_KONG              0x0B
#define LORA_IRQ         0x0C
#define LORA_NRST          0x0D
#define SOS_ENBALE          0x0E
#define WK_UP                 0x0F
#define BT_EN                0x10
//输入寄存器INT判断数组对应位置
//input 0组
#define MCU_A_POSITION  (1<<(MAX_GPIO_NUM-MCU_A))
#define CHG_G_POSITION  (1<<(MAX_GPIO_NUM-CHG_G))
#define PWR_GND_POSITION  (1<<(MAX_GPIO_NUM-PWR_GND))
#define IN_5V_POSITION  (1<<(MAX_GPIO_NUM-IN_5V))
#define CHGN_POSITION  (1<<(MAX_GPIO_NUM-CHGN))
#define MOTO_POSITION  (1<<(MAX_GPIO_NUM-MOTO))
#define BT_IRQ_POSITION  (1<<(MAX_GPIO_NUM-BT_IRQ))
#define RED_LED_POSITION  (1<<(MAX_GPIO_NUM-RED_LED))
#define GREEN_LED_POSITION  (1<<(MAX_GPIO_NUM-GREEN_LED))
#define BT_LED_POSITION  (1<<(MAX_GPIO_NUM-BT_LED))
//input 1组
#define LORA_LED_POSITION  (1<<(MAX_GPIO_NUM-LORA_LED))
#define UWB_LED_POSITION  (1<<(MAX_GPIO_NUM-UWB_LED))
#define IO_KONG_POSITION  (1<<(MAX_GPIO_NUM-IO_KONG))
#define LORA_IRQ_POSITION  (1<<(MAX_GPIO_NUM-LORA_IRQ))
#define LORA_NRST_POSITION  (1<<(MAX_GPIO_NUM-LORA_NRST))
#define ADC_MINIUS_POSITION  (1<<(MAX_GPIO_NUM-ADC_MINIUS))
#define INPUT_5V_POSITION  (1<<(MAX_GPIO_NUM-INPUT_5V))
#define PWR_ON_POSITION  (1<<(MAX_GPIO_NUM-PWR_ON))
#define PWR_ENABLE_POSITION  (1<<(MAX_GPIO_NUM-PWR_ENABLE))
//input 1组
#define GPS_LED_POSITION  (1<<(MAX_GPIO_NUM-GPS_LED))
#define TTS_ENABLE_POSITION  (1<<(MAX_GPIO_NUM-TTS_ENABLE))
#define WAKE_UP_POSITION  (1<<(MAX_GPIO_NUM-WAKE_UP))
#define AIR780E_ENBALE_POSITION  (1<<(MAX_GPIO_NUM-AIR780E_ENBALE))
#define SOS_ENBALE_POSITION  (1<<(MAX_GPIO_NUM-SOS_ENBALE))
#define GPS_BACKUP_POSITION  (1<<(MAX_GPIO_NUM-GPS_BACKUP))
#define GPS_POWER_POSITION  (1<<(MAX_GPIO_NUM-GPS_POWER))
#define MAIN_RI_POSITION  (1<<(MAX_GPIO_NUM-MAIN_RI))
#define WK_UP_POSITION  (1<<(MAX_GPIO_NUM-WK_UP))
#define BT_EN_POSITION  (1<<(MAX_GPIO_NUM-BT_EN))
#define LORA_LED_ON      PCA9555_Set_One_Value_Output(LORA_LED,1)
#define LORA_LED_OFF     PCA9555_Set_One_Value_Output(LORA_LED,0)
#define UWB_LED_ON       PCA9555_Set_One_Value_Output(UWB_LED,1)
#define UWB_LED_OFF      PCA9555_Set_One_Value_Output(UWB_LED,0)
#define RED_LED_ON       PCA9555_Set_One_Value_Output(RED_LED,1)
#define RED_LED_OFF      PCA9555_Set_One_Value_Output(RED_LED,0)
#define GREEN_LED_ON     PCA9555_Set_One_Value_Output(GREEN_LED,1)
#define GREEN_LED_OFF    PCA9555_Set_One_Value_Output(GREEN_LED,0)
#define BT_LED_ON        PCA9555_Set_One_Value_Output(BT_LED,1)
#define BT_LED_OFF       PCA9555_Set_One_Value_Output(BT_LED,0)
#define MOTO_ON          PCA9555_Set_One_Value_Output(MOTO,1)
#define MOTO_OFF         PCA9555_Set_One_Value_Output(MOTO,0)
#define LORA_NRST_UP       PCA9555_Set_One_Value_Output(LORA_NRST,1)
#define LORA_NRST_DOWN    PCA9555_Set_One_Value_Output(LORA_NRST,0)
//uint8_t gps_led_output_state,tts_enbale_output_state,wake_up_output_state,air780e_enable_output_state,sos_enable_output_state,gps_backup_output_state,gps_power_output_state,main_ri_output_state;//1组output IO口从左到右1.0~1.7
//uint8_t mcu_a_output_state,chg_g_output_state,lora_irq_output_state,lora_nrst_output_state,adc_minius_output_state,input_5v_output_state,pwr_on_output_state,pwr_enable_output_state;//2组output IO口从左到右0.0~0.7
void IIC_gpio_pca_init(void);
//void IIC_gpio_pca_init(void);
void IIC2_pca_Start(void);
void IIC_pca_Ready(void);
void IIC2_pca_Stop(void);
@@ -78,3 +125,8 @@
void PCA9555_Set_One_Value_Config(unsigned char num,unsigned char value);
void PCA9555_Set_One_Value_Polarity_input(unsigned char num,unsigned char value);
void PCA9555_init();
//拓展函数
int read_userkey_input_pca_lora();
static void pca_input_detect_irq_handler(enum IO_PIN_T pin);
static void pca_handler(enum IO_PIN_T pin);
void pca_input_detection_init(GPIO_IRQ_HANDLER_T irq_handler);