Files
checker_slave/source/elec_det/hardware/gpio_cfg.h
2023-10-07 18:15:52 +08:00

306 lines
9.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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_H HMOS_SWITCH_W_1
#define EW_DIFF_MOD_L HMOS_SWITCH_W_0
#define EW_BUS_OFF HMOS_SWITCH_OFF
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