Files
checker_slave/source/elec_det/hardware/gpio_cfg.h

308 lines
9.4 KiB
C
Raw Normal View History

#ifndef GPIO_CFG_H_
#define GPIO_CFG_H_
#include "base/define.h"
//具体实现思想,参考<<CM3权威指南>>第五章(87页~92页).
//IO口操作宏定义
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR_(addr) *((volatile unsigned long *)(addr))
#define BIT_ADDR_(addr, bitnum) MEM_ADDR_(BITBAND(addr, bitnum))
//IO口地址映射
#define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C
#define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C
#define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C
#define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C
#define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C
#define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C
#define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C
#define GPIOA_IDR_Addr (GPIOA_BASE+8) //0x40010808
#define GPIOB_IDR_Addr (GPIOB_BASE+8) //0x40010C08
#define GPIOC_IDR_Addr (GPIOC_BASE+8) //0x40011008
#define GPIOD_IDR_Addr (GPIOD_BASE+8) //0x40011408
#define GPIOE_IDR_Addr (GPIOE_BASE+8) //0x40011808
#define GPIOF_IDR_Addr (GPIOF_BASE+8) //0x40011A08
#define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08
//IO口操作,只对单一的IO口!
//确保n的值小于16!
#define PAout(n) BIT_ADDR_(GPIOA_ODR_Addr,n) //输出
#define PAin(n) BIT_ADDR_(GPIOA_IDR_Addr,n) //输入
#define PBout(n) BIT_ADDR_(GPIOB_ODR_Addr,n) //输出
#define PBin(n) BIT_ADDR_(GPIOB_IDR_Addr,n) //输入
#define PCout(n) BIT_ADDR_(GPIOC_ODR_Addr,n) //输出
#define PCin(n) BIT_ADDR_(GPIOC_IDR_Addr,n) //输入
#define PDout(n) BIT_ADDR_(GPIOD_ODR_Addr,n) //输出
#define PDin(n) BIT_ADDR_(GPIOD_IDR_Addr,n) //输入
#define PEout(n) BIT_ADDR_(GPIOE_ODR_Addr,n) //输出
#define PEin(n) BIT_ADDR_(GPIOE_IDR_Addr,n) //输入
#define PFout(n) BIT_ADDR_(GPIOF_ODR_Addr,n) //输出
#define PFin(n) BIT_ADDR_(GPIOF_IDR_Addr,n) //输入
#define PGout(n) BIT_ADDR_(GPIOG_ODR_Addr,n) //输出
#define PGin(n) BIT_ADDR_(GPIOG_IDR_Addr,n) //输入
#define VCC_2V5_Pin GPIO_Pin_1
#define VCC_2V5_Pin_Nu 1
#define VCC_2V5_GPIO_Port GPIOA
#define R_AD_01_Pin GPIO_Pin_3
#define R_AD_01_Nu 3
#define R_AD_01_Port GPIOA
#define VCC_1V25_Pin GPIO_Pin_3
#define VCC_1V25_Pin_Nu 3
#define VCC_1V25_GPIO_Port GPIOA
#define C_H_DAC_Pin GPIO_Pin_4
#define C_H_DAC_Pin_Nu 4
#define C_H_DAC_GPIO_Port GPIOA
#define C_M_DAC_Pin GPIO_Pin_5
#define C_M_DAC_Pin_Nu 5
#define C_M_DAC_GPIO_Port GPIOA
#define V_LA_M_Pin GPIO_Pin_6
#define V_LA_M_Pin_Nu 6
#define V_LA_M_GPIO_Port GPIOA
#define V_LA_H_Pin GPIO_Pin_7
#define V_LA_H_Pin_Nu 7
#define V_LA_H_GPIO_Port GPIOA
#define LAVC_M_Pin GPIO_Pin_8
#define LAVC_M_Pin_Nu 8
#define LAVC_M_GPIO_Port GPIOA
#define USART1_TX_Pin GPIO_Pin_9
#define USART1_TX_Pin_Nu 9
#define USART1_TX_GPIO_Port GPIOA
#define USART1_RX_Pin GPIO_Pin_10
#define USART1_RX_Pin_Nu 10
#define USART1_RX_GPIO_Port GPIOA
#define CAN1_RX_Pin GPIO_Pin_10
#define CAN1_RX_Pin_Nu 11
#define CAN1_RX_GPIO_Port GPIOA
#define CAN1_TX_Pin GPIO_Pin_11
#define CAN1_TX_Pin_Nu 12
#define CAN1_TX_GPIO_Port GPIOA
#define SEG0_Pin GPIO_Pin_15
#define SEG0_Pin_Nu 15
#define SEG0_GPIO_Port GPIOA
#define R10_ON_Pin GPIO_Pin_0
#define R10_ON_Pin_Nu 0
#define R10_ON_GPIO_Port GPIOB
#define R510_ON_Pin GPIO_Pin_1
#define R510_ON_Pin_Nu 1
#define R510_ON_GPIO_Port GPIOB
#define LED1_Pin GPIO_Pin_2
#define LED1_Pin_Nu 2
#define LED1_GPIO_Port GPIOB
#define IO_CAP_AD_Pin GPIO_Pin_5
#define IO_CAP_AD_Pin_Nu 5
#define IO_CAP_AD_Port GPIOB
#define FIRE_TEST_Pin GPIO_Pin_8
#define FIRE_TEST_Pin_Nu 8
#define FIRE_TEST_Port GPIOB
#define IO_APD12_Pin GPIO_Pin_9
#define IO_APD12_Pin_Nu 9
#define IO_APD12_GPIO_Port GPIOB
#define I2IC_SCL_Pin GPIO_Pin_10
#define I2IC_SCL_Pin_Nu 10
#define I2IC_SCL_GPIO_Port GPIOB
#define I2IC_SDA_Pin GPIO_Pin_11
#define I2IC_SDA_Pin_Nu 11
#define I2IC_SDA_GPIO_Port GPIOB
#define LED2_Pin GPIO_Pin_12
#define LED2_Pin_Nu 12
#define LED2_GPIO_Port GPIOB
#define OUTAL_Pin GPIO_Pin_13
#define OUTAL_Pin_Nu 13
#define OUTAL_GPIO_Port GPIOB
#define OUTBL_Pin GPIO_Pin_14
#define OUTBL_Pin_Nu 14
#define OUTBL_GPIO_Port GPIOB
#define OUTAH_Pin GPIO_Pin_15
#define OUTAH_Pin_Nu 15
#define OUTAH_GPIO_Port GPIOB
#define AD_OUTA_Pin GPIO_Pin_0
#define AD_OUTA_Pin_Nu 0
#define AD_OUTA_Port GPIOC
#define AD_OUTB_Pin GPIO_Pin_1
#define AD_OUTB_Pin_Nu 1
#define AD_OUTB_Port GPIOC
#define AN_UA_Pin GPIO_Pin_2
#define AN_UA_Pin_Nu 2
#define AN_UA_Port GPIOC
#define AN_MAL_Pin GPIO_Pin_3
#define AN_MAL_Pin_Nu 3
#define AN_MAL_Port GPIOC
#define R100_ON_Pin GPIO_Pin_4
#define R100_ON_Pin_Nu 4
#define R100_ON_GPIO_Port GPIOC
#define AN_CAP_AD_Pin GPIO_Pin_5
#define AN_CAP_AD_Pin_Nu 5
#define AN_CAP_AD_Port GPIOC
#define OUTBH_Pin GPIO_Pin_6
#define OUTBH_Pin_Nu 6
#define OUTBH_GPIO_Port GPIOC
#define POWER_ON_Pin GPIO_Pin_7
#define POWER_ON_Pin_Nu 7
#define POWER_ON_GPIO_Port GPIOC
#define SEG4_Pin GPIO_Pin_8
#define SEG4_Pin_Nu 8
#define SEG4_GPIO_Port GPIOC
#define SEG3_Pin GPIO_Pin_9
#define SEG3_Pin_Nu 9
#define SEG3_GPIO_Port GPIOC
#define SEG1_Pin GPIO_Pin_10
#define SEG1_Pin_Nu 10
#define SEG1_GPIO_Port GPIOC
#define SEG2_Pin GPIO_Pin_11
#define SEG2_Pin_Nu 11
#define SEG2_GPIO_Port GPIOC
#define U3_TXD_Pin GPIO_Pin_10
#define U3_TXD_Pin_Nu 10
#define U3_TXD_GPIO_Port GPIOC
#define U3_RXD_Pin GPIO_Pin_11
#define U3_RXD_Pin_Nu 11
#define U3_RXD_GPIO_Port GPIOC
#define IO_APD22_Pin GPIO_Pin_13
#define IO_APD22_Pin_Nu 13
#define IO_APD22_GPIO_Port GPIOC
#define IO_APD21_Pin GPIO_Pin_14
#define IO_APD21_Pin_Nu 14
#define IO_APD21_GPIO_Port GPIOC
#define IO_APD11_Pin GPIO_Pin_15
#define IO_APD11_Pin_Nu 15
#define IO_APD11_GPIO_Port GPIOC
#define LED2_Out PBout(LED2_Pin_Nu)
#define LED1_Out PBout(LED1_Pin_Nu)
#define LED1_Out_On PBout(LED1_Pin_Nu)=0
#define LED1_Out_Off PBout(LED1_Pin_Nu)=1
//电源开关
#define POWER_ON {PCout(POWER_ON_Pin_Nu) = 1;}
#define POWER_OFF {PCout(POWER_ON_Pin_Nu) = 0;}
//桥驱动
#define HMOS_SWITCH_W_1 {PAout(LAVC_M_Pin_Nu)=0; PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PBout(OUTAH_Pin_Nu)=1;}
#define HMOS_SWITCH_W_0 {PAout(LAVC_M_Pin_Nu)=0; PBout(OUTBL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTAL_Pin_Nu)=1;PCout(OUTBH_Pin_Nu)=1;}
#define HMOS_SWITCH_RW_1 {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PBout(OUTAH_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
#define HMOS_SWITCH_RW_0 {PAout(LAVC_M_Pin_Nu)=0; PBout(OUTBL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTAL_Pin_Nu)=1;PCout(OUTBH_Pin_Nu)=1;}
#define HMOS_SWITCH_GND {PCout(OUTBH_Pin_Nu)=0; PAout(LAVC_M_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0;delay_nop(50);PBout(OUTBL_Pin_Nu)=1;PBout(OUTAL_Pin_Nu)=1;}
#define HMOS_SWITCH_OFF {PCout(OUTBH_Pin_Nu)=0; PAout(LAVC_M_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0;delay_nop(50);PBout(OUTBL_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0;}
#define HMOS_FAST_DISCHG {PCout(POWER_ON_Pin_Nu) = 0; PCout(OUTBH_Pin_Nu)=0; PAout(LAVC_M_Pin_Nu)=0;PBout(OUTBL_Pin_Nu)=0;delay_nop(50);PBout(OUTAH_Pin_Nu)=1;PBout(OUTAL_Pin_Nu)=1;}
#define HMOS_SWITCH_ON {PAout(LAVC_M_Pin_Nu)=0;PCout(OUTBH_Pin_Nu)=0; PBout(OUTAL_Pin_Nu)=0;delay_nop(50);PBout(OUTBL_Pin_Nu)=1;PBout(OUTAH_Pin_Nu)=1;}
//芯跳桥驱动
#define XTBus_POWER_Out HMOS_SWITCH_W_1//总线模式开关
#define XTBUS_ON HMOS_SWITCH_ON
#define XTBUS_OFF HMOS_SWITCH_OFF
#define XTBUS_W_1 HMOS_SWITCH_W_1
#define XTBUS_W_0 HMOS_SWITCH_W_0
#define XTBUS_WR_1 HMOS_SWITCH_W_1
#define XTBUS_WR_0 HMOS_SWITCH_W_0
//JQ 桥驱动
#define JQBus_POWER_Out HMOS_SWITCH_W_1 //总线模式开关
#define JQBUS_ON HMOS_SWITCH_ON
#define JQBUS_OFF HMOS_SWITCH_OFF
#define JQBUS_W_1 HMOS_SWITCH_W_1
#define JQBUS_W_0 HMOS_SWITCH_W_0
//EW 桥驱动
#define EW_SINGLE_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
#define EW_SINGLE_MOD_H HMOS_SWITCH_W_1
//#define EW_DIFF_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PBout(OUTAH_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
#define EW_DIFF_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
2023-10-07 18:15:52 +08:00
#define EW_DIFF_MOD_H HMOS_SWITCH_W_1
#define EW_DIFF_MOD_L HMOS_SWITCH_W_0
#define EW_BUS_OFF HMOS_SWITCH_OFF
2023-10-31 18:12:21 +08:00
#define EW_BUS_ON HMOS_SWITCH_ON
void CtrlGpio_DefInit(void);
/*
@brief
@param
@rtv
*/
uint8_t Gpio_GetDeivceAddr(void);
/*
@brief 4
@param 0
1 1-4
2 2-3
3 1-3
4 2-4
*/
void Gpio_ResistorSwitch(uint8_t uc_r);
/*
@brief GPIO配置
*/
void Gpio_CAPSwitch(uint8_t uc_sw);
#endif