REG=
{
SYS_SYS_PDID=1073741824,
SYS_SYS_RSTSTS=1073741828,
SYS_SYS_IPRST0=1073741832,
SYS_SYS_IPRST1=1073741836,
SYS_SYS_IPRST2=1073741840,
SYS_SYS_BODCTL=1073741848,
SYS_SYS_PORCTL=1073741860,
SYS_SYS_GPA_MFPL=1073741872,
SYS_SYS_GPA_MFPH=1073741876,
SYS_SYS_GPB_MFPL=1073741880,
SYS_SYS_GPB_MFPH=1073741884,
SYS_SYS_GPC_MFPL=1073741888,
SYS_SYS_GPC_MFPH=1073741892,
SYS_SYS_GPD_MFPL=1073741896,
SYS_SYS_GPD_MFPH=1073741900,
SYS_SYS_GPE_MFPL=1073741904,
SYS_SYS_GPE_MFPH=1073741908,
SYS_SYS_GPF_MFPL=1073741912,
SYS_SYS_GPF_MFPH=1073741916,
SYS_SYS_GPG_MFPL=1073741920,
SYS_SYS_GPG_MFPH=1073741924,
SYS_SYS_GPH_MFPL=1073741928,
SYS_SYS_GPH_MFPH=1073741932,
SYS_SYS_LPLDOCTL=1073741944,
SYS_SYS_MODCTL=1073742016,
SYS_SYS_SRAM_BISTCTL=1073742032,
SYS_SYS_SRAM_BISTSTS=1073742036,
SYS_SYS_HIRCTRIMCTL=1073742064,
SYS_SYS_HIRCTRIMIEN=1073742068,
SYS_SYS_HIRCTRIMSTS=1073742072,
SYS_SYS_REGLCTL=1073742080,
SYS_SYS_PORDISAN=1073742316,
SCS_SYST_CTRL=3758153744,
SCS_SYST_LOAD=3758153748,
SCS_SYST_VAL=3758153752,
SCS_ICSR=3758157060,
SCS_VTOR=3758157064,
SCS_AIRCR=3758157068,
SCS_SCR=3758157072,
SCS_SHPR1=3758157080,
SCS_SHPR2=3758157084,
SCS_SHPR3=3758157088,
NVIC_NVIC_ISER0=3758153984,
NVIC_NVIC_ICER0=3758154112,
NVIC_NVIC_ISPR0=3758154240,
NVIC_NVIC_ICPR0=3758154368,
NVIC_NVIC_IABR0=3758154496,
NMI_NMIEN=1073742592,
NMI_NMISTS=1073742596,
CLK_CLK_PWRCTL=1073742336,
CLK_CLK_AHBCLK=1073742340,
CLK_CLK_APBCLK0=1073742344,
CLK_CLK_APBCLK1=1073742348,
CLK_CLK_CLKSEL0=1073742352,
CLK_CLK_CLKSEL1=1073742356,
CLK_CLK_CLKSEL2=1073742360,
CLK_CLK_CLKSEL3=1073742364,
CLK_CLK_CLKDIV0=1073742368,
CLK_CLK_CLKDIV4=1073742384,
CLK_CLK_PCLKDIV=1073742388,
CLK_CLK_PLLCTL=1073742400,
CLK_CLK_STATUS=1073742416,
CLK_CLK_CLKOCTL=1073742432,
CLK_CLK_CLKDCTL=1073742448,
CLK_CLK_CLKDSTS=1073742452,
CLK_CLK_CDUPB=1073742456,
CLK_CLK_CDLOWB=1073742460,
CLK_CLK_LDOCTL=1073742464,
CLK_CLK_HXTFSEL=1073742516,
FMC_FMC_ISPCTL=1073790976,
FMC_FMC_ISPADDR=1073790980,
FMC_FMC_ISPDAT=1073790984,
FMC_FMC_ISPCMD=1073790988,
FMC_FMC_ISPTRG=1073790992,
FMC_FMC_DFBA=1073790996,
FMC_FMC_FTCTL=1073791000,
FMC_FMC_ISPSTS=1073791040,
GPIO_PA_MODE=1073758208,
GPIO_PA_DINOFF=1073758212,
GPIO_PA_DOUT=1073758216,
GPIO_PA_DATMSK=1073758220,
GPIO_PA_PIN=1073758224,
GPIO_PA_DBEN=1073758228,
GPIO_PA_INTTYPE=1073758232,
GPIO_PA_INTEN=1073758236,
GPIO_PA_INTSRC=1073758240,
GPIO_PB_MODE=1073758272,
GPIO_PB_DINOFF=1073758276,
GPIO_PB_DOUT=1073758280,
GPIO_PB_DATMSK=1073758284,
GPIO_PB_PIN=1073758288,
GPIO_PB_DBEN=1073758292,
GPIO_PB_INTTYPE=1073758296,
GPIO_PB_INTEN=1073758300,
GPIO_PB_INTSRC=1073758304,
GPIO_PC_MODE=1073758336,
GPIO_PC_DINOFF=1073758340,
GPIO_PC_DOUT=1073758344,
GPIO_PC_DATMSK=1073758348,
GPIO_PC_PIN=1073758352,
GPIO_PC_DBEN=1073758356,
GPIO_PC_INTTYPE=1073758360,
GPIO_PC_INTEN=1073758364,
GPIO_PC_INTSRC=1073758368,
GPIO_PD_MODE=1073758400,
GPIO_PD_DINOFF=1073758404,
GPIO_PD_DOUT=1073758408,
GPIO_PD_DATMSK=1073758412,
GPIO_PD_PIN=1073758416,
GPIO_PD_DBEN=1073758420,
GPIO_PD_INTTYPE=1073758424,
GPIO_PD_INTEN=1073758428,
GPIO_PD_INTSRC=1073758432,
GPIO_PE_MODE=1073758464,
GPIO_PE_DINOFF=1073758468,
GPIO_PE_DOUT=1073758472,
GPIO_PE_DATMSK=1073758476,
GPIO_PE_PIN=1073758480,
GPIO_PE_DBEN=1073758484,
GPIO_PE_INTTYPE=1073758488,
GPIO_PE_INTEN=1073758492,
GPIO_PE_INTSRC=1073758496,
GPIO_PF_MODE=1073758528,
GPIO_PF_DINOFF=1073758532,
GPIO_PF_DOUT=1073758536,
GPIO_PF_DATMSK=1073758540,
GPIO_PF_PIN=1073758544,
GPIO_PF_DBEN=1073758548,
GPIO_PF_INTTYPE=1073758552,
GPIO_PF_INTEN=1073758556,
GPIO_PF_INTSRC=1073758560,
GPIO_PG_MODE=1073758592,
GPIO_PG_DINOFF=1073758596,
GPIO_PG_DOUT=1073758600,
GPIO_PG_DATMSK=1073758604,
GPIO_PG_PIN=1073758608,
GPIO_PG_DBEN=1073758612,
GPIO_PG_INTTYPE=1073758616,
GPIO_PG_INTEN=1073758620,
GPIO_PG_INTSRC=1073758624,
GPIO_PH_MODE=1073758656,
GPIO_PH_DINOFF=1073758660,
GPIO_PH_DOUT=1073758664,
GPIO_PH_DATMSK=1073758668,
GPIO_PH_PIN=1073758672,
GPIO_PH_DBEN=1073758676,
GPIO_PH_INTTYPE=1073758680,
GPIO_PH_INTEN=1073758684,
GPIO_PH_INTSRC=1073758688,
GPIO_GPIO_DBCTL=1073759296,
PDMA_PDMA_DSCT0_CTL=1073774592,
PDMA_PDMA_DSCT1_CTL=1073774608,
PDMA_PDMA_DSCT2_CTL=1073774624,
PDMA_PDMA_DSCT3_CTL=1073774640,
PDMA_PDMA_DSCT4_CTL=1073774656,
PDMA_PDMA_DSCT0_SA=1073774596,
PDMA_PDMA_DSCT1_SA=1073774612,
PDMA_PDMA_DSCT2_SA=1073774628,
PDMA_PDMA_DSCT3_SA=1073774644,
PDMA_PDMA_DSCT4_SA=1073774660,
PDMA_PDMA_DSCT0_DA=1073774600,
PDMA_PDMA_DSCT1_DA=1073774616,
PDMA_PDMA_DSCT2_DA=1073774632,
PDMA_PDMA_DSCT3_DA=1073774648,
PDMA_PDMA_DSCT4_DA=1073774664,
PDMA_PDMA_DSCT0_NEXT=1073774604,
PDMA_PDMA_DSCT1_NEXT=1073774620,
PDMA_PDMA_DSCT2_NEXT=1073774636,
PDMA_PDMA_DSCT3_NEXT=1073774652,
PDMA_PDMA_DSCT4_NEXT=1073774668,
PDMA_PDMA_CURSCAT0=1073774848,
PDMA_PDMA_CURSCAT1=1073774852,
PDMA_PDMA_CURSCAT2=1073774856,
PDMA_PDMA_CURSCAT3=1073774860,
PDMA_PDMA_CURSCAT4=1073774864,
PDMA_PDMA_CHCTL=1073775616,
PDMA_PDMA_PAUSE=1073775620,
PDMA_PDMA_SWREQ=1073775624,
PDMA_PDMA_TRGSTS=1073775628,
PDMA_PDMA_PRISET=1073775632,
PDMA_PDMA_PRICLR=1073775636,
PDMA_PDMA_INTEN=1073775640,
PDMA_PDMA_INTSTS=1073775644,
PDMA_PDMA_ABTSTS=1073775648,
PDMA_PDMA_TDSTS=1073775652,
PDMA_PDMA_ALIGN=1073775656,
PDMA_PDMA_TACTSTS=1073775660,
PDMA_PDMA_TOUTPSC=1073775664,
PDMA_PDMA_TOUTEN=1073775668,
PDMA_PDMA_TOUTIEN=1073775672,
PDMA_PDMA_SCATBA=1073775676,
PDMA_PDMA_TOC0_1=1073775680,
PDMA_PDMA_CHRST=1073775712,
PDMA_PDMA_REQSEL0_3=1073775744,
PDMA_PDMA_REQSEL4=1073775748,
TMR01_TIMER0_CTL=1074069504,
TMR01_TIMER0_CMP=1074069508,
TMR01_TIMER0_INTSTS=1074069512,
TMR01_TIMER0_CNT=1074069516,
TMR01_TIMER0_CAP=1074069520,
TMR01_TIMER0_EXTCTL=1074069524,
TMR01_TIMER0_EINTSTS=1074069528,
TMR01_TIMER1_CTL=1074069536,
TMR01_TIMER1_CMP=1074069540,
TMR01_TIMER1_INTSTS=1074069544,
TMR01_TIMER1_CNT=1074069548,
TMR01_TIMER1_CAP=1074069552,
TMR01_TIMER1_EXTCTL=1074069556,
TMR01_TIMER1_EINTSTS=1074069560,
TMR23_TIMER2_CTL=1074073600,
TMR23_TIMER2_CMP=1074073604,
TMR23_TIMER2_INTSTS=1074073608,
TMR23_TIMER2_CNT=1074073612,
TMR23_TIMER2_CAP=1074073616,
TMR23_TIMER2_EXTCTL=1074073620,
TMR23_TIMER2_EINTSTS=1074073624,
TMR23_TIMER3_CTL=1074073632,
TMR23_TIMER3_CMP=1074073636,
TMR23_TIMER3_INTSTS=1074073640,
TMR23_TIMER3_CNT=1074073644,
TMR23_TIMER3_CAP=1074073648,
TMR23_TIMER3_EXTCTL=1074073652,
TMR23_TIMER3_EINTSTS=1074073656,
WDT_WDT_CTL=1074003968,
WDT_WDT_ALTCTL=1074003972,
WDT_WDT_RSTCNT=1074003976,
WWDT_WWDT_RLDCNT=1074004224,
WWDT_WWDT_CTL=1074004228,
WWDT_WWDT_STATUS=1074004232,
WWDT_WWDT_CNT=1074004236,
BPWM0_BPWM_CTL0=1074110464,
BPWM0_BPWM_CTL1=1074110468,
BPWM0_BPWM_CLKSRC=1074110480,
BPWM0_BPWM_CLKPSC=1074110484,
BPWM0_BPWM_CNTEN=1074110496,
BPWM0_BPWM_CNTCLR=1074110500,
BPWM0_BPWM_PERIOD=1074110512,
BPWM0_BPWM_CMPDAT0=1074110544,
BPWM0_BPWM_CMPDAT1=1074110548,
BPWM0_BPWM_CMPDAT2=1074110552,
BPWM0_BPWM_CMPDAT3=1074110556,
BPWM0_BPWM_CMPDAT4=1074110560,
BPWM0_BPWM_CMPDAT5=1074110564,
BPWM0_BPWM_CNT=1074110608,
BPWM0_BPWM_WGCTL0=1074110640,
BPWM0_BPWM_WGCTL1=1074110644,
BPWM0_BPWM_MSKEN=1074110648,
BPWM0_BPWM_MSK=1074110652,
BPWM0_BPWM_POLCTL=1074110676,
BPWM0_BPWM_POEN=1074110680,
BPWM0_BPWM_INTEN=1074110688,
BPWM0_BPWM_INTSTS=1074110696,
BPWM0_BPWM_EADCTS0=1074110712,
BPWM0_BPWM_EADCTS1=1074110716,
BPWM0_BPWM_SSCTL=1074110736,
BPWM0_BPWM_SSTRG=1074110740,
BPWM0_BPWM_STATUS=1074110752,
BPWM0_BPWM_CAPINEN=1074110976,
BPWM0_BPWM_CAPCTL=1074110980,
BPWM0_BPWM_CAPSTS=1074110984,
BPWM0_BPWM_RCAPDAT0=1074110988,
BPWM0_BPWM_FCAPDAT0=1074110992,
BPWM0_BPWM_RCAPDAT1=1074110996,
BPWM0_BPWM_FCAPDAT1=1074111000,
BPWM0_BPWM_RCAPDAT2=1074111004,
BPWM0_BPWM_FCAPDAT2=1074111008,
BPWM0_BPWM_RCAPDAT3=1074111012,
BPWM0_BPWM_FCAPDAT3=1074111016,
BPWM0_BPWM_RCAPDAT4=1074111020,
BPWM0_BPWM_FCAPDAT4=1074111024,
BPWM0_BPWM_RCAPDAT5=1074111028,
BPWM0_BPWM_FCAPDAT5=1074111032,
BPWM0_BPWM_CAPIEN=1074111056,
BPWM0_BPWM_CAPIF=1074111060,
BPWM0_BPWM_SELFTEST=1074111232,
BPWM0_BPWM_PBUF=1074111236,
BPWM0_BPWM_CMPBUF0=1074111260,
BPWM0_BPWM_CMPBUF1=1074111264,
BPWM0_BPWM_CMPBUF2=1074111268,
BPWM0_BPWM_CMPBUF3=1074111272,
BPWM0_BPWM_CMPBUF4=1074111276,
BPWM0_BPWM_CMPBUF5=1074111280,
BPWM1_BPWM_CTL0=1074114560,
BPWM1_BPWM_CTL1=1074114564,
BPWM1_BPWM_CLKSRC=1074114576,
BPWM1_BPWM_CLKPSC=1074114580,
BPWM1_BPWM_CNTEN=1074114592,
BPWM1_BPWM_CNTCLR=1074114596,
BPWM1_BPWM_PERIOD=1074114608,
BPWM1_BPWM_CMPDAT0=1074114640,
BPWM1_BPWM_CMPDAT1=1074114644,
BPWM1_BPWM_CMPDAT2=1074114648,
BPWM1_BPWM_CMPDAT3=1074114652,
BPWM1_BPWM_CMPDAT4=1074114656,
BPWM1_BPWM_CMPDAT5=1074114660,
BPWM1_BPWM_CNT=1074114704,
BPWM1_BPWM_WGCTL0=1074114736,
BPWM1_BPWM_WGCTL1=1074114740,
BPWM1_BPWM_MSKEN=1074114744,
BPWM1_BPWM_MSK=1074114748,
BPWM1_BPWM_POLCTL=1074114772,
BPWM1_BPWM_POEN=1074114776,
BPWM1_BPWM_INTEN=1074114784,
BPWM1_BPWM_INTSTS=1074114792,
BPWM1_BPWM_EADCTS0=1074114808,
BPWM1_BPWM_EADCTS1=1074114812,
BPWM1_BPWM_SSCTL=1074114832,
BPWM1_BPWM_SSTRG=1074114836,
BPWM1_BPWM_STATUS=1074114848,
BPWM1_BPWM_CAPINEN=1074115072,
BPWM1_BPWM_CAPCTL=1074115076,
BPWM1_BPWM_CAPSTS=1074115080,
BPWM1_BPWM_RCAPDAT0=1074115084,
BPWM1_BPWM_FCAPDAT0=1074115088,
BPWM1_BPWM_RCAPDAT1=1074115092,
BPWM1_BPWM_FCAPDAT1=1074115096,
BPWM1_BPWM_RCAPDAT2=1074115100,
BPWM1_BPWM_FCAPDAT2=1074115104,
BPWM1_BPWM_RCAPDAT3=1074115108,
BPWM1_BPWM_FCAPDAT3=1074115112,
BPWM1_BPWM_RCAPDAT4=1074115116,
BPWM1_BPWM_FCAPDAT4=1074115120,
BPWM1_BPWM_RCAPDAT5=1074115124,
BPWM1_BPWM_FCAPDAT5=1074115128,
BPWM1_BPWM_CAPIEN=1074115152,
BPWM1_BPWM_CAPIF=1074115156,
BPWM1_BPWM_SELFTEST=1074115328,
BPWM1_BPWM_PBUF=1074115332,
BPWM1_BPWM_CMPBUF0=1074115356,
BPWM1_BPWM_CMPBUF1=1074115360,
BPWM1_BPWM_CMPBUF2=1074115364,
BPWM1_BPWM_CMPBUF3=1074115368,
BPWM1_BPWM_CMPBUF4=1074115372,
BPWM1_BPWM_CMPBUF5=1074115376,
PWM0_PWM_CTL0=1074102272,
PWM0_PWM_CTL1=1074102276,
PWM0_PWM_CLKSRC=1074102288,
PWM0_PWM_CLKPSC0_1=1074102292,
PWM0_PWM_CLKPSC2_3=1074102296,
PWM0_PWM_CLKPSC4_5=1074102300,
PWM0_PWM_CNTEN=1074102304,
PWM0_PWM_CNTCLR=1074102308,
PWM0_PWM_PERIOD0=1074102320,
PWM0_PWM_PERIOD2=1074102328,
PWM0_PWM_PERIOD4=1074102336,
PWM0_PWM_CMPDAT0=1074102352,
PWM0_PWM_CMPDAT1=1074102356,
PWM0_PWM_CMPDAT2=1074102360,
PWM0_PWM_CMPDAT3=1074102364,
PWM0_PWM_CMPDAT4=1074102368,
PWM0_PWM_CMPDAT5=1074102372,
PWM0_PWM_DTCTL0_1=1074102384,
PWM0_PWM_DTCTL2_3=1074102388,
PWM0_PWM_DTCTL4_5=1074102392,
PWM0_PWM_CNT0=1074102416,
PWM0_PWM_CNT2=1074102424,
PWM0_PWM_CNT4=1074102432,
PWM0_PWM_WGCTL0=1074102448,
PWM0_PWM_WGCTL1=1074102452,
PWM0_PWM_MSKEN=1074102456,
PWM0_PWM_MSK=1074102460,
PWM0_PWM_BNF=1074102464,
PWM0_PWM_FAILBRK=1074102468,
PWM0_PWM_BRKCTL0_1=1074102472,
PWM0_PWM_BRKCTL2_3=1074102476,
PWM0_PWM_BRKCTL4_5=1074102480,
PWM0_PWM_POLCTL=1074102484,
PWM0_PWM_POEN=1074102488,
PWM0_PWM_SWBRK=1074102492,
PWM0_PWM_INTEN0=1074102496,
PWM0_PWM_INTEN1=1074102500,
PWM0_PWM_INTSTS0=1074102504,
PWM0_PWM_INTSTS1=1074102508,
PWM0_PWM_ADCTS0=1074102520,
PWM0_PWM_ADCTS1=1074102524,
PWM0_PWM_SSCTL=1074102544,
PWM0_PWM_SSTRG=1074102548,
PWM0_PWM_STATUS=1074102560,
PWM0_PWM_CAPINEN=1074102784,
PWM0_PWM_CAPCTL=1074102788,
PWM0_PWM_CAPSTS=1074102792,
PWM0_PWM_RCAPDAT0=1074102796,
PWM0_PWM_FCAPDAT0=1074102800,
PWM0_PWM_RCAPDAT1=1074102804,
PWM0_PWM_FCAPDAT1=1074102808,
PWM0_PWM_RCAPDAT2=1074102812,
PWM0_PWM_FCAPDAT2=1074102816,
PWM0_PWM_RCAPDAT3=1074102820,
PWM0_PWM_FCAPDAT3=1074102824,
PWM0_PWM_RCAPDAT4=1074102828,
PWM0_PWM_FCAPDAT4=1074102832,
PWM0_PWM_RCAPDAT5=1074102836,
PWM0_PWM_FCAPDAT5=1074102840,
PWM0_PWM_PDMACTL=1074102844,
PWM0_PWM_PDMACAP0_1=1074102848,
PWM0_PWM_PDMACAP2_3=1074102852,
PWM0_PWM_PDMACAP4_5=1074102856,
PWM0_PWM_CAPIEN=1074102864,
PWM0_PWM_CAPIF=1074102868,
PWM0_PWM_PBUF0=1074103044,
PWM0_PWM_PBUF2=1074103052,
PWM0_PWM_PBUF4=1074103060,
PWM0_PWM_CMPBUF0=1074103068,
PWM0_PWM_CMPBUF1=1074103072,
PWM0_PWM_CMPBUF2=1074103076,
PWM0_PWM_CMPBUF3=1074103080,
PWM0_PWM_CMPBUF4=1074103084,
PWM0_PWM_CMPBUF5=1074103088,
PWM1_PWM_CTL0=1074106368,
PWM1_PWM_CTL1=1074106372,
PWM1_PWM_CLKSRC=1074106384,
PWM1_PWM_CLKPSC0_1=1074106388,
PWM1_PWM_CLKPSC2_3=1074106392,
PWM1_PWM_CLKPSC4_5=1074106396,
PWM1_PWM_CNTEN=1074106400,
PWM1_PWM_CNTCLR=1074106404,
PWM1_PWM_PERIOD0=1074106416,
PWM1_PWM_PERIOD2=1074106424,
PWM1_PWM_PERIOD4=1074106432,
PWM1_PWM_CMPDAT0=1074106448,
PWM1_PWM_CMPDAT1=1074106452,
PWM1_PWM_CMPDAT2=1074106456,
PWM1_PWM_CMPDAT3=1074106460,
PWM1_PWM_CMPDAT4=1074106464,
PWM1_PWM_CMPDAT5=1074106468,
PWM1_PWM_DTCTL0_1=1074106480,
PWM1_PWM_DTCTL2_3=1074106484,
PWM1_PWM_DTCTL4_5=1074106488,
PWM1_PWM_CNT0=1074106512,
PWM1_PWM_CNT2=1074106520,
PWM1_PWM_CNT4=1074106528,
PWM1_PWM_WGCTL0=1074106544,
PWM1_PWM_WGCTL1=1074106548,
PWM1_PWM_MSKEN=1074106552,
PWM1_PWM_MSK=1074106556,
PWM1_PWM_BNF=1074106560,
PWM1_PWM_FAILBRK=1074106564,
PWM1_PWM_BRKCTL0_1=1074106568,
PWM1_PWM_BRKCTL2_3=1074106572,
PWM1_PWM_BRKCTL4_5=1074106576,
PWM1_PWM_POLCTL=1074106580,
PWM1_PWM_POEN=1074106584,
PWM1_PWM_SWBRK=1074106588,
PWM1_PWM_INTEN0=1074106592,
PWM1_PWM_INTEN1=1074106596,
PWM1_PWM_INTSTS0=1074106600,
PWM1_PWM_INTSTS1=1074106604,
PWM1_PWM_ADCTS0=1074106616,
PWM1_PWM_ADCTS1=1074106620,
PWM1_PWM_SSCTL=1074106640,
PWM1_PWM_SSTRG=1074106644,
PWM1_PWM_STATUS=1074106656,
PWM1_PWM_CAPINEN=1074106880,
PWM1_PWM_CAPCTL=1074106884,
PWM1_PWM_CAPSTS=1074106888,
PWM1_PWM_RCAPDAT0=1074106892,
PWM1_PWM_FCAPDAT0=1074106896,
PWM1_PWM_RCAPDAT1=1074106900,
PWM1_PWM_FCAPDAT1=1074106904,
PWM1_PWM_RCAPDAT2=1074106908,
PWM1_PWM_FCAPDAT2=1074106912,
PWM1_PWM_RCAPDAT3=1074106916,
PWM1_PWM_FCAPDAT3=1074106920,
PWM1_PWM_RCAPDAT4=1074106924,
PWM1_PWM_FCAPDAT4=1074106928,
PWM1_PWM_RCAPDAT5=1074106932,
PWM1_PWM_FCAPDAT5=1074106936,
PWM1_PWM_PDMACTL=1074106940,
PWM1_PWM_PDMACAP0_1=1074106944,
PWM1_PWM_PDMACAP2_3=1074106948,
PWM1_PWM_PDMACAP4_5=1074106952,
PWM1_PWM_CAPIEN=1074106960,
PWM1_PWM_CAPIF=1074106964,
PWM1_PWM_PBUF0=1074107140,
PWM1_PWM_PBUF2=1074107148,
PWM1_PWM_PBUF4=1074107156,
PWM1_PWM_CMPBUF0=1074107164,
PWM1_PWM_CMPBUF1=1074107168,
PWM1_PWM_CMPBUF2=1074107172,
PWM1_PWM_CMPBUF3=1074107176,
PWM1_PWM_CMPBUF4=1074107180,
PWM1_PWM_CMPBUF5=1074107184,
UART0_UART_DAT=1074200576,
UART0_UART_INTEN=1074200580,
UART0_UART_FIFO=1074200584,
UART0_UART_LINE=1074200588,
UART0_UART_MODEM=1074200592,
UART0_UART_MODEMSTS=1074200596,
UART0_UART_FIFOSTS=1074200600,
UART0_UART_INTSTS=1074200604,
UART0_UART_TOUT=1074200608,
UART0_UART_BAUD=1074200612,
UART0_UART_IRDA=1074200616,
UART0_UART_ALTCTL=1074200620,
UART0_UART_FUNCSEL=1074200624,
UART0_UART_BRCOMP=1074200636,
UART0_UART_WKCTL=1074200640,
UART0_UART_WKSTS=1074200644,
UART0_UART_DWKCOMP=1074200648,
UART1_UART_DAT=1074204672,
UART1_UART_INTEN=1074204676,
UART1_UART_FIFO=1074204680,
UART1_UART_LINE=1074204684,
UART1_UART_MODEM=1074204688,
UART1_UART_MODEMSTS=1074204692,
UART1_UART_FIFOSTS=1074204696,
UART1_UART_INTSTS=1074204700,
UART1_UART_TOUT=1074204704,
UART1_UART_BAUD=1074204708,
UART1_UART_IRDA=1074204712,
UART1_UART_ALTCTL=1074204716,
UART1_UART_FUNCSEL=1074204720,
UART1_UART_BRCOMP=1074204732,
UART1_UART_WKCTL=1074204736,
UART1_UART_WKSTS=1074204740,
UART1_UART_DWKCOMP=1074204744,
UART2_UART_DAT=1074208768,
UART2_UART_INTEN=1074208772,
UART2_UART_FIFO=1074208776,
UART2_UART_LINE=1074208780,
UART2_UART_MODEM=1074208784,
UART2_UART_MODEMSTS=1074208788,
UART2_UART_FIFOSTS=1074208792,
UART2_UART_INTSTS=1074208796,
UART2_UART_TOUT=1074208800,
UART2_UART_BAUD=1074208804,
UART2_UART_IRDA=1074208808,
UART2_UART_ALTCTL=1074208812,
UART2_UART_FUNCSEL=1074208816,
UART2_UART_BRCOMP=1074208828,
UART2_UART_WKCTL=1074208832,
UART2_UART_WKSTS=1074208836,
UART2_UART_DWKCOMP=1074208840,
UART3_UART_DAT=1074212864,
UART3_UART_INTEN=1074212868,
UART3_UART_FIFO=1074212872,
UART3_UART_LINE=1074212876,
UART3_UART_MODEM=1074212880,
UART3_UART_MODEMSTS=1074212884,
UART3_UART_FIFOSTS=1074212888,
UART3_UART_INTSTS=1074212892,
UART3_UART_TOUT=1074212896,
UART3_UART_BAUD=1074212900,
UART3_UART_IRDA=1074212904,
UART3_UART_ALTCTL=1074212908,
UART3_UART_FUNCSEL=1074212912,
UART3_UART_BRCOMP=1074212924,
UART3_UART_WKCTL=1074212928,
UART3_UART_WKSTS=1074212932,
UART3_UART_DWKCOMP=1074212936,
UART4_UART_DAT=1074216960,
UART4_UART_INTEN=1074216964,
UART4_UART_FIFO=1074216968,
UART4_UART_LINE=1074216972,
UART4_UART_MODEM=1074216976,
UART4_UART_MODEMSTS=1074216980,
UART4_UART_FIFOSTS=1074216984,
UART4_UART_INTSTS=1074216988,
UART4_UART_TOUT=1074216992,
UART4_UART_BAUD=1074216996,
UART4_UART_IRDA=1074217000,
UART4_UART_ALTCTL=1074217004,
UART4_UART_FUNCSEL=1074217008,
UART4_UART_BRCOMP=1074217020,
UART4_UART_WKCTL=1074217024,
UART4_UART_WKSTS=1074217028,
UART4_UART_DWKCOMP=1074217032,
UART5_UART_DAT=1074221056,
UART5_UART_INTEN=1074221060,
UART5_UART_FIFO=1074221064,
UART5_UART_LINE=1074221068,
UART5_UART_MODEM=1074221072,
UART5_UART_MODEMSTS=1074221076,
UART5_UART_FIFOSTS=1074221080,
UART5_UART_INTSTS=1074221084,
UART5_UART_TOUT=1074221088,
UART5_UART_BAUD=1074221092,
UART5_UART_IRDA=1074221096,
UART5_UART_ALTCTL=1074221100,
UART5_UART_FUNCSEL=1074221104,
UART5_UART_BRCOMP=1074221116,
UART5_UART_WKCTL=1074221120,
UART5_UART_WKSTS=1074221124,
UART5_UART_DWKCOMP=1074221128,
UART6_UART_DAT=1074225152,
UART6_UART_INTEN=1074225156,
UART6_UART_FIFO=1074225160,
UART6_UART_LINE=1074225164,
UART6_UART_MODEM=1074225168,
UART6_UART_MODEMSTS=1074225172,
UART6_UART_FIFOSTS=1074225176,
UART6_UART_INTSTS=1074225180,
UART6_UART_TOUT=1074225184,
UART6_UART_BAUD=1074225188,
UART6_UART_IRDA=1074225192,
UART6_UART_ALTCTL=1074225196,
UART6_UART_FUNCSEL=1074225200,
UART6_UART_BRCOMP=1074225212,
UART6_UART_WKCTL=1074225216,
UART6_UART_WKSTS=1074225220,
UART6_UART_DWKCOMP=1074225224,
UART7_UART_DAT=1074229248,
UART7_UART_INTEN=1074229252,
UART7_UART_FIFO=1074229256,
UART7_UART_LINE=1074229260,
UART7_UART_MODEM=1074229264,
UART7_UART_MODEMSTS=1074229268,
UART7_UART_FIFOSTS=1074229272,
UART7_UART_INTSTS=1074229276,
UART7_UART_TOUT=1074229280,
UART7_UART_BAUD=1074229284,
UART7_UART_IRDA=1074229288,
UART7_UART_ALTCTL=1074229292,
UART7_UART_FUNCSEL=1074229296,
UART7_UART_BRCOMP=1074229308,
UART7_UART_WKCTL=1074229312,
UART7_UART_WKSTS=1074229316,
UART7_UART_DWKCOMP=1074229320,
SPI0_SPIx_CTL=1074139136,
SPI0_SPIx_CLKDIV=1074139140,
SPI0_SPIx_SSCTL=1074139144,
SPI0_SPIx_PDMACTL=1074139148,
SPI0_SPIx_FIFOCTL=1074139152,
SPI0_SPIx_STATUS=1074139156,
SPI0_SPIx_TX=1074139168,
SPI0_SPIx_RX=1074139184,
SPI0_SPIx_I2SCTL=1074139232,
SPI0_SPIx_I2SCLK=1074139236,
SPI0_SPIx_I2SSTS=1074139240,
QSPI0_SPIx_CTL=1074135040,
QSPI0_SPIx_CLKDIV=1074135044,
QSPI0_SPIx_SSCTL=1074135048,
QSPI0_SPIx_PDMACTL=1074135052,
QSPI0_SPIx_FIFOCTL=1074135056,
QSPI0_SPIx_STATUS=1074135060,
QSPI0_SPIx_TX=1074135072,
QSPI0_SPIx_RX=1074135088,
I2C0_I2C_CTL0=1074266112,
I2C0_I2C_ADDR0=1074266116,
I2C0_I2C_DAT=1074266120,
I2C0_I2C_STATUS0=1074266124,
I2C0_I2C_CLKDIV=1074266128,
I2C0_I2C_TOCTL=1074266132,
I2C0_I2C_ADDR1=1074266136,
I2C0_I2C_ADDR2=1074266140,
I2C0_I2C_ADDR3=1074266144,
I2C0_I2C_ADDRMSK0=1074266148,
I2C0_I2C_ADDRMSK1=1074266152,
I2C0_I2C_ADDRMSK2=1074266156,
I2C0_I2C_ADDRMSK3=1074266160,
I2C0_I2C_WKCTL=1074266172,
I2C0_I2C_WKSTS=1074266176,
I2C0_I2C_CTL1=1074266180,
I2C0_I2C_STATUS1=1074266184,
I2C0_I2C_TMCTL=1074266188,
I2C1_I2C_CTL0=1074270208,
I2C1_I2C_ADDR0=1074270212,
I2C1_I2C_DAT=1074270216,
I2C1_I2C_STATUS0=1074270220,
I2C1_I2C_CLKDIV=1074270224,
I2C1_I2C_TOCTL=1074270228,
I2C1_I2C_ADDR1=1074270232,
I2C1_I2C_ADDR2=1074270236,
I2C1_I2C_ADDR3=1074270240,
I2C1_I2C_ADDRMSK0=1074270244,
I2C1_I2C_ADDRMSK1=1074270248,
I2C1_I2C_ADDRMSK2=1074270252,
I2C1_I2C_ADDRMSK3=1074270256,
I2C1_I2C_WKCTL=1074270268,
I2C1_I2C_WKSTS=1074270272,
I2C1_I2C_CTL1=1074270276,
I2C1_I2C_STATUS1=1074270280,
I2C1_I2C_TMCTL=1074270284,
USCI0_USCI_CTL=1074593792,
USCI0_USCI_INTEN=1074593796,
USCI0_USCI_BRGEN=1074593800,
USCI0_USCI_DATIN0=1074593808,
USCI0_USCI_CTLIN0=1074593824,
USCI0_USCI_CLKIN=1074593832,
USCI0_USCI_LINECTL=1074593836,
USCI0_USCI_TXDAT=1074593840,
USCI0_USCI_RXDAT=1074593844,
USCI0_USCI_BUFCTL=1074593848,
USCI0_USCI_BUFSTS=1074593852,
USCI0_USCI_PDMACTL=1074593856,
USCI0_USCI_DEVADDR0=1074593860,
USCI0_USCI_DEVADDR1=1074593864,
USCI0_USCI_ADDRMSK0=1074593868,
USCI0_USCI_ADDRMSK1=1074593872,
USCI0_USCI_WKCTL=1074593876,
USCI0_USCI_WKSTS=1074593880,
USCI0_USCI_PROTCTL=1074593884,
USCI0_USCI_PROTIEN=1074593888,
USCI0_USCI_PROTSTS=1074593892,
USCI0_USCI_IUR=1074593924,
USCI0_USCI_TMCTL=1074593932,
USCI1_USCI_CTL=1074597888,
USCI1_USCI_INTEN=1074597892,
USCI1_USCI_BRGEN=1074597896,
USCI1_USCI_DATIN0=1074597904,
USCI1_USCI_CTLIN0=1074597920,
USCI1_USCI_CLKIN=1074597928,
USCI1_USCI_LINECTL=1074597932,
USCI1_USCI_TXDAT=1074597936,
USCI1_USCI_RXDAT=1074597940,
USCI1_USCI_BUFCTL=1074597944,
USCI1_USCI_BUFSTS=1074597948,
USCI1_USCI_PDMACTL=1074597952,
USCI1_USCI_DEVADDR0=1074597956,
USCI1_USCI_DEVADDR1=1074597960,
USCI1_USCI_ADDRMSK0=1074597964,
USCI1_USCI_ADDRMSK1=1074597968,
USCI1_USCI_WKCTL=1074597972,
USCI1_USCI_WKSTS=1074597976,
USCI1_USCI_PROTCTL=1074597980,
USCI1_USCI_PROTIEN=1074597984,
USCI1_USCI_PROTSTS=1074597988,
USCI1_USCI_IUR=1074598020,
USCI1_USCI_TMCTL=1074598028,
EBI_EBI_CTL0=1073807360,
EBI_EBI_TCTL0=1073807364,
EBI_EBI_CTL1=1073807376,
EBI_EBI_TCTL1=1073807380,
USBD_USBD_INTEN=1074528256,
USBD_USBD_INTSTS=1074528260,
USBD_USBD_FADDR=1074528264,
USBD_USBD_EPSTS=1074528268,
USBD_USBD_ATTR=1074528272,
USBD_USBD_VBUSDET=1074528276,
USBD_USBD_STBUFSEG=1074528280,
USBD_USBD_EPSTS0=1074528288,
USBD_USBD_LPMATTR=1074528392,
USBD_USBD_FN=1074528396,
USBD_USBD_SE0=1074528400,
USBD_USBD_BUFSEG0=1074529536,
USBD_USBD_MXPLD0=1074529540,
USBD_USBD_CFG0=1074529544,
USBD_USBD_CFGP0=1074529548,
USBD_USBD_BUFSEG1=1074529552,
USBD_USBD_MXPLD1=1074529556,
USBD_USBD_CFG1=1074529560,
USBD_USBD_CFGP1=1074529564,
USBD_USBD_BUFSEG2=1074529568,
USBD_USBD_MXPLD2=1074529572,
USBD_USBD_CFG2=1074529576,
USBD_USBD_CFGP2=1074529580,
USBD_USBD_BUFSEG3=1074529584,
USBD_USBD_MXPLD3=1074529588,
USBD_USBD_CFG3=1074529592,
USBD_USBD_CFGP3=1074529596,
USBD_USBD_BUFSEG4=1074529600,
USBD_USBD_MXPLD4=1074529604,
USBD_USBD_CFG4=1074529608,
USBD_USBD_CFGP4=1074529612,
USBD_USBD_BUFSEG5=1074529616,
USBD_USBD_MXPLD5=1074529620,
USBD_USBD_CFG5=1074529624,
USBD_USBD_CFGP5=1074529628,
USBD_USBD_BUFSEG6=1074529632,
USBD_USBD_MXPLD6=1074529636,
USBD_USBD_CFG6=1074529640,
USBD_USBD_CFGP6=1074529644,
USBD_USBD_BUFSEG7=1074529648,
USBD_USBD_MXPLD7=1074529652,
USBD_USBD_CFG7=1074529656,
USBD_USBD_CFGP7=1074529660,
CRC_CRC_CTL=1073942528,
CRC_CRC_DAT=1073942532,
CRC_CRC_SEED=1073942536,
CRC_CRC_CHECKSUM=1073942540,
ADC_ADC_ADDR0=1074016256,
ADC_ADC_ADDR1=1074016260,
ADC_ADC_ADDR2=1074016264,
ADC_ADC_ADDR3=1074016268,
ADC_ADC_ADDR4=1074016272,
ADC_ADC_ADDR5=1074016276,
ADC_ADC_ADDR6=1074016280,
ADC_ADC_ADDR7=1074016284,
ADC_ADC_ADDR8=1074016288,
ADC_ADC_ADDR9=1074016292,
ADC_ADC_ADDR10=1074016296,
ADC_ADC_ADDR11=1074016300,
ADC_ADC_ADDR12=1074016304,
ADC_ADC_ADDR13=1074016308,
ADC_ADC_ADDR14=1074016312,
ADC_ADC_ADDR15=1074016316,
ADC_ADC_ADDR29=1074016372,
ADC_ADC_ADCR=1074016384,
ADC_ADC_ADCHER=1074016388,
ADC_ADC_ADCMPR0=1074016392,
ADC_ADC_ADCMPR1=1074016396,
ADC_ADC_ADSR0=1074016400,
ADC_ADC_ADSR1=1074016404,
ADC_ADC_ADSR2=1074016408,
ADC_ADC_ESMPCTL=1074016416,
ADC_ADC_ADPDMA=1074016512,
ADC_ADC_ADCALR=1074016640,
ADC_ADC_ADCALSTSR=1074016644,
ACMP01_ACMP_CTL0=1074024448,
ACMP01_ACMP_CTL1=1074024452,
ACMP01_ACMP_STATUS=1074024456,
ACMP01_ACMP_VREF=1074024460,
}
g_M031_regs=REG
function read_M031_Registers(e,e,e,e)
local e=get_chip_info()["series_group"]
local o=false
local h=true
local n=false
local r=false
local i=false
local a=false
local t=false
local d=true
local s=true
if e==g_SeriesGroup.M031_256K_AE then
o=true
n=true
i=true
a=true
t=true
elseif e==g_SeriesGroup.M031_512K_AE then
o=true
n=true
r=true
i=true
a=true
t=true
elseif e==g_SeriesGroup.M032_64K_AE then
h=false
i=true
a=true
t=true
d=false
s=false
end
local e={}
e["SYS_SYS_GPA_MFPL"],
e["SYS_SYS_GPA_MFPH"],
e["SYS_SYS_GPB_MFPL"],
e["SYS_SYS_GPB_MFPH"],
e["SYS_SYS_GPC_MFPL"],
e["SYS_SYS_GPC_MFPH"]=ice:ReadMem32(g_M031_regs.SYS_SYS_GPA_MFPL,6)
e["SYS_SYS_GPD_MFPL"],
e["SYS_SYS_GPD_MFPH"],
e["SYS_SYS_GPE_MFPL"],
e["SYS_SYS_GPE_MFPH"],
e["SYS_SYS_GPF_MFPL"],
e["SYS_SYS_GPF_MFPH"]=ice:ReadMem32(g_M031_regs.SYS_SYS_GPD_MFPL,6)
if o then
e["SYS_SYS_GPG_MFPL"],
e["SYS_SYS_GPG_MFPH"],
e["SYS_SYS_GPH_MFPL"],
e["SYS_SYS_GPH_MFPH"]=ice:ReadMem32(g_M031_regs.SYS_SYS_GPG_MFPL,4)
end
e["SYS_SYS_HIRCTRIMCTL"]=ice:ReadMemMulti(g_M031_regs.SYS_SYS_HIRCTRIMCTL)
e["CLK_CLK_PWRCTL"],
e["CLK_CLK_AHBCLK"],
e["CLK_CLK_APBCLK0"],
e["CLK_CLK_APBCLK1"],
e["CLK_CLK_CLKSEL0"],
e["CLK_CLK_CLKSEL1"],
e["CLK_CLK_CLKSEL2"],
e["CLK_CLK_CLKSEL3"],
e["CLK_CLK_CLKDIV0"]=ice:ReadMem32(g_M031_regs.CLK_CLK_PWRCTL,9)
e["CLK_CLK_CLKDIV4"],
e["CLK_CLK_PCLKDIV"],
e["CLK_CLK_PLLCTL"],
e["CLK_CLK_CLKOCTL"]=ice:ReadMemMulti(g_M031_regs.CLK_CLK_CLKDIV4,
g_M031_regs.CLK_CLK_PCLKDIV,
g_M031_regs.CLK_CLK_PLLCTL,
g_M031_regs.CLK_CLK_CLKOCTL)
e["GPIO_PA_MODE"],
e["GPIO_PA_DINOFF"],
e["GPIO_PA_DOUT"],
e["GPIO_PA_DATMSK"],
e["GPIO_PA_PIN"]=ice:ReadMem32(g_M031_regs.GPIO_PA_MODE,5)
e["GPIO_PB_MODE"],
e["GPIO_PB_DINOFF"],
e["GPIO_PB_DOUT"],
e["GPIO_PB_DATMSK"],
e["GPIO_PB_PIN"]=ice:ReadMem32(g_M031_regs.GPIO_PB_MODE,5)
e["GPIO_PC_MODE"],
e["GPIO_PC_DINOFF"],
e["GPIO_PC_DOUT"],
e["GPIO_PC_DATMSK"],
e["GPIO_PC_PIN"]=ice:ReadMem32(g_M031_regs.GPIO_PC_MODE,5)
e["GPIO_PD_MODE"],
e["GPIO_PD_DINOFF"],
e["GPIO_PD_DOUT"],
e["GPIO_PD_DATMSK"],
e["GPIO_PD_PIN"]=ice:ReadMem32(g_M031_regs.GPIO_PD_MODE,5)
e["GPIO_PF_MODE"],
e["GPIO_PF_DINOFF"],
e["GPIO_PF_DOUT"],
e["GPIO_PF_DATMSK"],
e["GPIO_PF_PIN"]=ice:ReadMem32(g_M031_regs.GPIO_PF_MODE,5)
if o then
e["GPIO_PE_MODE"],
e["GPIO_PE_DINOFF"],
e["GPIO_PE_DOUT"],
e["GPIO_PE_DATMSK"],
e["GPIO_PE_PIN"]=ice:ReadMem32(g_M031_regs.GPIO_PE_MODE,5)
e["GPIO_PG_MODE"],
e["GPIO_PG_DINOFF"],
e["GPIO_PG_DOUT"],
e["GPIO_PG_DATMSK"],
e["GPIO_PG_PIN"]=ice:ReadMem32(g_M031_regs.GPIO_PG_MODE,5)
e["GPIO_PH_MODE"],
e["GPIO_PH_DINOFF"],
e["GPIO_PH_DOUT"],
e["GPIO_PH_DATMSK"],
e["GPIO_PH_PIN"]=ice:ReadMem32(g_M031_regs.GPIO_PH_MODE,5)
end
if s then
e["EBI_EBI_CTL0"],
e["EBI_EBI_CTL1"]=ice:ReadMemMulti(g_M031_regs.EBI_EBI_CTL0,
g_M031_regs.EBI_EBI_CTL1)
end
e["UART0_UART_BAUD"]=ice:ReadMemMulti(g_M031_regs.UART0_UART_BAUD)
if h then
e["UART1_UART_BAUD"],
e["UART2_UART_BAUD"]=ice:ReadMemMulti(g_M031_regs.UART1_UART_BAUD,
g_M031_regs.UART2_UART_BAUD)
end
if n then
e["UART3_UART_BAUD"],
e["UART4_UART_BAUD"],
e["UART5_UART_BAUD"]=ice:ReadMemMulti(g_M031_regs.UART3_UART_BAUD,
g_M031_regs.UART4_UART_BAUD,
g_M031_regs.UART5_UART_BAUD)
end
if r then
e["UART6_UART_BAUD"],
e["UART7_UART_BAUD"]=ice:ReadMemMulti(g_M031_regs.UART6_UART_BAUD,
g_M031_regs.UART7_UART_BAUD)
end
e["PWM0_PWM_CLKSRC"],
e["PWM1_PWM_CLKSRC"]=ice:ReadMemMulti(g_M031_regs.PWM0_PWM_CLKSRC,
g_M031_regs.PWM1_PWM_CLKSRC)
e["PWM0_PWM_CLKPSC0_1"],
e["PWM0_PWM_CLKPSC2_3"],
e["PWM0_PWM_CLKPSC4_5"]=ice:ReadMem32(g_M031_regs.PWM0_PWM_CLKPSC0_1,3)
e["PWM1_PWM_CLKPSC0_1"],
e["PWM1_PWM_CLKPSC2_3"],
e["PWM1_PWM_CLKPSC4_5"]=ice:ReadMem32(g_M031_regs.PWM1_PWM_CLKPSC0_1,3)
e["PWM0_PWM_CNTEN"],
e["PWM1_PWM_CNTEN"]=ice:ReadMemMulti(g_M031_regs.PWM0_PWM_CNTEN,
g_M031_regs.PWM1_PWM_CNTEN)
if i then
e["BPWM0_BPWM_CLKSRC"],
e["BPWM0_BPWM_CLKPSC"],
e["BPWM1_BPWM_CLKSRC"],
e["BPWM1_BPWM_CLKPSC"]=ice:ReadMemMulti(g_M031_regs.BPWM0_BPWM_CLKSRC,
g_M031_regs.BPWM0_BPWM_CLKPSC,
g_M031_regs.BPWM1_BPWM_CLKSRC,
g_M031_regs.BPWM1_BPWM_CLKPSC)
e["BPWM0_BPWM_CNTEN"],
e["BPWM1_BPWM_CNTEN"]=ice:ReadMemMulti(g_M031_regs.BPWM0_BPWM_CNTEN,
g_M031_regs.BPWM1_BPWM_CNTEN)
end
e["TMR01_TIMER0_CTL"],
e["TMR01_TIMER1_CTL"],
e["TMR23_TIMER2_CTL"],
e["TMR23_TIMER3_CTL"]=ice:ReadMemMulti(g_M031_regs.TMR01_TIMER0_CTL,
g_M031_regs.TMR01_TIMER1_CTL,
g_M031_regs.TMR23_TIMER2_CTL,
g_M031_regs.TMR23_TIMER3_CTL)
if d then
e["I2C0_I2C_CTL0"],
e["I2C0_I2C_CLKDIV"],
e["I2C1_I2C_CTL0"],
e["I2C1_I2C_CLKDIV"]=ice:ReadMemMulti(g_M031_regs.I2C0_I2C_CTL0,
g_M031_regs.I2C0_I2C_CLKDIV,
g_M031_regs.I2C1_I2C_CTL0,
g_M031_regs.I2C1_I2C_CLKDIV)
end
e["SPI0_SPIx_CTL"],
e["SPI0_SPIx_CLKDIV"],
e["SPI0_SPIx_I2SCTL"],
e["SPI0_SPIx_I2SCLK"]=ice:ReadMemMulti(g_M031_regs.SPI0_SPIx_CTL,
g_M031_regs.SPI0_SPIx_CLKDIV,
g_M031_regs.SPI0_SPIx_I2SCTL,
g_M031_regs.SPI0_SPIx_I2SCLK)
if a then
e["QSPI0_SPIx_CTL"],
e["QSPI0_SPIx_CLKDIV"]=ice:ReadMemMulti(g_M031_regs.QSPI0_SPIx_CTL,
g_M031_regs.QSPI0_SPIx_CLKDIV)
end
e["USCI0_USCI_CTL"],
e["USCI0_USCI_BRGEN"],
e["USCI0_USCI_PROTCTL"]=ice:ReadMemMulti(g_M031_regs.USCI0_USCI_CTL,
g_M031_regs.USCI0_USCI_BRGEN,
g_M031_regs.USCI0_USCI_PROTCTL)
if t then
e["USCI1_USCI_CTL"],
e["USCI1_USCI_BRGEN"],
e["USCI1_USCI_PROTCTL"]=ice:ReadMemMulti(g_M031_regs.USCI1_USCI_CTL,
g_M031_regs.USCI1_USCI_BRGEN,
g_M031_regs.USCI1_USCI_PROTCTL)
end
return e
end
local n={
[0]=kPinDirection_In,
[1]=kPinDirection_PushPullOut,
[2]=kPinDirection_OpenDrainOut,
[3]=kPinDirection_Bi,
}
local c={
[0]="INPUT",
[1]="OUTPUT",
[2]="Open-Drain",
[3]="Quasi-bidirectional",
}
function get_mfp_regs(o,a,t)
local e
if t>=0 and t<=7 then
e="L"
else
e="H"
end
local e={"SYS_SYS_GP"..a.."_MFP"..e}
return reg2str("Multi-Function register",g_M031_regs,o,e)
end
function get_clk_informnation(t,e)
return reg2str("Clock setting registers",g_M031_regs,t,e)
end
function get_LIRC_clock(a,o)
local e
local t
table.insert(o,"CLK_CLK_PWRCTL")
local a=ext.band(a["CLK_CLK_PWRCTL"],8)
if a==0 then
e=0
t="invalid internal 38.4kHz low speed oscillator clock (see CLK_PWRCTL[3].LIRCEN)"
else
e=38400
t="internal 38.4kHz low speed oscillator clock"
end
return e,t
end
function get_HIRC_clock(a,o)
local e
local t
table.insert(o,"CLK_CLK_PWRCTL")
local i=ext.band(a["CLK_CLK_PWRCTL"],4)
if i==0 then
e=0
t="invalid internal 48MHz high speed oscillator clock (see CLK_PWRCTL[2].HIRCEN)"
else
table.insert(o,"SYS_SYS_HIRCTRIMCTL")
local a=ext.band(a["SYS_SYS_HIRCTRIMCTL"],3)
if a==0 then
e=48000000
t="internal 48MHz high speed oscillator clock"
elseif a==1 then
e=48000000
t="internal 48MHz high speed oscillator clock (auto trim)"
else
e=0
t="invalid HIRC trim frequency selection (see SYS_HIRCTRIMCTL[1:0].FREQSEL)"
end
end
return e,t
end
function is_LXT_supported()
local t=get_chip_info()["series_group"]
if t==g_SeriesGroup.M031_16K_32K_AE then
local e=get_chip_info()["series"]
if e:gsub("^M031.*B.AE","")~=e then
return false
elseif e:gsub("^M031[FE]C.AE","")~=e then
return false
end
elseif t==g_SeriesGroup.M032_64K_AE then
return false
end
return true
end
function get_LXT_clock(o,a)
local t
local e
table.insert(a,"CLK_CLK_PWRCTL")
local a=ext.band(o["CLK_CLK_PWRCTL"],2)
if not is_LXT_supported()then
t=0
e="LXT function is not supported"
elseif a==0 then
t=0
e="invalid external 32.768kHz low speed crystal clock (see CLK_PWRCTL[1].LXTEN)"
else
t=32768
e="external 32.768kHz low speed crystal clock"
end
return t,e
end
function is_HXT_supported()
local e=get_chip_info()["series_group"]
if e==g_SeriesGroup.M032_64K_AE then
return false
end
return true
end
function get_HXT_clock(a,o)
local t
local e
table.insert(o,"CLK_CLK_PWRCTL")
local a=ext.band(a["CLK_CLK_PWRCTL"],1)
if not is_HXT_supported()then
t=0
e="HXT function is not supported"
elseif a==0 then
t=0
e="invalid external 4~32M high speed crystal clock (see CLK_PWRCTL[0].HXTEN)"
else
t=32000000
e="external 4~32M high speed crystal clock, when external input clock is 32M"
end
return t,e
end
function is_PLL_supported()
local e=get_chip_info()["series_group"]
if e==g_SeriesGroup.M031_16K_32K_AE
or e==g_SeriesGroup.M032_64K_AE then
return false
end
return true
end
function get_PLL_clock(a,o)
local e
local t
table.insert(o,"CLK_CLK_PLLCTL")
if ext.band(ext.rshift(a["CLK_CLK_PLLCTL"],16),1)~=0 then
e=0
t="invalid PLL clock, PLL is in Power-down mode (see CLK_PLLCTL[16].PD)"
else
local i=ext.band(ext.rshift(a["CLK_CLK_PLLCTL"],19),1)
if i~=0 then
e,t=get_HIRC_clock(a,o)
e=e/4
else
e,t=get_HXT_clock(a,o)
end
if e~=0 then
local o=ext.band(ext.rshift(a["CLK_CLK_PLLCTL"],17),1)
if o~=0 then
t=string.format("PLL clock (%sHz), bypassed from %s",val2str(e),t)
else
local n=ext.band(a["CLK_CLK_PLLCTL"],511)+2
local o=ext.band(ext.rshift(a["CLK_CLK_PLLCTL"],9),31)+2
local i={1,2,2,4}
local a=i[ext.band(ext.rshift(a["CLK_CLK_PLLCTL"],14),3)+1]
e=e*n/o/a
t=string.format("PLL clock (%sHz), from %s",val2str(e),t)
end
else
t="PLL clock from "..t
end
end
return e,t
end
function get_sys_clock(o,a,n)
local t
local e
table.insert(a,"CLK_CLK_CLKSEL0")
local i=ext.band(o["CLK_CLK_CLKSEL0"],7)
if i==0 then
t,e=get_HXT_clock(o,a)
elseif i==1 then
t,e=get_LXT_clock(o,a)
elseif i==2 then
if is_PLL_supported()then
t,e=get_PLL_clock(o,a)
else
t,e=get_HIRC_clock(o,a)
end
elseif i==3 then
t,e=get_LIRC_clock(o,a)
elseif i==7 then
t,e=get_HIRC_clock(o,a)
else
t=0
e="invalid "..n.." clock (see CLK_CLKSEL0[2:0].HCLKSEL)"
return t,e
end
if t==0 then
e=""..n.." clock from "..e
else
table.insert(a,"CLK_CLK_CLKDIV0")
local a=ext.band(o["CLK_CLK_CLKDIV0"],15)
t=t/(a+1)
e=string.format("%s clock (%sHz), from %s",n,val2str(t),e)
end
return t,e
end
function get_HCLK_clock(e,t)
return get_sys_clock(e,t,"HCLK")
end
function get_PCLK_clock(i,o,a)
local t
local e
t,e=get_HCLK_clock(i,o)
if t==0 then
e=string.format("PCLK%d clock from ",a)..e
else
table.insert(o,"CLK_CLK_PCLKDIV")
local o=ext.band(ext.rshift(i["CLK_CLK_PCLKDIV"],a*4),7)
if o<=4 then
t=ext.rshift(t,o)
e=string.format("PCLK%d clock (%sHz), from %s",
a,val2str(t),e)
else
t=0
e=string.format(" invalid PCLK%d clock (see CLK_PCLKDIV[%d:%d].APB%dDIV)",
a,a*4+2,a*4,a)
end
end
return t,e
end
function fill_M031_GPIO(o,s,t,e,l)
if l==nil then l=string.format("P%s.%d",t,e)end
local a=s["GPIO_P"..t.."_MODE"]
local u=s["GPIO_P"..t.."_DINOFF"]
local r=s["GPIO_P"..t.."_DOUT"]
local h=s["GPIO_P"..t.."_DATMSK"]
local d=s["GPIO_P"..t.."_PIN"]
o["highlight_text"]=l
o["normal_color"]=kColor_Invalid
o["highlight_color"]=kColor_GPIO
o["pin_bg_color"]=kBgColor_GPIO
local i=ext.band(ext.rshift(a,e*2),3)
o["direction"]=n[i]
if n[i]==kPinDirection_In
or n[i]==kPinDirection_Bi then
if ext.band(d,ext.lshift(1,e))==0 then
o["status"]=kPinStatus_Low
else
o["status"]=kPinStatus_High
end
else
if ext.band(h,ext.lshift(1,e))~=0 then
o["status"]=kPinStatus_Unknown
elseif ext.band(r,ext.lshift(1,e))==0 then
o["status"]=kPinStatus_Low
else
o["status"]=kPinStatus_High
end
end
local a=string.format("P%s.%d is in %s mode
",
t,e,c[i])
if n[i]==kPinDirection_In
or n[i]==kPinDirection_Bi then
if ext.band(d,ext.lshift(1,e))==0 then
a=a.."Pin input low
"
else
a=a.."Pin input high
"
end
end
if n[i]==kPinDirection_PushPullOut
or n[i]==kPinDirection_OpenDrainOut
or n[i]==kPinDirection_Bi then
if ext.band(h,ext.lshift(1,e))~=0 then
a=a.."Pin output masked
"
elseif ext.band(r,ext.lshift(1,e))==0 then
a=a.."Pin output low
"
else
a=a.."Pin output high
"
end
end
if ext.band(u,ext.lshift(1,e+16))==0 then
a=a.."IO digital input path enabled
"
else
a=a.."IO digital input path disabled(digital input tied to low)
"
end
local h=""
if n[i]==kPinDirection_PushPullOut
or n[i]==kPinDirection_Bi then
if ext.band(r,ext.lshift(1,e))==0 and ext.band(d,ext.lshift(1,e))~=0 then
h=string.format("Leakage warning: GPIO%s_DOUT[%d] = 0, GPIO%s_PIN[%d] = 1
",t,e,t,e)
elseif ext.band(r,ext.lshift(1,e))~=0 and ext.band(d,ext.lshift(1,e))==0 then
h=string.format("Leakage warning: GPIO%s_DOUT[%d] = 1, GPIO%s_PIN[%d] = 0
",t,e,t,e)
end
end
if h~=""then
o["pin_no_color"]=kBgColor_Error
h=""..h..""
end
local i={
"GPIO_P"..t.."_MODE",
"GPIO_P"..t.."_DINOFF",
"GPIO_P"..t.."_DOUT",
"GPIO_P"..t.."_DATMSK",
"GPIO_P"..t.."_PIN"}
local i=reg2str("GPIO setting registers",g_M031_regs,s,i)
o["information"]=string.format(
"%s
%s
"..
"%s%s"..
"Information
"..
"%s",
l,
h,
get_mfp_regs(s,t,e),
i,
a)
end
function fill_invalid_GPIO(e,o,a,t)
e["highlight_text"]=string.format("P%s.%d",a,t)
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_Invalid
e["pin_bg_color"]=kBgColor_Invalid
e["direction"]=kPinDirection_Unknown
e["status"]=kPinStatus_Unknown
e["pin_no_color"]=kBgColor_Error
local i="Undefined setting in Multi-Function registers for this pin.
"
e["information"]=string.format(
"P%s.%d
%s
"..
"%s",
a,t,
i,
get_mfp_regs(o,a,t))
end
function fill_M031_EADC(a,e,d,l,r)
local n=""
local o=""
local t={}
a["highlight_text"]=r
a["normal_color"]=kColor_Invalid
a["highlight_color"]=kColor_ADC
a["pin_bg_color"]=kBgColor_ADC
a["direction"]=kPinDirection_Unknown
a["status"]=kPinStatus_Unknown
table.insert(t,"CLK_CLK_APBCLK0")
local h=ext.band(ext.rshift(e["CLK_CLK_APBCLK0"],28),1)
if h~=0 then
local i
local a
local s=ext.band(ext.rshift(e["CLK_CLK_CLKSEL2"],20),3)
table.insert(t,"CLK_CLK_CLKSEL2")
if s==0 then
i,a=get_HXT_clock(e,t)
elseif s==1 then
if is_PLL_supported()then
i,a=get_PLL_clock(e,t)
else
i,a=get_PCLK_clock(e,t,1)
end
elseif s==2 then
i,a=get_PCLK_clock(e,t,1)
elseif s==3 then
i,a=get_HIRC_clock(e,t)
end
local e=ext.band(ext.rshift(e["CLK_CLK_CLKDIV0"],16),255)
local e=i/(e+1)
if e~=0 then
table.insert(t,"CLK_CLK_CLKDIV0")
n=string.format("ADC clock frequency: %sHz, from %s.
",val2str(e),a)
else
o="ADC clock is not available, "..a..".
"
end
else
o="ADC clock is not available (see CLK_APBCLK0[28].ADCCKEN).
"
end
if o~=""then
o=""..o..""
a["pin_no_color"]=kBgColor_Error
end
if n~=""then
n="Information
"..n
end
a["information"]=string.format(
"%s
%s
%s%s%s",
r,
o,
get_mfp_regs(e,d,l),
get_clk_informnation(e,t),
n)
return n,o,t,h
end
function fill_M031_EBI(t,a,r,d,h)
local e=""
local o=""
local i={}
t["highlight_text"]=h
t["normal_color"]=kColor_Invalid
t["highlight_color"]=kColor_EBI
t["pin_bg_color"]=kBgColor_EBI
t["direction"]=kPinDirection_PushPullOut
t["status"]=kPinStatus_Unknown
table.insert(i,"CLK_CLK_AHBCLK")
local n=ext.band(ext.rshift(a["CLK_CLK_AHBCLK"],3),1)
if n~=0 then
local s
local n
s,n=get_HCLK_clock(a,i)
if s~=0 then
for t=0,1 do
local o=string.format("EBI_EBI_CTL%d",t)
table.insert(i,o)
local i=ext.band(a[o],1)
if i~=0 then
local i=ext.band(ext.rshift(a[o],8),7)
local i=ext.rshift(s,i)
local a=ext.band(ext.rshift(a[o],1),1)
e=e..string.format("EBI Bank%d MCLK frequency: %sHz, from %s.
",
t,val2str(i),n)
e=e..string.format("EBI Bank%d: address/data bus %s mode, and data width %d-bit
",
t,"multiplex",(a~=0)and 16 or 8)
else
e=e..string.format("EBI Bank%d disabled
",t)
end
end
else
o=string.format("EBI clock is not available, %s.
",n)
end
else
o="EBI clock is not available (see CLK_AHBCLK[3].EBICKEN).
"
end
if o~=""then
o=""..o..""
t["pin_no_color"]=kBgColor_Error
end
if e~=""then
e="Information
"..e
end
t["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
o,
get_mfp_regs(a,r,d),
get_clk_informnation(a,i),
e)
end
function fill_M031_UART(h,t,u,c,l,e)
local r=""
local o=""
local a={}
local d=0
h["highlight_text"]=l
h["normal_color"]=kColor_Invalid
h["highlight_color"]=kColor_UART
h["pin_bg_color"]=kBgColor_UART
h["direction"]=kPinDirection_Unknown
h["status"]=kPinStatus_Unknown
function get_uart_baudate(i)
local h=string.format("UART%d",e)
local e=string.format("UART%d_UART_BAUD",e)
table.insert(a,e)
local o=ext.band(t[e],536870912)
local a=ext.band(t[e],268435456)
local s=ext.rshift(ext.band(t[e],251658240),24)
local t=ext.band(t[e],65535)
local e=0
local n=""
if o==0 and a==0 then
e=i/(16*(t+2))
elseif o~=0 and a==0 then
if s>=8 then
e=i/((s+1)*(t+2))
else
n="invalid "..h.."'s UART_BAUD value, EDIV_M1 must >= 8"
end
elseif o~=0 and a~=0 then
e=i/(t+2)
else
n="invalid "..h.."'s UART_BAUD value"
end
return e,n
end
table.insert(a,"CLK_CLK_APBCLK0")
local i=ext.band(ext.rshift(t["CLK_CLK_APBCLK0"],e+16),1)
if i~=0 then
local i,h
if e<2 then
table.insert(a,"CLK_CLK_CLKSEL1")
table.insert(a,"CLK_CLK_CLKDIV0")
i=ext.band(ext.rshift(t["CLK_CLK_CLKSEL1"],24+e*4),7)
h=ext.band(ext.rshift(t["CLK_CLK_CLKDIV0"],8+e*4),15)
elseif e<4 then
table.insert(a,"CLK_CLK_CLKSEL3")
table.insert(a,"CLK_CLK_CLKDIV4")
i=ext.band(ext.rshift(t["CLK_CLK_CLKSEL3"],24+(e-2)*4),7)
h=ext.band(ext.rshift(t["CLK_CLK_CLKDIV4"],(e-2)*4),15)
elseif e<6 then
table.insert(a,"CLK_CLK_CLKSEL3")
table.insert(a,"CLK_CLK_CLKDIV4")
i=ext.band(ext.rshift(t["CLK_CLK_CLKSEL3"],16+(e-4)*4),7)
h=ext.band(ext.rshift(t["CLK_CLK_CLKDIV4"],(e-4)*4),15)
elseif e<8 then
table.insert(a,"CLK_CLK_CLKSEL3")
table.insert(a,"CLK_CLK_CLKDIV4")
i=ext.band(ext.rshift(t["CLK_CLK_CLKSEL3"],8+(e-6)*4),7)
h=ext.band(ext.rshift(t["CLK_CLK_CLKDIV4"],(e-6)*4),15)
end
local s
local n
if i==0 then
s,n=get_HXT_clock(t,a)
elseif i==1 then
if is_PLL_supported()then
s,n=get_PLL_clock(t,a)
else
s,n=get_PCLK_clock(t,a,ext.band(e,1))
end
elseif i==2 then
s,n=get_LXT_clock(t,a)
elseif i==3 then
s,n=get_HIRC_clock(t,a)
elseif i==4 then
s,n=get_PCLK_clock(t,a,ext.band(e,1))
else
s=0
if e<2 then
o=string.format("UART%d clock is not available (see CLK_CLKSEL1[%d:%d].UART%dSEL).
",
e,24+e*4+2,24+e*4,e)
elseif e<4 then
o=string.format("UART%d clock is not available (see CLK_CLKSEL3[%d:%d].UART%dSEL).
",
e,24+(e-2)*4+2,24+(e-2)*4,e)
elseif e<6 then
o=string.format("UART%d clock is not available (see CLK_CLKSEL3[%d:%d].UART%dSEL).
",
e,16+(e-4)*4+2,16+(e-4)*4,e)
elseif e<8 then
o=string.format("UART%d clock is not available (see CLK_CLKSEL3[%d:%d].UART%dSEL).
",
e,8+(e-6)*4+2,8+(e-6)*4,e)
end
end
if o==""then
d=s/(h+1)
if d~=0 then
r=string.format("UART%d clock frequency: %sHz, from %s.
",e,val2str(d),n)
else
o=string.format("UART%d clock is not available, %s.
",e,n)
end
end
else
o=string.format("UART%d clock is not available (see CLK_APBCLK0[%d].UART%dCKEN).
",
e,e+16,e)
end
if o==""then
local e,t=get_uart_baudate(d)
if e~=0 then
r=r..string.format("UART baudrate: %d
",e)
else
o=t..".
"
end
end
if o~=""then
o=""..o..""
h["pin_no_color"]=kBgColor_Error
end
if r~=""then
r="Information
"..r
end
h["information"]=string.format(
"%s
%s
"..
"%s%s%s",
l,
o,
get_mfp_regs(t,u,c),
get_clk_informnation(t,a),
r)
end
function fill_M031_EPWM(n,a,u,l,d,e,t)
local s=""
local i=""
local o={}
n["highlight_text"]=d
n["normal_color"]=kColor_Invalid
n["highlight_color"]=kColor_PWM
n["pin_bg_color"]=kBgColor_PWM
n["direction"]=kPinDirection_Unknown
n["status"]=kPinStatus_Unknown
if t~=nil then
local t=ext.rshift(t,1)
table.insert(o,"CLK_CLK_APBCLK1")
local n=ext.band(ext.rshift(a["CLK_CLK_APBCLK1"],16+e),1)
if n~=0 then
local n
local h
table.insert(o,"CLK_CLK_CLKSEL2")
local r=ext.band(ext.rshift(a["CLK_CLK_CLKSEL2"],e),1)
if r==0 then
if is_PLL_supported()then
n,h=get_PLL_clock(a,o)
else
n,h=get_PCLK_clock(a,o,ext.band(e,1))
end
else
n,h=get_PCLK_clock(a,o,ext.band(e,1))
end
local r=string.format("PWM%d_PWM_CNTEN",e)
table.insert(o,r)
local r=ext.band(ext.rshift(a[r],2*t),1)
if r==0 then
i=string.format("PWM%d counter%d_%d stops running.
",e,2*t,2*t+1)
else
local r=string.format("PWM%d_PWM_CLKSRC",e)
table.insert(o,r)
local r=ext.band(ext.rshift(a[r],8*t),7)
if r==0 then
if n==0 then
i=string.format("PWM%d clock is not available, %s.
",e,h)
else
local i=string.format("PWM%d_PWM_CLKPSC%d_%d",e,2*t,2*t+1)
table.insert(o,i)
local a=ext.band(a[i],4095)
local a=n/(a+1)
s=string.format("PWM%d clock frequency: %sHz, from %s.
",
e,val2str(n),h)
s=s..string.format("PWM%d counter%d_%d frequency: %sHz (Pre-Scaled)
",
e,2*t,2*t+1,val2str(a))
end
elseif r<=4 then
s=string.format("PWM%d_CH%d%d clock source is from TIMER%d.
",
e,2*t,2*t+1,r-1)
else
i=string.format("PWM%d_CH%d%d clock source is undefined (see PWM_CLKSRC[%d:%d].ECLKSRC%d).
",
e,2*t,2*t+1,8*t+2,8*t,2*t)
end
end
else
i=string.format("PWM%d clock is not available (see CLK_APBCLK1[%d].PWM%dCKEN).
",
e,16+e,e)
end
end
if i~=""then
i=""..i..""
n["pin_no_color"]=kBgColor_Error
end
if s~=""then
s="Information
"..s
end
n["information"]=string.format(
"%s
%s
"..
"%s%s%s",
d,
i,
get_mfp_regs(a,u,l),
get_clk_informnation(a,o),
s)
end
function fill_M031_BPWM(o,t,d,l,r,e,s)
local i=""
local n=""
local a={}
o["highlight_text"]=r
o["normal_color"]=kColor_Invalid
o["highlight_color"]=kColor_PWM
o["pin_bg_color"]=kBgColor_PWM
o["direction"]=kPinDirection_Unknown
o["status"]=kPinStatus_Unknown
if s~=nil then
table.insert(a,"CLK_CLK_APBCLK1")
local o=ext.band(ext.rshift(t["CLK_CLK_APBCLK1"],18+e),1)
if o~=0 then
local o
local s
table.insert(a,"CLK_CLK_CLKSEL2")
local h=ext.band(ext.rshift(t["CLK_CLK_CLKSEL2"],8+e),1)
if h==0 then
if is_PLL_supported()then
o,s=get_PLL_clock(t,a)
else
o,s=get_PCLK_clock(t,a,ext.band(e,1))
end
else
o,s=get_PCLK_clock(t,a,ext.band(e,1))
end
local h=string.format("BPWM%d_BPWM_CNTEN",e)
table.insert(a,h)
local h=ext.band(t[h],1)
if h==0 then
n=string.format("BPWM%d counter stops running.
",e)
else
local h=string.format("BPWM%d_BPWM_CLKSRC",e)
table.insert(a,h)
local h=ext.band(t[h],7)
if h==0 then
if o==0 then
n=string.format("BPWM%d clock is not available, %s.
",e,s)
else
local n=string.format("BPWM%d_BPWM_CLKPSC",e)
table.insert(a,n)
local t=ext.band(t[n],4095)
local t=o/(t+1)
i=string.format("BPWM%d clock frequency: %sHz, from %s.
",
e,val2str(o),s)
i=i..string.format("BPWM%d counter frequency: %sHz (Pre-Scaled)
",
e,val2str(t))
end
elseif h<=4 then
i=string.format("BPWM%d clock source is from TIMER%d.
",e,h-1)
else
n=string.format("BPWM%d clock source is undefined (see BPWM_CLKSRC[2:0].ECLKSRC0).
",e)
end
end
else
n=string.format("BPWM%d clock is not available (see CLK_APBCLK1[%d].BPWM%dCKEN).
",
e,18+e,e)
end
end
if n~=""then
n=""..n..""
o["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
o["information"]=string.format(
"%s
%s
"..
"%s%s%s",
r,
n,
get_mfp_regs(t,d,l),
get_clk_informnation(t,a),
i)
end
function fill_M031_ACMP(e,i,h,r,n)
local t=""
local a=""
local o={}
e["highlight_text"]=n
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_CMP
e["pin_bg_color"]=kBgColor_CMP
e["direction"]=kPinDirection_Unknown
e["status"]=kPinStatus_Unknown
table.insert(o,"CLK_CLK_APBCLK0")
local s=ext.band(ext.rshift(i["CLK_CLK_APBCLK0"],7),1)
if s==0 then
a="ACMP clock is not available (see CLK_APBCLK0[7].ACMP01CKEN).
"
a=""..a..""
e["pin_no_color"]=kBgColor_Error
end
if t~=""then
t="Information
"..t
end
e["information"]=string.format(
"%s
%s
"..
"%s%s%s",
n,
a,
get_mfp_regs(i,h,r),
get_clk_informnation(i,o),
t)
return t,a,o,s
end
function fill_M031_TM(o,t,d,l,r,e)
local i=""
local n=""
local a={}
o["highlight_text"]=r
o["normal_color"]=kColor_Invalid
o["highlight_color"]=kColor_TM
o["pin_bg_color"]=kBgColor_TM
o["direction"]=kPinDirection_Unknown
o["status"]=kPinStatus_Unknown
table.insert(a,"CLK_CLK_APBCLK0")
local s=ext.band(ext.rshift(t["CLK_CLK_APBCLK0"],e+2),1)
if s~=0 then
local o=string.format("TMR%d%d_TIMER%d_CTL",ext.rshift(e,1)*2,ext.rshift(e,1)*2+1,e)
table.insert(a,o)
local o=ext.band(ext.rshift(t[o],24),1)
if o~=0 then
i=string.format("TMR%d external counting pin function enabled.
",e)
else
local s
local o
table.insert(a,"CLK_CLK_CLKSEL1")
local h=ext.band(ext.rshift(t["CLK_CLK_CLKSEL1"],8+e*4),7)
if h==0 then
s,o=get_HXT_clock(t,a)
elseif h==1 then
s,o=get_LXT_clock(t,a)
elseif h==2 then
if e==0 or e==1 then
s,o=get_PCLK_clock(t,a,0)
else
s,o=get_PCLK_clock(t,a,1)
end
elseif h==3 then
i=string.format("TMR%d clock source is from external clock TM%d pin.
",e,e)
elseif h==5 then
s,o=get_LIRC_clock(t,a)
elseif h==7 then
s,o=get_HIRC_clock(t,a)
else
n=string.format("TMR%d clock source is undefined (see CLK_CLKSEL1[%d:%d].TMR%dSEL).
",
e,8+e*4+2,8+e*4,e)
end
if n==""and i==""then
if s~=0 then
i=string.format("TMR%d clock frequency: %sHz, from %s.
",
e,val2str(s),o)
else
n=string.format("TMR%d clock is not available, %s.
",e,o)
end
end
end
else
n=string.format("TMR%d clock is not available (see CLK_APBCLK0[%d].TMR%dCKEN).
",e,e+2,e)
end
if n~=""then
n=""..n..""
o["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
o["information"]=string.format(
"%s
%s
"..
"%s%s%s",
r,
n,
get_mfp_regs(t,d,l),
get_clk_informnation(t,a),
i)
end
function fill_M031_I2C(a,o,d,r,h,e)
local i=""
local t=""
local n={}
a["highlight_text"]=h
a["normal_color"]=kColor_Invalid
a["highlight_color"]=kColor_I2C
a["pin_bg_color"]=kBgColor_I2C
a["direction"]=kPinDirection_Unknown
a["status"]=kPinStatus_Unknown
table.insert(n,"CLK_CLK_APBCLK0")
local s=ext.band(ext.rshift(o["CLK_CLK_APBCLK0"],8+e),1)
if s~=0 then
local a=string.format("I2C%d_I2C_CTL0",e)
local h=string.format("I2C%d_I2C_CLKDIV",e)
table.insert(n,a)
local a=ext.band(ext.rshift(o[a],6),1)
if a~=0 then
local s
local a
s,a=get_PCLK_clock(o,n,ext.band(e,1))
if s~=0 then
table.insert(n,h)
local o=ext.band(o[h],1023)
if o<4 then
t=string.format("Invalid I2C%d's I2C_CLKDIV value, I2C_CLKDIV must >= 4.
",e)
else
local t=s/(4*(o+1))
i=i..string.format("I2C%d clock frequency: %sHz, from %s.
",e,val2str(t),a)
end
else
t=string.format("I2C%d clock is not available, %s.
",e,a)
end
else
t=string.format("I2C%d controller disabled (see I2C%d_I2C_CTL0[6].I2CEN).
",e,e)
end
else
t=string.format("I2C%d clock is not available (see CLK_APBCLK0[%d].I2C%dCKEN).
",e,8+e,e)
end
if t~=""then
t=""..t..""
a["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
a["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
t,
get_mfp_regs(o,d,r),
get_clk_informnation(o,n),
i)
end
function fill_M031_SPI(s,e,c,m,u,r)
local a=""
local d=""
local t={}
s["highlight_text"]=u
s["normal_color"]=kColor_Invalid
s["highlight_color"]=kColor_SPI
s["pin_bg_color"]=kBgColor_SPI
s["direction"]=kPinDirection_Unknown
s["status"]=kPinStatus_Unknown
local l
local i
if r==16 then
i="QSPI0"
l=true
else
i=string.format("SPI%d",r)
l=false
end
local o=0
if r==16 then
table.insert(t,"CLK_CLK_APBCLK0")
o=ext.band(ext.rshift(e["CLK_CLK_APBCLK0"],12),1)
else
table.insert(t,"CLK_CLK_APBCLK0")
o=ext.band(ext.rshift(e["CLK_CLK_APBCLK0"],r+13),1)
end
if o~=0 then
local o
local n
table.insert(t,"CLK_CLK_CLKSEL2")
local h=0
if r==16 then
h=ext.band(ext.rshift(e["CLK_CLK_CLKSEL2"],2),3)
if h==0 then
o,n=get_HXT_clock(e,t)
elseif h==1 then
if is_PLL_supported()then
o,n=get_PLL_clock(e,t)
else
o,n=get_PCLK_clock(e,t,0)
end
elseif h==2 then
o,n=get_PCLK_clock(e,t,0)
else
o,n=get_HIRC_clock(e,t)
end
else
h=ext.band(ext.rshift(e["CLK_CLK_CLKSEL2"],2*r+4),3)
if h==0 then
o,n=get_HXT_clock(e,t)
elseif h==1 then
if is_PLL_supported()then
o,n=get_PLL_clock(e,t)
else
o,n=get_PCLK_clock(e,t,1)
end
elseif h==2 then
o,n=get_PCLK_clock(e,t,1)
else
o,n=get_HIRC_clock(e,t)
end
end
if o~=0 then
local h=0
if not l then
local n=string.format("%s_SPIx_I2SCTL",i)
local r=string.format("%s_SPIx_I2SCLK",i)
table.insert(t,n)
h=ext.band(e[n],1)
if h~=0 then
a=string.format("I2S controller enabled.
")
local n=ext.band(ext.rshift(e[n],8),1)
if n==0 then
table.insert(t,r)
local t=ext.band(ext.rshift(e[r],8),1023)
local e=ext.band(e[r],127)
local n=o/(2*(t+1))
local t=o
if e~=0 then
t=o/(2*e)
end
a=a..string.format("%s_I2S is in master mode.
",i)
a=a..string.format("BCLK frequency: %sHz
",val2str(n))
a=a..string.format("MCLK frequency: %sHz
",val2str(t))
else
a=a..string.format("%s_I2S is in slave mode.
",i)
end
s["highlight_color"]=kColor_I2S
s["pin_bg_color"]=kBgColor_I2S
s["direction"]=kPinDirection_Unknown
end
end
if h==0 then
local h=string.format("%s_SPIx_CTL",i)
local s=string.format("%s_SPIx_CLKDIV",i)
table.insert(t,h)
local h=ext.band(ext.rshift(e[h],18),1)
if h~=0 then
a=string.format("%s is in slave mode.
",i)
else
a=string.format("%s is in master mode.
",i)
table.insert(t,s)
local e=ext.band(e[s],511)
local e=o/(e+1)
a=a..string.format("%s clock frequency: %sHz, from %s.
",
i,val2str(e),n)
end
end
else
d=string.format("%s clock is not available, %s.
",i,n)
end
else
if r==16 then
d="QSPI0 clock is not available (see CLK_APBCLK0[12].QSPI0CKEN).
"
else
d=string.format("%s clock is not available (see CLK_APBCLK0[%d].%sCKEN).
",
i,r+13,i)
end
end
if d~=""then
d=""..d..""
s["pin_no_color"]=kBgColor_Error
end
if a~=""then
a="Information
"..a
end
s["information"]=string.format(
"%s
%s
"..
"%s%s%s",
u,
d,
get_mfp_regs(e,c,m),
get_clk_informnation(e,t),
a)
end
function fill_M031_SPI_IO(e,n,i,a)
local o
local t
if i==16 then
t="QSPI0"
o=true
else
t=string.format("SPI%d",i)
o=false
end
if not o then
local t=string.format("%s_SPIx_I2SCTL",t)
local t=ext.band(n[t],1)
if t~=0 then
if a then
e["direction"]=kPinDirection_In
else
e["direction"]=kPinDirection_PushPullOut
end
return
end
end
local t=string.format("%s_SPIx_CTL",t)
local t=ext.band(ext.rshift(n[t],18),1)
if t==0 then
if a then
e["direction"]=kPinDirection_In
else
e["direction"]=kPinDirection_PushPullOut
end
else
if a then
e["direction"]=kPinDirection_PushPullOut
else
e["direction"]=kPinDirection_In
end
end
end
function fill_M031_QSPI(i,n,o,e,t,a)
fill_M031_SPI(i,n,o,e,t,16+a)
end
function fill_M031_QSPI_IO(a,o,t,e)
fill_M031_SPI_IO(a,o,16+t,e)
end
function fill_M031_USCI(i,a,m,f,c,e)
local t=""
local o=""
local n={}
i["highlight_text"]=c
i["normal_color"]=kColor_Invalid
i["highlight_color"]=kColor_USCI
i["pin_bg_color"]=kBgColor_USCI
i["direction"]=kPinDirection_Unknown
i["status"]=kPinStatus_Unknown
table.insert(n,"CLK_CLK_APBCLK1")
local s=ext.band(ext.rshift(a["CLK_CLK_APBCLK1"],8+e),1)
if s~=0 then
local i=string.format("USCI%d_USCI_CTL",e)
table.insert(n,i)
local h=ext.band(a[i],7)
local i=string.format("USCI%d_USCI_BRGEN",e)
table.insert(n,i)
local s=ext.band(a[i],1)
local l=ext.band(ext.rshift(a[i],1),1)
local r=ext.band(ext.rshift(a[i],2),3)
local m=ext.band(ext.rshift(a[i],10),31)
local w=ext.band(ext.rshift(a[i],8),3)
local f=ext.band(ext.rshift(a[i],16),1023)
local i=string.format("USCI%d_USCI_PROTCTL",e)
table.insert(n,i)
local d=ext.band(ext.rshift(a[i],31),1)
local c=ext.band(a[i],1)
local s
local i
s,i=get_PCLK_clock(a,n,ext.band(e,1))
local n=s
local a=n/2
local u=(l==0)and n or a
local l=u/(f+1)
local f=l/2
local a
if r==0 then
a=l
elseif r==1 then
a=u
elseif r==2 then
a=f
elseif r==3 then
a=n
end
if s~=0 then
if h==0 then
t=string.format("USCI%d is in idle state.
",e)
elseif h==1 then
if c==0 then
t=string.format("USCI%d is in SPI master mode.
",e)
else
t=string.format("USCI%d is in SPI slave mode.
",e)
end
if d==0 then
o=string.format("SPI protocol disabled (see USCI%d_USCI_PROTCTL[31].PROTEN)
",e)
elseif c==0 then
local a=a/2
t=t..string.format("USPI%d clock frequency: %sHz, from %s.
",e,val2str(a),i)
end
elseif h==2 then
t=string.format("USCI%d is in UART mode.
",e)
if d==0 then
o=string.format("UART protocol disabled (see USCI%d_USCI_PROTCTL[31].PROTEN)
",e)
else
t=t..string.format("UUART%d clock frequency: %sHz, from %s.
",e,val2str(s),i)
local e=a/(m+1)/(w+1)
t=t..string.format("UART baudrate: %d
",e)
end
elseif h==4 then
t=string.format("USCI%d is in I2C mode.
",e)
if d==0 then
o=string.format("I2C protocol disabled (see USCI%d_USCI_PROTCTL[31].PROTEN)
",e)
else
local a=a/2
t=t..string.format("UI2C%d clock frequency: %sHz, from %s.
",e,val2str(a),i)
end
else
o=string.format("Undefined function mode (see USCI_CTL[2:0].FUNMODE).
")
end
else
o=string.format("USCI%d clock is not available, %s.
",e,i)
end
else
o=string.format("USCI%d clock is not available (see CLK_APBCLK1[%d].USCI%dCKEN).
",e,8+e,e)
end
if o~=""then
o=""..o..""
i["pin_no_color"]=kBgColor_Error
end
if t~=""then
t="Information
"..t
end
i["information"]=string.format(
"%s
%s
"..
"%s%s%s",
c,
o,
get_mfp_regs(a,m,f),
get_clk_informnation(a,n),
t)
end
function fill_M031_USCI_IO(e,o,i,a)
local t=string.format("USCI%d_USCI_CTL",i)
local t=ext.band(o[t],7)
if t==0 then
elseif t==1 then
local t=string.format("USCI%d_USCI_PROTCTL",i)
local t=ext.band(o[t],1)
if t==0 then
if a==0 then
e["direction"]=kPinDirection_PushPullOut
else
e["direction"]=kPinDirection_In
end
else
if a==0 then
e["direction"]=kPinDirection_In
else
e["direction"]=kPinDirection_PushPullOut
end
end
elseif t==2 then
if a==0 then
e["direction"]=kPinDirection_In
else
e["direction"]=kPinDirection_PushPullOut
end
elseif t==4 then
end
end
function fill_M031_USB(e,a,r,h,s)
local o=""
local t=""
local i={}
e["highlight_text"]=s
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_USB
e["pin_bg_color"]=kBgColor_USB
e["direction"]=kPinDirection_Unknown
e["status"]=kPinStatus_Unknown
table.insert(i,"CLK_CLK_APBCLK0")
local n=ext.band(a["CLK_CLK_APBCLK0"],ext.lshift(1,27))
if n~=0 then
local e
local n
e,n=get_PCLK_clock(a,i,0)
table.insert(i,"CLK_CLK_CLKDIV0")
local a=ext.band(ext.rshift(a["CLK_CLK_CLKDIV0"],4),15)
e=e/(a+1)
if e~=0 then
o=string.format("USB clock frequency: %sHz, from %s.
",val2str(e),n)
else
t="USB clock is not available, "..n..".
"
end
else
t="USB clock is not available (see CLK_APBCLK0[27].USBDCKEN).
"
end
if t~=""then
t=""..t..""
e["pin_no_color"]=kBgColor_Error
end
if o~=""then
o="Information
"..o
end
if r~=nil and h~=nil then
e["information"]=string.format(
"%s
%s
"..
"%s%s%s",
s,
t,
get_mfp_regs(a,r,h),
get_clk_informnation(a,i),
o)
else
e["information"]=string.format(
"%s
%s
"..
"%s%s",
s,
t,
get_clk_informnation(a,i),
o)
end
end
function fill_M031_CLKO(n,e,r,d,h)
local s=""
local i=""
local t={}
n["highlight_text"]=h
n["normal_color"]=kColor_Invalid
n["highlight_color"]=kColor_CLK
n["pin_bg_color"]=kBgColor_CLK
n["direction"]=kPinDirection_PushPullOut
n["status"]=kPinStatus_Unknown
table.insert(t,"CLK_CLK_APBCLK0")
local a=ext.band(ext.rshift(e["CLK_CLK_APBCLK0"],6),1)
if a~=0 then
table.insert(t,"CLK_CLK_CLKOCTL")
local a=ext.band(ext.rshift(e["CLK_CLK_CLKOCTL"],4),1)
if a~=0 then
local a
local o
table.insert(t,"CLK_CLK_CLKSEL1")
local n=ext.band(ext.rshift(e["CLK_CLK_CLKSEL1"],4),7)
if n==0 then
a,o=get_HXT_clock(e,t)
elseif n==1 then
a,o=get_LXT_clock(e,t)
elseif n==2 then
a,o=get_HCLK_clock(e,t)
elseif n==3 then
a,o=get_HIRC_clock(e,t)
elseif n==4 then
a,o=get_LIRC_clock(e,t)
elseif n==5 then
a,o=get_HIRC_clock(e,t)
elseif n==6 then
if is_PLL_supported()then
a,o=get_PLL_clock(e,t)
else
a,o=get_HIRC_clock(e,t)
end
else
a=0
i="CLKO clock is not available (see CLK_CLKSEL1[6:4].CLKOSEL).
"
end
if i==""then
if a~=0 then
local t=a
local i=ext.band(ext.rshift(e["CLK_CLK_CLKOCTL"],5),1)
if i==0 then
local e=ext.band(e["CLK_CLK_CLKOCTL"],15)
t=a/ext.lshift(1,(e+1))
end
s=string.format("CLKO clock frequency: %sHz, from %s.
",val2str(t),o)
else
i="CLKO clock is not available, "..o..".
"
end
end
else
i="CLKO output function disabled (see CLK_CLKOCTL[4].CLKOEN).
"
end
else
i="CLKO clock is not available (see CLK_APBCLK0[6].CLKOCKEN).
"
end
if i~=""then
i=""..i..""
n["pin_no_color"]=kBgColor_Error
end
if s~=""then
s="Information
"..s
end
n["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
i,
get_mfp_regs(e,r,d),
get_clk_informnation(e,t),
s)
end
function fill_M031_Normal(e,i,a,o,t)
e["highlight_text"]=t
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_Normal
e["pin_bg_color"]=kBgColor_Normal
e["direction"]=kPinDirection_Unknown
e["status"]=kPinStatus_Unknown
if a==nil or o==nil then
e["information"]=string.format(
"%s
",
t)
else
e["information"]=string.format(
"%s
"..
"%s",
t,
get_mfp_regs(i,a,o))
end
end
function fill_M031_Analog(e,n,r,h,s,m,f)
local t=""
local a=""
local d={}
local o={}
local i=""
local l=""
local c={}
local u=0
if f~=nil then
i,l,c,u=fill_M031_ACMP(o,n,r,h,s)
for t,e in ipairs(c)do
table.insert(d,e)
end
if i~=""then
if t~=""then t=t.."
"end
t=t.."ACMP "..i
end
a=a..l
end
local i={}
local l=""
local c=""
local w={}
local f=0
if m~=nil then
l,c,w,f=fill_M031_EADC(i,n,r,h,s,unpack(m))
for t,e in ipairs(w)do
table.insert(d,e)
end
if l~=""then
if t~=""then t=t.."
"end
t=t.."EADC "..l
end
a=a..c
end
if u~=0 then
e["highlight_color"]=o["highlight_color"]
e["pin_bg_color"]=o["pin_bg_color"]
e["pin_no_color"]=o["pin_no_color"]
elseif f~=0 then
e["highlight_color"]=i["highlight_color"]
e["pin_bg_color"]=i["pin_bg_color"]
e["pin_no_color"]=i["pin_no_color"]
else
e["highlight_color"]=kColor_Normal
e["pin_bg_color"]=kBgColor_Normal
if a~=""then
e["pin_no_color"]=kBgColor_Error
end
end
e["highlight_text"]=s
e["normal_color"]=kColor_Invalid
e["direction"]=kPinDirection_Unknown
e["status"]=kPinStatus_Unknown
e["information"]=string.format(
"%s
%s
"..
"%s%s%s",
s,
a,
get_mfp_regs(n,r,h),
get_clk_informnation(n,d),
t)
end