Files
2026-10-19 15:33:00 +08:00

515 lines
16 KiB
C
Raw Permalink 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 _SETUP_IO_H_
#define _SETUP_IO_H_
/**************************************************************************
-------------------------------- IO口配置 ---------------------------------
**************************************************************************/
//配置内容:IO脚位排序
//配置说明:有定义 = 该型号对应IO脚位排序
#define _IO_CMS79F5335 //CMS79F5335脚位
//#define _IO_CMS79F5365 //CMS79F5365脚位
//=========================================================================
//配置内容:功能对应IO脚位
//配置说明:无相应功能,可直接屏蔽或者删除
//-------------------------------------------------------------------------
#define _pBUZZ _Pin7 //蜂鸣器控制口
#define _pFAN _Pin7 //风扇控制口
//#define _pAD_TOP _Pin //顶部测温ADC口
#define _pAD_PAN _Pin8 //锅底测温ADC口
#define _pAD_IGBT _Pin12 //IGBT测温ADC口
#define _pAD_VOL _Pin11 //电压ADC口
#define _pCON1 _Pin15 //CON1口
#define _pCON2 _Pin14 //CON2口
#define _pCON3 _Pin13 //CON3口
//-------------------------------------------------------------------------
#define _pCOMM_IN _pCON2 //通信输入口(有通信)
#define _pCOMM_OUT _pCON3 //通信输出口(有通信)
#define _pSDA _pCON1 //驱动SDA口(无通信)
#define _pSCK _pCON2 //驱动SCK口(无通信)
#define _pSTB _pCON3 //驱动STB口(无通信)
//=========================================================================
//配置内容:上电初始化IO电平
//配置说明:0 = 低电平,1 = 高电平
#define C_Init_PORTA 0B00000000
#define C_Init_PORTB 0B00000000
#define C_Init_PORTC 0B00000000
/**************************************************************************
-------------------------------- AD通道配置 -------------------------------
**************************************************************************/
//配置内容:工作电流ADC通道
//配置说明:通道27 = 有RC滤波、通道28 = 无RC滤波
#define C_AdcChannel_Curr 28
/**************************************************************************
* 芯片测试脚位
**************************************************************************/
#define _Pin_CMPOUT1 0xA0 //比较器测试输出口1
#define _Pin_CMPOUT2 0xB7 //比较器测试输出口2
#define _Pin_PGAOUT 0xC0 //PGA测试输出口
/**************************************************************************
* 芯片专用脚位
**************************************************************************/
#define _pIGBT_SUP 0xB1 //IGBT辅助驱动口
#define _pIGBT_OVUV 0xB2 //IGBT驱动过欠压检测口
/**************************************************************************
* CMS79F5335脚位(16pin)
**************************************************************************/
#ifdef _IO_CMS79F5335
//#define _Pin1 VCC //Pin1
//#define _Pin2 VIN //Pin2
//#define _Pin3 GND //Pin3
//#define _Pin4 VDD //Pin4
#define _Pin5 0xA7 //Pin5
#define _Pin6 0xA5 //Pin6
#define _Pin7 0xC0 //Pin7
#define _Pin8 0xA4 //Pin8
#define _Pin9 0xA3 //Pin9
#define _Pin10 0xA2 //Pin10
#define _Pin11 0xA1 //Pin11
#define _Pin12 0xB7 //Pin12
#define _Pin13 0xB6 //Pin13
#define _Pin14 0xB4 //Pin14
#define _Pin15 0xB3 //Pin15
//#define _Pin16 PPG //Pin16
#endif
/**************************************************************************
* CMS79F5365脚位(20pin)
**************************************************************************/
#ifdef _IO_CMS79F5365
//#define _Pin1 VCC //Pin1
//#define _Pin2 VIN //Pin2
//#define _Pin3 GND //Pin3
//#define _Pin4 VDD //Pin4
#define _Pin5 0xC2 //Pin5
#define _Pin6 0xC1 //Pin6
#define _Pin7 0xA7 //Pin7
#define _Pin8 0xA5 //Pin8
#define _Pin9 0xC0 //Pin9
#define _Pin10 0xA4 //Pin10
#define _Pin11 0xA3 //Pin11
#define _Pin12 0xA2 //Pin12
#define _Pin13 0xA1 //Pin13
#define _Pin14 0xA0 //Pin14
#define _Pin15 0xB7 //Pin15
#define _Pin16 0xB6 //Pin16
#define _Pin17 0xB5 //Pin17
#define _Pin18 0xB4 //Pin18
#define _Pin19 0xB3 //Pin19
//#define _Pin20 PPG //Pin20
#endif
/**************************************************************************
* IO口定义
**************************************************************************/
#ifndef _pIGBT_SUP
ExteralPin(PORTC,7,Pin_Igbt_Sup);
#elif (_pIGBT_SUP>>4)==0xA
ExteralPin(PORTA,(_pIGBT_SUP&0xF),Pin_Igbt_Sup);
#elif (_pIGBT_SUP>>4)==0xB
ExteralPin(PORTB,(_pIGBT_SUP&0xF),Pin_Igbt_Sup);
#elif (_pIGBT_SUP>>4)==0xC
ExteralPin(PORTC,(_pIGBT_SUP&0xF),Pin_Igbt_Sup);
#else
ExteralPin(PORTC,7,Pin_Igbt_Sup);
#endif
//-------------------------------------------------------------------------
#ifndef _pIGBT_OVUV
ExteralPin(PORTC,7,Pin_Igbt_OVUV);
#elif (_pIGBT_OVUV>>4)==0xA
ExteralPin(PORTA,(_pIGBT_OVUV&0xF),Pin_Igbt_OVUV);
#elif (_pIGBT_OVUV>>4)==0xB
ExteralPin(PORTB,(_pIGBT_OVUV&0xF),Pin_Igbt_OVUV);
#elif (_pIGBT_OVUV>>4)==0xC
ExteralPin(PORTC,(_pIGBT_OVUV&0xF),Pin_Igbt_OVUV);
#else
ExteralPin(PORTC,7,Pin_Igbt_OVUV);
#endif
//-------------------------------------------------------------------------
#ifndef _pBUZZ
ExteralPin(PORTC,7,Pin_Buzz);
#elif (_pBUZZ>>4)==0xA
ExteralPin(PORTA,(_pBUZZ&0xF),Pin_Buzz);
#elif (_pBUZZ>>4)==0xB
ExteralPin(PORTB,(_pBUZZ&0xF),Pin_Buzz);
#elif (_pBUZZ>>4)==0xC
ExteralPin(PORTC,(_pBUZZ&0xF),Pin_Buzz);
#else
ExteralPin(PORTC,7,Pin_Buzz);
#endif
//-------------------------------------------------------------------------
#ifndef _pFAN
ExteralPin(PORTC,7,Pin_Fan);
#elif (_pFAN>>4)==0xA
ExteralPin(PORTA,(_pFAN&0xF),Pin_Fan);
#elif (_pFAN>>4)==0xB
ExteralPin(PORTB,(_pFAN&0xF),Pin_Fan);
#elif (_pFAN>>4)==0xC
ExteralPin(PORTC,(_pFAN&0xF),Pin_Fan);
#else
ExteralPin(PORTC,7,Pin_Fan);
#endif
//-------------------------------------------------------------------------
#ifndef _pCOMM_IN
ExteralPin(PORTC,7,Pin_CommIn);
#elif (_pCOMM_IN>>4)==0xA
ExteralPin(PORTA,(_pCOMM_IN&0xF),Pin_CommIn);
#elif (_pCOMM_IN>>4)==0xB
ExteralPin(PORTB,(_pCOMM_IN&0xF),Pin_CommIn);
#elif (_pCOMM_IN>>4)==0xC
ExteralPin(PORTC,(_pCOMM_IN&0xF),Pin_CommIn);
#else
ExteralPin(PORTC,7,Pin_CommIn);
#endif
//-------------------------------------------------------------------------
#ifndef _pCOMM_OUT
ExteralPin(PORTC,7,Pin_CommOut);
#elif (_pCOMM_OUT>>4)==0xA
ExteralPin(PORTA,(_pCOMM_OUT&0xF),Pin_CommOut);
#elif (_pCOMM_OUT>>4)==0xB
ExteralPin(PORTB,(_pCOMM_OUT&0xF),Pin_CommOut);
#elif (_pCOMM_OUT>>4)==0xC
ExteralPin(PORTC,(_pCOMM_OUT&0xF),Pin_CommOut);
#else
ExteralPin(PORTC,7,Pin_CommOut);
#endif
//-------------------------------------------------------------------------
#ifndef _pSDA
ExteralPin(PORTC,7,Pin_SDA);
ExteralPin(TRISC,7,Io_SDA);
#elif (_pSDA>>4)==0xA
ExteralPin(PORTA,(_pSDA&0xF),Pin_SDA);
ExteralPin(TRISA,(_pSDA&0xF),Io_SDA);
#elif (_pSDA>>4)==0xB
ExteralPin(PORTB,(_pSDA&0xF),Pin_SDA);
ExteralPin(TRISB,(_pSDA&0xF),Io_SDA);
#elif (_pSDA>>4)==0xC
ExteralPin(PORTC,(_pSDA&0xF),Pin_SDA);
ExteralPin(TRISC,(_pSDA&0xF),Io_SDA);
#else
ExteralPin(PORTC,7,Pin_SDA);
ExteralPin(TRISC,7,Io_SDA);
#endif
//-------------------------------------------------------------------------
#ifndef _pSCK
ExteralPin(PORTC,7,Pin_SCK);
#elif (_pSCK>>4)==0xA
ExteralPin(PORTA,(_pSCK&0xF),Pin_SCK);
#elif (_pSCK>>4)==0xB
ExteralPin(PORTB,(_pSCK&0xF),Pin_SCK);
#elif (_pSCK>>4)==0xC
ExteralPin(PORTC,(_pSCK&0xF),Pin_SCK);
#else
ExteralPin(PORTC,7,Pin_SCK);
#endif
//-------------------------------------------------------------------------
#ifndef _pSTB
ExteralPin(PORTC,7,Pin_STB);
#elif (_pSTB>>4)==0xA
ExteralPin(PORTA,(_pSTB&0xF),Pin_STB);
#elif (_pSTB>>4)==0xB
ExteralPin(PORTB,(_pSTB&0xF),Pin_STB);
#elif (_pSTB>>4)==0xC
ExteralPin(PORTC,(_pSTB&0xF),Pin_STB);
#else
ExteralPin(PORTC,7,Pin_STB);
#endif
/**************************************************************************
* PWM通道定义
**************************************************************************/
#if _pBUZZ==0xA0
#define C_PwmChannel_Buzz 0x0A
#elif _pBUZZ==0xB5
#define C_PwmChannel_Buzz 0x0B
#elif _pBUZZ==0xB2
#define C_PwmChannel_Buzz 0x0C
#elif _pBUZZ==0xC2
#define C_PwmChannel_Buzz 0x0D
#elif _pBUZZ==0xB7
#define C_PwmChannel_Buzz 0x1A
#elif _pBUZZ==0xB4
#define C_PwmChannel_Buzz 0x1B
#elif _pBUZZ==0xB1
#define C_PwmChannel_Buzz 0x1C
#elif _pBUZZ==0xC1
#define C_PwmChannel_Buzz 0x1D
#elif _pBUZZ==0xB6
#define C_PwmChannel_Buzz 0x2A
#elif _pBUZZ==0xB3
#define C_PwmChannel_Buzz 0x2B
#elif _pBUZZ==0xB0
#define C_PwmChannel_Buzz 0x2C
#elif _pBUZZ==0xC0
#define C_PwmChannel_Buzz 0x2D
#else
#define C_PwmChannel_Buzz 0xFF
#endif
//-------------------------------------------------------------------------
#if !_FAN_OUT_PWM_
#define C_PwmChannel_Fan 0xFF
#elif _pFAN==0xA0
#define C_PwmChannel_Fan 0x0A
#elif _pFAN==0xB5
#define C_PwmChannel_Fan 0x0B
#elif _pFAN==0xB2
#define C_PwmChannel_Fan 0x0C
#elif _pFAN==0xC2
#define C_PwmChannel_Fan 0x0D
#elif _pFAN==0xB7
#define C_PwmChannel_Fan 0x1A
#elif _pFAN==0xB4
#define C_PwmChannel_Fan 0x1B
#elif _pFAN==0xB1
#define C_PwmChannel_Fan 0x1C
#elif _pFAN==0xC1
#define C_PwmChannel_Fan 0x1D
#elif _pFAN==0xB6
#define C_PwmChannel_Fan 0x2A
#elif _pFAN==0xB3
#define C_PwmChannel_Fan 0x2B
#elif _pFAN==0xB0
#define C_PwmChannel_Fan 0x2C
#elif _pFAN==0xC0
#define C_PwmChannel_Fan 0x2D
#else
#define C_PwmChannel_Fan 0xFF
#endif
/**************************************************************************
* 非固定ADC通道定义
**************************************************************************/
#if _pAD_VOL==0xA0
#define C_AdcChannel_Vol 0
#elif _pAD_VOL==0xA1
#define C_AdcChannel_Vol 1
#elif _pAD_VOL==0xA2
#define C_AdcChannel_Vol 2
#elif _pAD_VOL==0xA3
#define C_AdcChannel_Vol 3
#elif _pAD_VOL==0xA4
#define C_AdcChannel_Vol 4
#elif _pAD_VOL==0xA5
#define C_AdcChannel_Vol 5
#elif _pAD_VOL==0xA6
#define C_AdcChannel_Vol 6
#elif _pAD_VOL==0xA7
#define C_AdcChannel_Vol 7
#elif _pAD_VOL==0xB0
#define C_AdcChannel_Vol 8
#elif _pAD_VOL==0xB1
#define C_AdcChannel_Vol 9
#elif _pAD_VOL==0xB2
#define C_AdcChannel_Vol 10
#elif _pAD_VOL==0xB3
#define C_AdcChannel_Vol 11
#elif _pAD_VOL==0xB4
#define C_AdcChannel_Vol 12
#elif _pAD_VOL==0xB5
#define C_AdcChannel_Vol 13
#elif _pAD_VOL==0xB6
#define C_AdcChannel_Vol 14
#elif _pAD_VOL==0xB7
#define C_AdcChannel_Vol 15
#elif _pAD_VOL==0xC0
#define C_AdcChannel_Vol 16
#elif _pAD_VOL==0xC1
#define C_AdcChannel_Vol 17
#elif _pAD_VOL==0xC2
#define C_AdcChannel_Vol 18
#else
#define C_AdcChannel_Vol C_AdcChannel_VRef
#endif
//-------------------------------------------------------------------------
#ifndef _pAD_IGBT
#define C_AdcChannel_Igbt C_AdcChannel_VRef
#elif _pAD_IGBT==0xA0
#define C_AdcChannel_Igbt 0
#elif _pAD_IGBT==0xA1
#define C_AdcChannel_Igbt 1
#elif _pAD_IGBT==0xA2
#define C_AdcChannel_Igbt 2
#elif _pAD_IGBT==0xA3
#define C_AdcChannel_Igbt 3
#elif _pAD_IGBT==0xA4
#define C_AdcChannel_Igbt 4
#elif _pAD_IGBT==0xA5
#define C_AdcChannel_Igbt 5
#elif _pAD_IGBT==0xA6
#define C_AdcChannel_Igbt 6
#elif _pAD_IGBT==0xA7
#define C_AdcChannel_Igbt 7
#elif _pAD_IGBT==0xB0
#define C_AdcChannel_Igbt 8
#elif _pAD_IGBT==0xB1
#define C_AdcChannel_Igbt 9
#elif _pAD_IGBT==0xB2
#define C_AdcChannel_Igbt 10
#elif _pAD_IGBT==0xB3
#define C_AdcChannel_Igbt 11
#elif _pAD_IGBT==0xB4
#define C_AdcChannel_Igbt 12
#elif _pAD_IGBT==0xB5
#define C_AdcChannel_Igbt 13
#elif _pAD_IGBT==0xB6
#define C_AdcChannel_Igbt 14
#elif _pAD_IGBT==0xB7
#define C_AdcChannel_Igbt 15
#elif _pAD_IGBT==0xC0
#define C_AdcChannel_Igbt 16
#elif _pAD_IGBT==0xC1
#define C_AdcChannel_Igbt 17
#elif _pAD_IGBT==0xC2
#define C_AdcChannel_Igbt 18
#else
#define C_AdcChannel_Igbt C_AdcChannel_VRef
#endif
//-------------------------------------------------------------------------
#ifndef _pAD_PAN
#define C_AdcChannel_Pan C_AdcChannel_VRef
#elif _pAD_PAN==0xA0
#define C_AdcChannel_Pan 0
#elif _pAD_PAN==0xA1
#define C_AdcChannel_Pan 1
#elif _pAD_PAN==0xA2
#define C_AdcChannel_Pan 2
#elif _pAD_PAN==0xA3
#define C_AdcChannel_Pan 3
#elif _pAD_PAN==0xA4
#define C_AdcChannel_Pan 4
#elif _pAD_PAN==0xA5
#define C_AdcChannel_Pan 5
#elif _pAD_PAN==0xA6
#define C_AdcChannel_Pan 6
#elif _pAD_PAN==0xA7
#define C_AdcChannel_Pan 7
#elif _pAD_PAN==0xB0
#define C_AdcChannel_Pan 8
#elif _pAD_PAN==0xB1
#define C_AdcChannel_Pan 9
#elif _pAD_PAN==0xB2
#define C_AdcChannel_Pan 10
#elif _pAD_PAN==0xB3
#define C_AdcChannel_Pan 11
#elif _pAD_PAN==0xB4
#define C_AdcChannel_Pan 12
#elif _pAD_PAN==0xB5
#define C_AdcChannel_Pan 13
#elif _pAD_PAN==0xB6
#define C_AdcChannel_Pan 14
#elif _pAD_PAN==0xB7
#define C_AdcChannel_Pan 15
#elif _pAD_PAN==0xC0
#define C_AdcChannel_Pan 16
#elif _pAD_PAN==0xC1
#define C_AdcChannel_Pan 17
#elif _pAD_PAN==0xC2
#define C_AdcChannel_Pan 18
#else
#define C_AdcChannel_Pan C_AdcChannel_VRef
#endif
//-------------------------------------------------------------------------
#ifndef _pAD_TOP
#define C_AdcChannel_Top C_AdcChannel_VRef
#elif _pAD_TOP==0xA0
#define C_AdcChannel_Top 0
#elif _pAD_TOP==0xA1
#define C_AdcChannel_Top 1
#elif _pAD_TOP==0xA2
#define C_AdcChannel_Top 2
#elif _pAD_TOP==0xA3
#define C_AdcChannel_Top 3
#elif _pAD_TOP==0xA4
#define C_AdcChannel_Top 4
#elif _pAD_TOP==0xA5
#define C_AdcChannel_Top 5
#elif _pAD_TOP==0xA6
#define C_AdcChannel_Top 6
#elif _pAD_TOP==0xA7
#define C_AdcChannel_Top 7
#elif _pAD_TOP==0xB0
#define C_AdcChannel_Top 8
#elif _pAD_TOP==0xB1
#define C_AdcChannel_Top 9
#elif _pAD_TOP==0xB2
#define C_AdcChannel_Top 10
#elif _pAD_TOP==0xB3
#define C_AdcChannel_Top 11
#elif _pAD_TOP==0xB4
#define C_AdcChannel_Top 12
#elif _pAD_TOP==0xB5
#define C_AdcChannel_Top 13
#elif _pAD_TOP==0xB6
#define C_AdcChannel_Top 14
#elif _pAD_TOP==0xB7
#define C_AdcChannel_Top 15
#elif _pAD_TOP==0xC0
#define C_AdcChannel_Top 16
#elif _pAD_TOP==0xC1
#define C_AdcChannel_Top 17
#elif _pAD_TOP==0xC2
#define C_AdcChannel_Top 18
#else
#define C_AdcChannel_Top C_AdcChannel_VRef
#endif
/**************************************************************************
* 固定ADC通道定义
**************************************************************************/
#define C_AdcChannel_Gnd 29 //GND-ADC通道
#define C_AdcChannel_Vdd 30 //VDD-ADC通道
#define C_AdcChannel_VRef 31 //内部参考电压(1.2V)ADC通道
/**************************************************************************
* AD检测设置(00xxxx01)
**************************************************************************/
#define C_AdcSet_Gnd 0x01 | (C_AdcChannel_Gnd<<2) //GND
#define C_AdcSet_Vdd 0x01 | (C_AdcChannel_Vdd<<2) //VDD
#define C_AdcSet_VRef 0x01 | (C_AdcChannel_VRef<<2) //内部参考电压
#define C_AdcSet_Curr 0x01 | (C_AdcChannel_Curr<<2) //工作电流
#define C_AdcSet_Vol 0x01 | (C_AdcChannel_Vol<<2) //市电电压
#define C_AdcSet_Igbt 0x01 | (C_AdcChannel_Igbt<<2) //IGBT-NTC
#define C_AdcSet_Pan 0x01 | (C_AdcChannel_Pan<<2) //锅底NTC
#define C_AdcSet_Top 0x01 | (C_AdcChannel_Top<<2) //顶部NTC
/**************************************************************************
--------------------------------- 函数声明 --------------------------------
**************************************************************************/
unsigned char SetWPUX_CommHave(unsigned char x);
unsigned char SetWPUX_CommNo(unsigned char x);
unsigned char SetTRISX_CommHave(unsigned char x);
unsigned char SetTRISX_CommNo(unsigned char x);
/**************************************************************************
**************************************************************************/
#endif