/********************************************************************************************* * Filename : p33.h * Description : * Author : Bingquan * Email : bingquan_cai@zh-jieli.com * Last modifiled : 2018-06-04 15:47 * Copyright:(c)JIELI 2011-2017 @ , All Rights Reserved. *********************************************************************************************/ #ifndef _P33_HW_H_ #define _P33_HW_H_ #include "typedef.h" #define p33_cs_h(x) do{local_irq_disable();\ if(x&BIT(15)){JL_P33->SPI_CON |= BIT(0)|BIT(8);}\ else{JL_P33->SPI_CON &= ~BIT(8);JL_P33->SPI_CON |= BIT(0);}}while(0) #define p33_cs_l do{JL_P33->SPI_CON &= ~(BIT(0)|BIT(8));local_irq_enable();}while(0) #define P33_OR 0b001 #define P33_AND 0b010 #define P33_XOR 0b011 //===============================================================================// // // // //===============================================================================// //............. 0x0000 - 0x000f............ for analog control #define P3_ANA_CON0 0x00 #define P3_ANA_CON1 0x01 #define P3_ANA_CON2 0x02 #define P3_ANA_CON3 0x03 #define P3_ANA_CON4 0x04 #define P3_ANA_CON5 0x05 #define P3_ANA_CON6 0x06 #define P3_ANA_CON7 0x07 #define P3_ANA_CON8 0x08 #define P3_ANA_CON9 0x09 #define P3_L5V_CON0 0x0c #define P3_L5V_CON1 0x0d #define P3_SDPG_CON 0x0e #define P3_FSPG_CON 0x0f //............. 0x0010 - 0x001f............ for analog others #define P3_PLVD_CON 0x10 #define P3_VLVD_CON 0x11 #define P3_RST_SRC 0x12 #define P3_LRC_CON0 0x13 #define P3_LRC_CON1 0x14 #define P3_RST_CON0 0x15 #define P3_ANA_KEEP 0x16 #define P3_VLD_KEEP 0x17 #define P3_CHG_WKUP 0x18 #define P3_CHG_READ 0x19 #define P3_CHG_CON0 0x1a #define P3_CHG_CON1 0x1b #define P3_CHG_CON2 0x1c #define P3_CHG_CON3 0x1d //............. 0x0020 - 0x002f............ for reserved //............. 0x0030 - 0x003f............ for PMU manager #define P3_PMU_CON0 0x30 #define P3_PMU_CON1 0x31 #define P3_PMU_CON2 0x32 #define P3_PMU_CON3 0x33 #define P3_PMU_CON4 0x34 #define P3_PMU_CON5 0x35 #define P3_LP_PRP0 0x36 #define P3_LP_PRP1 0x37 #define P3_LP_STB0_STB1 0x38 #define P3_LP_STB2_STB3 0x39 #define P3_LP_STB4_STB5 0x3a #define P3_LP_STB6 0x3b //............. 0x0040 - 0x005f............ for PMU timer #define P3_LP_RSC00 0x40 #define P3_LP_RSC01 0x41 #define P3_LP_RSC02 0x42 #define P3_LP_RSC03 0x43 #define P3_LP_PRD00 0x44 #define P3_LP_PRD01 0x45 #define P3_LP_PRD02 0x46 #define P3_LP_PRD03 0x47 #define P3_LP_RSC10 0x48 #define P3_LP_RSC11 0x49 #define P3_LP_RSC12 0x4a #define P3_LP_RSC13 0x4b #define P3_LP_PRD10 0x4c #define P3_LP_PRD11 0x4d #define P3_LP_PRD12 0x4e #define P3_LP_PRD13 0x4f // #define P3_LP_TMR0_CLK 0x54 #define P3_LP_TMR0_CON 0x58 #define P3_LP_TMR1_CON 0x59 //............. 0x0060 - 0x006f............ for PMU others #define P3_LP_CNTRD0 0x60 #define P3_LP_CNTRD1 0x61 #define P3_LP_CNT0 0x62 #define P3_LP_CNT1 0x63 #define P3_LP_CNT2 0x64 #define P3_LP_CNT3 0x65 //............. 0x0070 - 0x007f............ for PMU others #define P3_MSTM_RD 0x70 #define P3_IVS_RD 0x71 #define P3_IVS_SET 0x72 #define P3_IVS_CLR 0x73 #define P3_WLDO12_AUTO 0x74 #define P3_WLDO06_AUTO 0x75 //............. 0x0080 - 0x008f............ for RTC #define P3_WDT_CON 0x80 //............. 0x0090 - 0x009f............ for PORT and clock reset power control #define P3_WKUP_EN 0x90 #define P3_WKUP_EDGE 0x91 #define P3_WKUP_CPND 0x92 #define P3_WKUP_PND 0x93 #define P3_PINR_CON 0x94 #define P3_WKUP_FLEN 0x95 #define P3_PCNT_CON 0x96 #define P3_PCNT_VLUE 0x97 //............. 0x00a0 - 0x00af............ #define P3_PR_PWR 0xa0 #define P3_LDO5V_CON 0xa1 #define P3_LVCMP_CON 0xa2 #define P3_L5DEM_CON 0xa3 #define P3_L5DEM_FLT 0xa4 #define P3_OSL_CON 0xa5 #define P3_CLK_CON0 0xa6 #define P3_WKUP_SRC 0xa8 #define P3_WKUP_SUB 0xa9 #define P3_PORT_FLT 0xaa #define P3_LVCMP 0xac #define P3_ANA_LAT 0xaf //............. 0x00b0 - 0x00bf............ for EFUSE #define P3_EFUSE_CON0 0xb0 #define P3_EFUSE_CON1 0xb1 #define P3_EFUSE_RDAT 0xb2 //............. 0x00c0 - 0x00cf............ for rtc #define P3_PORT_SEL10 0xc0 #define P3_PORT_SEL11 0xc1 #define P3_PORT_SEL12 0xc2 #define P3_PORT_SEL13 0xc3 #define P3_PORT_SEL14 0xc4 #define P3_PORT_SEL15 0xc5 #define P3_PORT_SEL16 0xc6 #define P3_PORT_SEL17 0xc7 //............. others ............ #define P3_SOFT_FLAG P3_PMU_CON2 #define P3_SOFT_FLAG1 P3_PMU_CON3 //===============================================================================// // // p33 rtcvdd // //===============================================================================// #define RTC_SFR_BEGIN 0x8000 //............. 0x0080 - 0x008f............ for RTC #define R3_ALM_CON (0x80 | RTC_SFR_BEGIN) #define R3_RTC_CON0 (0x84 | RTC_SFR_BEGIN) #define R3_RTC_CON1 (0x85 | RTC_SFR_BEGIN) #define R3_RTC_DAT0 (0x86 | RTC_SFR_BEGIN) #define R3_RTC_DAT1 (0x87 | RTC_SFR_BEGIN) #define R3_RTC_DAT2 (0x88 | RTC_SFR_BEGIN) #define R3_RTC_DAT3 (0x89 | RTC_SFR_BEGIN) #define R3_RTC_DAT4 (0x8a | RTC_SFR_BEGIN) //............. 0x0090 - 0x009f............ for PORT control #define R3_WKUP_EN (0x90 | RTC_SFR_BEGIN) #define R3_WKUP_EDGE (0x91 | RTC_SFR_BEGIN) #define R3_WKUP_CPND (0x92 | RTC_SFR_BEGIN) #define R3_WKUP_PND (0x93 | RTC_SFR_BEGIN) #define R3_WKUP_FLEN (0x94 | RTC_SFR_BEGIN) #define R3_PORT_FLT (0x95 | RTC_SFR_BEGIN) #define R3_PR_IN (0x98 | RTC_SFR_BEGIN) #define R3_PR_OUT (0x99 | RTC_SFR_BEGIN) #define R3_PR_DIR (0x9a | RTC_SFR_BEGIN) #define R3_PR_DIE (0x9b | RTC_SFR_BEGIN) #define R3_PR_PU (0x9c | RTC_SFR_BEGIN) #define R3_PR_PD (0x9d | RTC_SFR_BEGIN) #define R3_PR_HD (0x9e | RTC_SFR_BEGIN) //............. 0x00a0 - 0x00af............ for system #define R3_TIME_CON (0xa0 | RTC_SFR_BEGIN) #define R3_TIME_CPND (0xa1 | RTC_SFR_BEGIN) #define R3_TIME_PND (0xa2 | RTC_SFR_BEGIN) #define R3_ADC_CON (0xa4 | RTC_SFR_BEGIN) #define R3_OSL_CON (0xa5 | RTC_SFR_BEGIN) #define R3_WKUP_SRC (0xa8 | RTC_SFR_BEGIN) #define R3_RST_SRC (0xa9 | RTC_SFR_BEGIN) #define R3_RST_CON (0xab | RTC_SFR_BEGIN) #define R3_CLK_CON (0xac | RTC_SFR_BEGIN) //others //#define P3_SOFT_FLAT P3_PMU_CON2 //Soft flag //[0] : 0-None // : 1-BT_OSC init ensable // //[1] : 0-None // : 1-RTC_OSC init ensable // //[2:3] : 0-none // : 1-boot SPI PORTD_A // : 2-boot SPI PORTD_B // : 3-boot SPI PORTD_A & B // //[4] : 0-none // : 1-switch to OSC_CLK // // enum { SOFT_FLAG_BT_OSC_ENABLE = BIT(0), SOFT_FLAG_RTC_OSC_ENABLE = BIT(1), SOFT_FLAG_BOOT_SPI_PORTD_A = BIT(2), SOFT_FLAG_BOOT_SPI_PORTD_B = BIT(3), SOFT_FLAG_BOOT_SPI_ALL = BIT(2) | BIT(3), SOFT_FLAG_SWITCH_OSC_CLK = BIT(4), SOFT_FLAG_BOOT_OTP = BIT(5), }; //#define P3_SOFT_FLAT1 P3_PMU_CON3 //Soft flag1 //[0] : 0-open wdt // : 1-none // //[1] : 0-usb None // : 1-usb dp close pd // //[2] : 0-None // : 1-usb dp open pu // //[3] : 0-usb None // : 1-usb dm close pd // //[4] : 0-None // : 1-usb dm open pu //[5] : 0-None // : 1-enter power off flow // //[6] : 0-None // : 1- btosc fast boot en // #define SOFT_FLAG_WDT_NONE BIT(0) #define SOFT_FLAG_USB_DP_PD_DISABLE BIT(1) #define SOFT_FLAG_USB_DP_PU_ENABLE BIT(2) #define SOFT_FLAG_USB_DM_PD_DISABLE BIT(3) #define SOFT_FLAG_USB_DM_PU_ENABLE BIT(4) #define SOFT_FLAG_POWEROFF_ENABLE BIT(5) #define SOFT_FLAG_BTOSC_FT_ENABLE BIT(6) //ROM u8 p33_buf(u8 buf); void p33_xor_1byte(u16 addr, u8 data0); void p33_and_1byte(u16 addr, u8 data0); void p33_or_1byte(u16 addr, u8 data0); void p33_tx_1byte(u16 addr, u8 data0); u8 p33_rx_1byte(u16 addr); void P33_CON_SET(u16 addr, u8 start, u8 len, u8 data); void SET_WVDD_LEV(u8 lev); void RESET_MASK_SW(u8 sw); void NV_RAM_POWER_GATE(u8 sw); void close_32K(u8 keep_osci_flag); _INLINE_ static u8 P33_CON_GET(u8 addr) { u8 reg = 0; reg = p33_rx_1byte(addr); return reg; } _INLINE_ static void P33_TX_NBIT(u16 addr, u8 data0, u8 en) { if (en) { p33_or_1byte(addr, data0); } else { p33_and_1byte(addr, ~data0); } } _INLINE_ static void P33_CON_DEBUG(void) { u8 i = 0; for (i = 0; i < P3_VLD_KEEP + 1; i++) { // printf("--%x : %x--\n", i, P33_CON_GET(i)); } } /* *-------------------P3_ANA_CON0 */ #define VDD13TO12_SYS_EN(en) P33_TX_NBIT(P3_ANA_CON0, BIT(0), en) #define LDO13_EN(en) P33_TX_NBIT(P3_ANA_CON0, BIT(2), en) //#define DCDC13_EN(en) P33_TX_NBIT(P3_ANA_CON0, BIT(3), en) #define PW_GATE_EN(en) P33_TX_NBIT(P3_ANA_CON0, BIT(5), en) #define RC_250k_EN(en) P33_TX_NBIT(P3_ANA_CON0, BIT(7), en) /*******************************************************************/ /* *-------------------P3_ANA_CON1 */ #define BTDCDC_V17_PDEN(en) P33_TX_NBIT(P3_ANA_CON1, BIT(0), en) #define BTDCDC_RAMP_EN(en) P33_TX_NBIT(P3_ANA_CON1, BIT(1), en) #define BTDCDC_PFM_MODE(en) P33_TX_NBIT(P3_ANA_CON1, BIT(2), en) #define WLDO06_EN(en) P33_TX_NBIT(P3_ANA_CON1, BIT(3), en) #define VDC13_LOAD_EN(en) P33_TX_NBIT(P3_ANA_CON1, BIT(4), en) #define VDC13_DESHOT_EN(en) P33_TX_NBIT(P3_ANA_CON1, BIT(5), en) #define SYSVDD_RES_SHORT_EN(en) P33_TX_NBIT(P3_ANA_CON1, BIT(6), en) #define SYSVDD_BYPASS_EN(en) P33_TX_NBIT(P3_ANA_CON1, BIT(7), en) /*******************************************************************/ /* *-------------------P3_ANA_CON2 */ #define VCM_DET_EN(en) P33_TX_NBIT(P3_ANA_CON2, BIT(3), en) #define D2SH_EN_SW(en) P33_TX_NBIT(P3_ANA_CON2, BIT(4), en) #define FAST_UP_EN(en) P33_TX_NBIT(P3_ANA_CON2, BIT(5), en) #define VDDOK_DIS(dis) P33_TX_NBIT(P3_ANA_CON2, BIT(6), dis) #define SWVLD_AUTO_EN(en) P33_TX_NBIT(P3_ANA_CON2, BIT(7), en) /*******************************************************************/ /* *-------------------P3_ANA_CON3 */ #define FORCE_BYPASS_EN(en) P33_TX_NBIT(P3_ANA_CON3, BIT(0), en) #define IVBATL_EN(en) P33_TX_NBIT(P3_ANA_CON3, BIT(1), en) /*******************************************************************/ /* *-------------------P3_ANA_CON4 */ #define PMU_DET_EN(en) P33_TX_NBIT(P3_ANA_CON4, BIT(0), en) #define ADC_CHANNEL_SEL(ch) P33_CON_SET(P3_ANA_CON4, 1, 3, ch) //Macro for ADC_CHANNEL_SEL enum { ADC_CHANNEL_SEL_VBG = 0, ADC_CHANNEL_SEL_VDC13, ADC_CHANNEL_SEL_SYSVDD, ADC_CHANNEL_SEL_VTEMP, ADC_CHANNEL_SEL_PROGF, ADC_CHANNEL_SEL_VBAT1_4, ADC_CHANNEL_SEL_LDO5V1_4, ADC_CHANNEL_SEL_WVDD, }; /*******************************************************************/ /* *-------------------P3_ANA_CON5 */ #define VDDIOM_VOL_SEL(lev) P33_CON_SET(P3_ANA_CON5, 0, 3, lev) #define GET_VDDIOM_VOL() (P33_CON_GET(P3_ANA_CON5) & 0xf) #define VDDIOW_VOL_SEL(lev) P33_CON_SET(P3_ANA_CON5, 4, 2, lev) #define GET_VDDIOW_VOL() (P33_CON_GET(P3_ANA_CON5)>>4 & 0x3) #define VDDIO_HD_SEL(cur) P33_CON_SET(P3_ANA_CON5, 6, 2, cur) /*******************************************************************/ /* *-------------------P3_ANA_CON6 */ #define VDC13_VOL_SEL(sel) P33_CON_SET(P3_ANA_CON6, 0, 3, sel) //Macro for VDC13_VOL_SEL enum { VDC13_VOL_SEL_105V = 0, VDC13_VOL_SEL_110V, VDC13_VOL_SEL_115V, VDC13_VOL_SEL_120V, VDC13_VOL_SEL_125V, VDC13_VOL_SEL_130V, VDC13_VOL_SEL_135V, VDC13_VOL_SEL_140V, }; #define GET_VD13_VOL_SEL() (P33_CON_GET(P3_ANA_CON6) & 0x7) #define GET_VD13_HD_SEL() (P33_CON_GET(P3_ANA_CON6) & 0x7) #define VD13_HD_SEL(sel) P33_CON_SET(P3_ANA_CON6, 0, 2, sel) /*******************************************************************/ /* *-------------------P3_ANA_CON7 */ #define BTDCDC_BIAS_HD_SEL(sel) P33_CON_SET(P3_ANA_CON7, 0, 2, sel) //Macro for BTDCDC_BIAS_HD_SEL enum { BTDCDC_BIAS_HD_SEL_1uA = 0, BTDCDC_BIAS_HD_SEL_1P5uA, BTDCDC_BIAS_HD_SEL_2uA, BTDCDC_BIAS_HD_SEL_2P5uA, }; #define BTDCDC_DUTY_SEL(sel) P33_CON_SET(P3_ANA_CON7, 2, 2, sel) #define BTDCDC_OSC_SEL(sel) P33_CON_SET(P3_ANA_CON7, 4, 2, sel) //Macro for BTDCDC_OSC_SEL enum { BTDCDC_OSC_SEL0537MHz = 0, BTDCDC_OSC_SEL0789MHz, BTDCDC_OSC_SEL1030MHz, BTDCDC_OSC_SEL1270MHz, BTDCDC_OSC_SEL1720MHz, BTDCDC_OSC_SEL1940MHz, BTDCDC_OSC_SEL2150MHz, BTDCDC_OSC_SEL2360MHz, }; /*******************************************************************/ /* *-------------------P3_ANA_CON9 */ #define SYSVDD_VOL_SEL(sel) P33_CON_SET(P3_ANA_CON9, 0, 4, sel) //Macro for SYSVDD_VOL_SEL enum { SYSVDD_VOL_SEL_084V = 0, SYSVDD_VOL_SEL_087V, SYSVDD_VOL_SEL_090V, SYSVDD_VOL_SEL_093V, SYSVDD_VOL_SEL_096V, SYSVDD_VOL_SEL_099V, SYSVDD_VOL_SEL_102V, SYSVDD_VOL_SEL_105V, SYSVDD_VOL_SEL_108V, SYSVDD_VOL_SEL_111V, SYSVDD_VOL_SEL_114V, SYSVDD_VOL_SEL_117V, SYSVDD_VOL_SEL_120V, SYSVDD_VOL_SEL_123V, SYSVDD_VOL_SEL_126V, SYSVDD_VOL_SEL_129V, }; #define GET_SYSVDD_VOL_SEL() (P33_CON_GET(P3_ANA_CON9) & 0xf) #define SYSVDD_VOL_HD_SEL(sel) P33_CON_SET(P3_ANA_CON9, 4, 2, sel) /*******************************************************************/ /* *-------------------P3_VLVD_CON */ #define P33_VLVD_EN(en) P33_TX_NBIT(P3_VLVD_CON, BIT(0), en) #define P33_VLVD_PS(en) P33_TX_NBIT(P3_VLVD_CON, BIT(1), en) #define P33_VLVD_OE(en) P33_TX_NBIT(P3_VLVD_CON, BIT(2), en) #define VLVD_SEL(lev) P33_CON_SET(P3_VLVD_CON, 3, 3, lev) //Macro for VLVD_SEL enum { VLVD_SEL_19V = 0, VLVD_SEL_20V, VLVD_SEL_21V, VLVD_SEL_22V, VLVD_SEL_23V, VLVD_SEL_24V, VLVD_SEL_25V, VLVD_SEL_26V, }; #define VLVD_PND_CLR(clr) P33_TX_NBIT(P3_VLVD_CON, BIT(6), clr) #define VLVD_PND(pend) P33_TX_NBIT(P3_VLVD_CON, BIT(7), pend) /*******************************************************************/ /* *-------------------P3_RST_CON0 */ #define VLVD_RST_EN(en) P33_TX_NBIT(P3_RST_SRC, BIT(2), en) #define VLVD_WKUP_EN(en) P33_TX_NBIT(P3_RST_SRC, BIT(3), en) /*******************************************************************/ /* *-------------------P3_LRC_CON0 */ #define RC32K_EN(en) P33_TX_NBIT(P3_LRC_CON0, BIT(0), en) #define RC32K_RN_TRIM(en) P33_TX_NBIT(P3_LRC_CON0, BIT(1), en) #define RC32K_RPPS_SEL(sel) P33_CON_SET(P3_LRC_CON0, 4, 2, sel) #define RC32K_RNPS_SEL(sel) P33_TX_NBIT(P3_LRC_CON0, BIT(7), (sel & BIT(0))); \ P33_CON_SET(P3_LRC_CON1, 0, 2, (sel>>1)) /*******************************************************************/ /* *-------------------P3_LRC_CON1 */ //#define RC32K_PNPS_SEL(sel) P33_CON_SET(P3_LRC_CON1, 0, 2, sel) #define RC32K_CAP_SEL(sel) P33_CON_SET(P3_LRC_CON1, 2, 3, sel) #define RC32K_LDO_SEL(sel) P33_CON_SET(P3_LRC_CON1, 5, 2, sel) /*******************************************************************/ /* *-------------------P3_ANA_KEEP */ #define PDIO_KEEP(a) P33_TX_NBIT(P3_ANA_KEEP, BIT(6), a) /*******************************************************************/ /* *-------------------P3_VLD_KEEP */ #define CLOCK_KEEP(a) P33_TX_NBIT(P3_VLD_KEEP, BIT(0), a) #define WKUP_KEEP(a) P33_TX_NBIT(P3_VLD_KEEP, BIT(1), a) #define FLASH_KEEP(a) P33_TX_NBIT(P3_VLD_KEEP, BIT(2), a) #define PWM_LED_KEEP(a) P33_TX_NBIT(P3_VLD_KEEP, BIT(3), a) #define SYS_RST_KEEP(a) P33_TX_NBIT(P3_VLD_KEEP, BIT(4), a) #define SYS_VDD_KEEP(a) P33_TX_NBIT(P3_VLD_KEEP, BIT(5), a) #define WDT_EXPT_EN(a) P33_TX_NBIT(P3_VLD_KEEP, BIT(6), a) /*******************************************************************/ /* *-------------------P3_CLK_CON0 */ #define PWM_LED_SEL(a) P33_CON_SET(P3_CLK_CON0, 0, 2, a) #define SYSPLL_DPLL_REF(a) P33_TX_NBIT(P3_VLVD_KEEP, BIT(2), a) /*******************************************************************/ /* *-------------------P3_CHG_WKUP */ #define CHARGE_LEVEL_DETECT_EN(a) P33_CON_SET(P3_CHG_WKUP, 0, 1, a) #define CHARGE_EDGE_DETECT_EN(a) P33_CON_SET(P3_CHG_WKUP, 1, 1, a) #define CHARGE_WKUP_SOURCE_SEL(a) P33_CON_SET(P3_CHG_WKUP, 2, 2, a) #define CHARGE_WKUP_EN(a) P33_CON_SET(P3_CHG_WKUP, 4, 1, a) #define CHARGE_WKUP_EDGE_SEL(a) P33_CON_SET(P3_CHG_WKUP, 5, 1, a) #define CHARGE_WKUP_PND_CLR() P33_CON_SET(P3_CHG_WKUP, 6, 1, 1) /* *-------------------P3_CHG_READ */ #define CHARGE_FULL_FLAG_GET() ((P33_CON_GET(P3_CHG_READ) & BIT(0)) ? 1: 0 ) /* *-------------------P3_CHG_CON0 */ #define CHARGE_EN(en) P33_CON_SET(P3_CHG_CON0, 0, 1, en) #define CHGBG_EN(en) P33_CON_SET(P3_CHG_CON0, 1, 1, en) #define IS_CHARGE_EN() ((P33_CON_GET(P3_CHG_CON0) & BIT(0)) ? 1: 0 ) /* *-------------------P3_CHG_CON1 */ #define CHARGE_FULL_V_SEL(a) P33_CON_SET(P3_CHG_CON1, 0, 4, a) #define CHARGE_mA_SEL(a) P33_CON_SET(P3_CHG_CON1, 4, 4, a) /* *-------------------P3_CHG_CON2 */ #define CHARGE_FULL_mA_SEL(a) P33_CON_SET(P3_CHG_CON2, 4, 3, a) /* *-------------------P3_LDO5V_CON */ #define LDO5V_EN(a) P33_CON_SET(P3_LDO5V_CON, 0, 1, a) #define LDO5V_IS_EN() ((P33_CON_GET(P3_LDO5V_CON) & BIT(0)) ? 1: 0 ) #define LDO5V_EDGE_SEL(a) P33_CON_SET(P3_LDO5V_CON, 1, 1, a) #define LDO5V_EDGE_GET() ((P33_CON_GET(P3_LDO5V_CON) & BIT(1)) ? 1: 0 ) #define LDO5V_LEVEL_WKUP_EN(a) P33_CON_SET(P3_LDO5V_CON, 2, 1, a) #define LDO5V_EDGE_WKUP_EN(a) P33_CON_SET(P3_LDO5V_CON, 3, 1, a) #define LDO5V_EDGE_WKUP_IS_EN() ((P33_CON_GET(P3_LDO5V_CON) & BIT(3)) ? 1: 0 ) #define LDO5V_DET_GET() ((P33_CON_GET(P3_LDO5V_CON) & BIT(5)) ? 1: 0 ) #define LDO5V_PND_CLR() P33_CON_SET(P3_LDO5V_CON, 6, 1, 1) /* *-------------------P3_LVCMP_CON */ #define LVCMP_EN(a) P33_CON_SET(P3_LVCMP_CON, 0, 1, a) #define LVCMP_EDGE_SEL(a) P33_CON_SET(P3_LVCMP_CON, 1, 1, a) #define LVCMP_LEVEL_WKUP_EN(a) P33_CON_SET(P3_LVCMP_CON, 2, 1, a) #define LVCMP_EDGE_WKUP_EN(a) P33_CON_SET(P3_LVCMP_CON, 3, 1, a) #define LVCMP_CMP_SEL(a) P33_CON_SET(P3_LVCMP_CON, 4, 1, a) #define LVCMP_DET_GET() (((P33_CON_GET(P3_LVCMP_CON) & BIT(5)) ? 1: 0) ^ ((P33_CON_GET(P3_LVCMP_CON) & BIT(1)) ? 1: 0)) #define LVCMP_PND_CLR() P33_CON_SET(P3_LVCMP_CON, 6, 1, 1) /* *-------------------P3_L5DEM_CON */ #define L5DEM_EN(a) P33_CON_SET(P3_L5DEM_CON, 0, 1, a) #define L5DEM_EDGE_SEL(a) P33_CON_SET(P3_L5DEM_CON, 1, 1, a) #define L5DEM_LEVEL_WKUP_EN(a) P33_CON_SET(P3_L5DEM_CON, 2, 1, a) #define L5DEM_EDGE_WKUP_EN(a) P33_CON_SET(P3_L5DEM_CON, 3, 1, a) #define L5DEM_DET_GET() ((P33_CON_GET(P3_L5DEM_CON) & BIT(5)) ? 1: 0 ) #define L5DEM_PND_CLR() P33_CON_SET(P3_L5DEM_CON, 6, 1, 1) /* *-------------------P3_L5DEM_FLT */ #define L5DEM_FIT_SEL(a) P33_CON_SET(P3_L5DEM_FLT, 0, 3, a) /* *-------------------P3_WKUP_SUB */ #define IS_LVCMP_WKUP() ((P33_CON_GET(P3_WKUP_SUB) & BIT(0)) ? 1: 0 ) #define IS_LDO5V_WKUP() ((P33_CON_GET(P3_WKUP_SUB) & BIT(1)) ? 1: 0 ) #define IS_L5DEM_WKUP() ((P33_CON_GET(P3_WKUP_SUB) & BIT(2)) ? 1: 0 ) /* *-------------------P3_L5V_CON0 */ #define L5V_LOAD_EN(a) P33_CON_SET(P3_L5V_CON0, 0, 1, a) #define L5V_RES_DET_EN(a) P33_CON_SET(P3_L5V_CON0, 1, 1, a) #define L5V_VM_EN(a) P33_CON_SET(P3_L5V_CON0, 2, 1, a) #define L5V_IM_EN(a) P33_CON_SET(P3_L5V_CON0, 3, 1, a) #define L5V_IM_S_SEL(a) P33_CON_SET(P3_L5V_CON0, 4, 2, a) /* *-------------------P3_L5V_CON1 */ #define L5V_RES_DET_S_SEL(a) P33_CON_SET(P3_L5V_CON1, 0, 2, a) #define L5V_VM_S_SEL(a) P33_CON_SET(P3_L5V_CON1, 4, 2, a) //是否需要保持强LDO判断宏 #define IS_NEED_KEEP_POWER() (IS_CHARGE_EN() || LVCMP_DET_GET()) /*******************************************************************/ //Macro for P3_WLDO06_AUTO enum { WLDO_LEVEL_050V = 0, WLDO_LEVEL_054V, WLDO_LEVEL_058V, WLDO_LEVEL_062V, WLDO_LEVEL_066V, WLDO_LEVEL_070V, WLDO_LEVEL_085V, WLDO_LEVEL_133V, }; //===============================================================================// // // p33 rtcvdd // //===============================================================================// /* *-------------------R3_ALM_CON */ #define ALM_ALMOUT(a) P33_CON_SET(R3_ALM_CON, 7, 1, a) #define ALM_CLK_SEL(a) P33_CON_SET(R3_ALM_CON, 2, 2, a) #define ALM_ALMEN(a) P33_CON_SET(R3_ALM_CON, 0, 1, a) //Macro for CLK_SEL enum { CLK_SEL_32K = 1, CLK_SEL_12M, CLK_SEL_24M, }; /* *-------------------R3_RTC_CON0 */ #define RTC_ALM_RDEN(a) P33_CON_SET(R3_RTC_CON0, 5, 1, a) #define RTC_RTC_RDEN(a) P33_CON_SET(R3_RTC_CON0, 4, 1, a) #define RTC_ALM_WREN(a) P33_CON_SET(R3_RTC_CON0, 1, 1, a) #define RTC_RTC_WREN(a) P33_CON_SET(R3_RTC_CON0, 0, 1, a) /* *-------------------R3_OSL_CON */ #define OSL_X32XS(a) P33_CON_SET(R3_OSL_CON, 4, 2, a) #define OSL_X32TS(a) P33_CON_SET(R3_OSL_CON, 2, 1, a) #define OSL_X32OS(a) P33_CON_SET(R3_OSL_CON, 1, 1, a) #define OSL_X32ES(a) P33_CON_SET(R3_OSL_CON, 0, 1, a) /* *-------------------R3_TIME_CPND */ #define TIME_256HZ_CPND(a) P33_CON_SET(R3_TIME_CPND, 0, 1, a) #define TIME_64HZ_CPND(a) P33_CON_SET(R3_TIME_CPND, 1, 1, a) #define TIME_2HZ_CPND(a) P33_CON_SET(R3_TIME_CPND, 2, 1, a) #define TIME_1HZ_CPND(a) P33_CON_SET(R3_TIME_CPND, 3, 1, a) #endif