REG=
{
SYS_SYS_PDID=1342177280,
SYS_SYS_RSTSTS=1342177284,
SYS_SYS_IPRST0=1342177288,
SYS_SYS_IPRST1=1342177292,
SYS_SYS_IPRST2=1342177296,
SYS_SYS_BODCTL=1342177304,
SYS_SYS_IVSCTL=1342177308,
SYS_SYS_PORCTL=1342177316,
SYS_SYS_GPA_MFPH=1342177332,
SYS_SYS_GPB_MFPL=1342177336,
SYS_SYS_GPB_MFPH=1342177340,
SYS_SYS_GPC_MFPL=1342177344,
SYS_SYS_GPC_MFPH=1342177348,
SYS_SYS_GPD_MFPL=1342177352,
SYS_SYS_GPD_MFPH=1342177356,
SYS_SYS_GPE_MFPL=1342177360,
SYS_SYS_GPF_MFPL=1342177368,
SYS_SYS_IRCTCTL=1342177408,
SYS_SYS_IRCTIEN=1342177412,
SYS_SYS_IRCTISTS=1342177416,
SYS_SYS_MODCTL=1342177472,
SYS_SYS_REGLCTL=1342177536,
SYS_SYS_TSOFFSET=1342177556,
SCS_SYST_CTRL=3758153744,
SCS_SYST_LOAD=3758153748,
SCS_SYST_VAL=3758153752,
SCS_NVIC_ISER=3758153984,
SCS_NVIC_ICER=3758154112,
SCS_NVIC_ISPR=3758154240,
SCS_NVIC_ICPR=3758154368,
SCS_NVIC_IPR0=3758154752,
SCS_NVIC_IPR1=3758154756,
SCS_NVIC_IPR2=3758154760,
SCS_NVIC_IPR3=3758154764,
SCS_NVIC_IPR4=3758154768,
SCS_NVIC_IPR5=3758154772,
SCS_NVIC_IPR6=3758154776,
SCS_NVIC_IPR7=3758154780,
SCS_SCS_CPUID=3758157056,
SCS_SCS_ICSR=3758157060,
SCS_SCS_AIRCR=3758157068,
SCS_SCS_SCR=3758157072,
SCS_SCS_SHPR2=3758157084,
SCS_SCS_SHPR3=3758157088,
INT_IRQ0_SRC=1342178048,
INT_IRQ1_SRC=1342178052,
INT_IRQ2_SRC=1342178056,
INT_IRQ3_SRC=1342178060,
INT_IRQ4_SRC=1342178064,
INT_IRQ5_SRC=1342178068,
INT_IRQ6_SRC=1342178072,
INT_IRQ7_SRC=1342178076,
INT_IRQ8_SRC=1342178080,
INT_IRQ9_SRC=1342178084,
INT_IRQ10_SRC=1342178088,
INT_IRQ11_SRC=1342178092,
INT_IRQ12_SRC=1342178096,
INT_IRQ13_SRC=1342178100,
INT_IRQ14_SRC=1342178104,
INT_IRQ15_SRC=1342178108,
INT_IRQ16_SRC=1342178112,
INT_IRQ17_SRC=1342178116,
INT_IRQ18_SRC=1342178120,
INT_IRQ19_SRC=1342178124,
INT_IRQ20_SRC=1342178128,
INT_IRQ21_SRC=1342178132,
INT_IRQ22_SRC=1342178136,
INT_IRQ23_SRC=1342178140,
INT_IRQ24_SRC=1342178144,
INT_IRQ25_SRC=1342178148,
INT_IRQ26_SRC=1342178152,
INT_IRQ27_SRC=1342178156,
INT_IRQ28_SRC=1342178160,
INT_IRQ29_SRC=1342178164,
INT_IRQ30_SRC=1342178168,
INT_IRQ31_SRC=1342178172,
INT_NMI_SEL=1342178176,
INT_MCU_IRQ=1342178180,
INT_MCU_IRQCR=1342178184,
CLK_CLK_PWRCTL=1342177792,
CLK_CLK_AHBCLK=1342177796,
CLK_CLK_APBCLK0=1342177800,
CLK_CLK_STATUS=1342177804,
CLK_CLK_CLKSEL0=1342177808,
CLK_CLK_CLKSEL1=1342177812,
CLK_CLK_CLKDIV0=1342177816,
CLK_CLK_CLKSEL2=1342177820,
CLK_CLK_PLLCTL=1342177824,
CLK_CLK_CLKOCTL=1342177828,
CLK_CLK_APBCLK1=1342177840,
CLK_CLK_CLKSEL3=1342177844,
CLK_CLK_CLKDCTL=1342177904,
CLK_CLK_CLKDSTS=1342177908,
CLK_CLK_CDUPB=1342177912,
CLK_CLK_CDLOWB=1342177916,
FMC_FMC_ISPCTL=1342226432,
FMC_FMC_ISPADDR=1342226436,
FMC_FMC_ISPDAT=1342226440,
FMC_FMC_ISPCMD=1342226444,
FMC_FMC_ISPTRG=1342226448,
FMC_FMC_DFBA=1342226452,
FMC_FMC_FTCTL=1342226456,
FMC_FMC_ISPSTS=1342226496,
GPIO_PA_MODE=1342193664,
GPIO_PA_DINOFF=1342193668,
GPIO_PA_DOUT=1342193672,
GPIO_PA_DATMSK=1342193676,
GPIO_PA_PIN=1342193680,
GPIO_PA_DBEN=1342193684,
GPIO_PA_INTTYPE=1342193688,
GPIO_PA_INTEN=1342193692,
GPIO_PA_INTSRC=1342193696,
GPIO_PA_SMTEN=1342193700,
GPIO_PA_SLEWCTL=1342193704,
GPIO_PB_MODE=1342193728,
GPIO_PB_DINOFF=1342193732,
GPIO_PB_DOUT=1342193736,
GPIO_PB_DATMSK=1342193740,
GPIO_PB_PIN=1342193744,
GPIO_PB_DBEN=1342193748,
GPIO_PB_INTTYPE=1342193752,
GPIO_PB_INTEN=1342193756,
GPIO_PB_INTSRC=1342193760,
GPIO_PB_SMTEN=1342193764,
GPIO_PB_SLEWCTL=1342193768,
GPIO_PC_MODE=1342193792,
GPIO_PC_DINOFF=1342193796,
GPIO_PC_DOUT=1342193800,
GPIO_PC_DATMSK=1342193804,
GPIO_PC_PIN=1342193808,
GPIO_PC_DBEN=1342193812,
GPIO_PC_INTTYPE=1342193816,
GPIO_PC_INTEN=1342193820,
GPIO_PC_INTSRC=1342193824,
GPIO_PC_SMTEN=1342193828,
GPIO_PC_SLEWCTL=1342193832,
GPIO_PC_DRVCTL=1342193836,
GPIO_PD_MODE=1342193856,
GPIO_PD_DINOFF=1342193860,
GPIO_PD_DOUT=1342193864,
GPIO_PD_DATMSK=1342193868,
GPIO_PD_PIN=1342193872,
GPIO_PD_DBEN=1342193876,
GPIO_PD_INTTYPE=1342193880,
GPIO_PD_INTEN=1342193884,
GPIO_PD_INTSRC=1342193888,
GPIO_PD_SMTEN=1342193892,
GPIO_PD_SLEWCTL=1342193896,
GPIO_PE_MODE=1342193920,
GPIO_PE_DINOFF=1342193924,
GPIO_PE_DOUT=1342193928,
GPIO_PE_DATMSK=1342193932,
GPIO_PE_PIN=1342193936,
GPIO_PE_DBEN=1342193940,
GPIO_PE_INTTYPE=1342193944,
GPIO_PE_INTEN=1342193948,
GPIO_PE_INTSRC=1342193952,
GPIO_PE_SMTEN=1342193956,
GPIO_PE_SLEWCTL=1342193960,
GPIO_PF_MODE=1342193984,
GPIO_PF_DINOFF=1342193988,
GPIO_PF_DOUT=1342193992,
GPIO_PF_DATMSK=1342193996,
GPIO_PF_PIN=1342194000,
GPIO_PF_DBEN=1342194004,
GPIO_PF_INTTYPE=1342194008,
GPIO_PF_INTEN=1342194012,
GPIO_PF_INTSRC=1342194016,
GPIO_PF_SMTEN=1342194020,
GPIO_PF_SLEWCTL=1342194024,
GPIO_GPIO_DBCTL=1342194048,
GPIO_PA0_PDIO=1342194176,
GPIO_PA1_PDIO=1342194180,
GPIO_PA2_PDIO=1342194184,
GPIO_PA3_PDIO=1342194188,
GPIO_PA4_PDIO=1342194192,
GPIO_PA5_PDIO=1342194196,
GPIO_PA6_PDIO=1342194200,
GPIO_PA7_PDIO=1342194204,
GPIO_PA8_PDIO=1342194208,
GPIO_PA9_PDIO=1342194212,
GPIO_PA10_PDIO=1342194216,
GPIO_PA11_PDIO=1342194220,
GPIO_PA12_PDIO=1342194224,
GPIO_PA13_PDIO=1342194228,
GPIO_PA14_PDIO=1342194232,
GPIO_PA15_PDIO=1342194236,
GPIO_PB0_PDIO=1342194240,
GPIO_PB1_PDIO=1342194244,
GPIO_PB2_PDIO=1342194248,
GPIO_PB3_PDIO=1342194252,
GPIO_PB4_PDIO=1342194256,
GPIO_PB5_PDIO=1342194260,
GPIO_PB6_PDIO=1342194264,
GPIO_PB7_PDIO=1342194268,
GPIO_PB8_PDIO=1342194272,
GPIO_PB9_PDIO=1342194276,
GPIO_PB10_PDIO=1342194280,
GPIO_PB11_PDIO=1342194284,
GPIO_PB12_PDIO=1342194288,
GPIO_PB13_PDIO=1342194292,
GPIO_PB14_PDIO=1342194296,
GPIO_PB15_PDIO=1342194300,
GPIO_PC0_PDIO=1342194304,
GPIO_PC1_PDIO=1342194308,
GPIO_PC2_PDIO=1342194312,
GPIO_PC3_PDIO=1342194316,
GPIO_PC4_PDIO=1342194320,
GPIO_PC5_PDIO=1342194324,
GPIO_PC6_PDIO=1342194328,
GPIO_PC7_PDIO=1342194332,
GPIO_PC8_PDIO=1342194336,
GPIO_PC9_PDIO=1342194340,
GPIO_PC10_PDIO=1342194344,
GPIO_PC11_PDIO=1342194348,
GPIO_PC12_PDIO=1342194352,
GPIO_PC13_PDIO=1342194356,
GPIO_PC14_PDIO=1342194360,
GPIO_PC15_PDIO=1342194364,
GPIO_PD0_PDIO=1342194368,
GPIO_PD1_PDIO=1342194372,
GPIO_PD2_PDIO=1342194376,
GPIO_PD3_PDIO=1342194380,
GPIO_PD4_PDIO=1342194384,
GPIO_PD5_PDIO=1342194388,
GPIO_PD6_PDIO=1342194392,
GPIO_PD7_PDIO=1342194396,
GPIO_PD8_PDIO=1342194400,
GPIO_PD9_PDIO=1342194404,
GPIO_PD10_PDIO=1342194408,
GPIO_PD11_PDIO=1342194412,
GPIO_PD12_PDIO=1342194416,
GPIO_PD13_PDIO=1342194420,
GPIO_PD14_PDIO=1342194424,
GPIO_PD15_PDIO=1342194428,
GPIO_PE0_PDIO=1342194432,
GPIO_PE1_PDIO=1342194436,
GPIO_PE2_PDIO=1342194440,
GPIO_PF0_PDIO=1342194496,
GPIO_PF1_PDIO=1342194500,
GPIO_PF2_PDIO=1342194504,
GPIO_PF3_PDIO=1342194508,
GPIO_PF4_PDIO=1342194512,
GPIO_PF5_PDIO=1342194516,
GPIO_PF6_PDIO=1342194520,
GPIO_PF7_PDIO=1342194524,
PDMA_PDMA_DSCT0_CTL=1342210048,
PDMA_PDMA_DSCT0_SA=1342210052,
PDMA_PDMA_DSCT0_DA=1342210056,
PDMA_PDMA_DSCT0_FIRST=1342210060,
PDMA_PDMA_DSCT1_CTL=1342210064,
PDMA_PDMA_DSCT1_SA=1342210068,
PDMA_PDMA_DSCT1_DA=1342210072,
PDMA_PDMA_DSCT1_FIRST=1342210076,
PDMA_PDMA_DSCT2_CTL=1342210080,
PDMA_PDMA_DSCT2_SA=1342210084,
PDMA_PDMA_DSCT2_DA=1342210088,
PDMA_PDMA_DSCT2_FIRST=1342210092,
PDMA_PDMA_DSCT3_CTL=1342210096,
PDMA_PDMA_DSCT3_SA=1342210100,
PDMA_PDMA_DSCT3_DA=1342210104,
PDMA_PDMA_DSCT3_FIRST=1342210108,
PDMA_PDMA_DSCT4_CTL=1342210112,
PDMA_PDMA_DSCT4_SA=1342210116,
PDMA_PDMA_DSCT4_DA=1342210120,
PDMA_PDMA_DSCT4_FIRST=1342210124,
PDMA_PDMA_CURSCAT0=1342210128,
PDMA_PDMA_CURSCAT1=1342210132,
PDMA_PDMA_CURSCAT2=1342210136,
PDMA_PDMA_CURSCAT3=1342210140,
PDMA_PDMA_CURSCAT4=1342210144,
PDMA_PDMA_CHCTL=1342211072,
PDMA_PDMA_PAUSE=1342211076,
PDMA_PDMA_SWREQ=1342211080,
PDMA_PDMA_TRGSTS=1342211084,
PDMA_PDMA_PRISET=1342211088,
PDMA_PDMA_PRICLR=1342211092,
PDMA_PDMA_INTEN=1342211096,
PDMA_PDMA_INTSTS=1342211100,
PDMA_PDMA_ABTSTS=1342211104,
PDMA_PDMA_TDSTS=1342211108,
PDMA_PDMA_SCATSTS=1342211112,
PDMA_PDMA_TACTSTS=1342211116,
PDMA_PDMA_TOUTPSC=1342211120,
PDMA_PDMA_TOUTEN=1342211124,
PDMA_PDMA_TOUTIEN=1342211128,
PDMA_PDMA_SCATBA=1342211132,
PDMA_PDMA_TOC0_1=1342211136,
PDMA_PDMA_RESET=1342211168,
PDMA_PDMA_REQSEL0_3=1342211200,
PDMA_PDMA_REQSEL4=1342211204,
TMR01_TIMER0_CTL=1073807360,
TMR01_TIMER2_CTL=1073807360,
TMR01_TIMER0_CMP=1073807364,
TMR01_TIMER2_CMP=1073807364,
TMR01_TIMER0_INTSTS=1073807368,
TMR01_TIMER2_INTSTS=1073807368,
TMR01_TIMER0_CNT=1073807372,
TMR01_TIMER2_CNT=1073807372,
TMR01_TIMER0_CAP=1073807376,
TMR01_TIMER2_CAP=1073807376,
TMR01_TIMER0_EXTCTL=1073807380,
TMR01_TIMER2_EXTCTL=1073807380,
TMR01_TIMER0_EINTSTS=1073807384,
TMR01_TIMER2_EINTSTS=1073807384,
TMR01_TIMER1_CTL=1073807392,
TMR01_TIMER3_CTL=1073807392,
TMR01_TIMER1_CMP=1073807396,
TMR01_TIMER3_CMP=1073807396,
TMR01_TIMER1_INTSTS=1073807400,
TMR01_TIMER3_INTSTS=1073807400,
TMR01_TIMER1_CNT=1073807404,
TMR01_TIMER3_CNT=1073807404,
TMR01_TIMER1_CAP=1073807408,
TMR01_TIMER3_CAP=1073807408,
TMR01_TIMER1_EXTCTL=1073807412,
TMR01_TIMER3_EXTCTL=1073807412,
TMR01_TIMER1_EINTSTS=1073807416,
TMR01_TIMER3_EINTSTS=1073807416,
TMR23_TIMER0_CTL=1073811456,
TMR23_TIMER2_CTL=1073811456,
TMR23_TIMER0_CMP=1073811460,
TMR23_TIMER2_CMP=1073811460,
TMR23_TIMER0_INTSTS=1073811464,
TMR23_TIMER2_INTSTS=1073811464,
TMR23_TIMER0_CNT=1073811468,
TMR23_TIMER2_CNT=1073811468,
TMR23_TIMER0_CAP=1073811472,
TMR23_TIMER2_CAP=1073811472,
TMR23_TIMER0_EXTCTL=1073811476,
TMR23_TIMER2_EXTCTL=1073811476,
TMR23_TIMER0_EINTSTS=1073811480,
TMR23_TIMER2_EINTSTS=1073811480,
TMR23_TIMER1_CTL=1073811488,
TMR23_TIMER3_CTL=1073811488,
TMR23_TIMER1_CMP=1073811492,
TMR23_TIMER3_CMP=1073811492,
TMR23_TIMER1_INTSTS=1073811496,
TMR23_TIMER3_INTSTS=1073811496,
TMR23_TIMER1_CNT=1073811500,
TMR23_TIMER3_CNT=1073811500,
TMR23_TIMER1_CAP=1073811504,
TMR23_TIMER3_CAP=1073811504,
TMR23_TIMER1_EXTCTL=1073811508,
TMR23_TIMER3_EXTCTL=1073811508,
TMR23_TIMER1_EINTSTS=1073811512,
TMR23_TIMER3_EINTSTS=1073811512,
BPWM0_BPWM_CTL0=1074003968,
BPWM0_BPWM_CTL1=1074003972,
BPWM0_BPWM_CLKSRC=1074003984,
BPWM0_BPWM_CLKPSC=1074003988,
BPWM0_BPWM_CNTEN=1074004000,
BPWM0_BPWM_CNTCLR=1074004004,
BPWM0_BPWM_PERIOD=1074004016,
BPWM0_BPWM_CMPDAT0=1074004048,
BPWM0_BPWM_CMPDAT1=1074004052,
BPWM0_BPWM_CMPDAT2=1074004056,
BPWM0_BPWM_CMPDAT3=1074004060,
BPWM0_BPWM_CMPDAT4=1074004064,
BPWM0_BPWM_CMPDAT5=1074004068,
BPWM0_BPWM_CNT=1074004112,
BPWM0_BPWM_WGCTL0=1074004144,
BPWM0_BPWM_WGCTL1=1074004148,
BPWM0_BPWM_MSKEN=1074004152,
BPWM0_BPWM_MSK=1074004156,
BPWM0_BPWM_POLCTL=1074004180,
BPWM0_BPWM_POEN=1074004184,
BPWM0_BPWM_INTEN=1074004192,
BPWM0_BPWM_INTSTS0=1074004200,
BPWM0_BPWM_ADCTS0=1074004216,
BPWM0_BPWM_ADCTS1=1074004220,
BPWM0_BPWM_SSCTL=1074004240,
BPWM0_BPWM_SSTRG=1074004244,
BPWM0_BPWM_STATUS=1074004256,
BPWM0_BPWM_CAPINEN=1074004480,
BPWM0_BPWM_CAPCTL=1074004484,
BPWM0_BPWM_CAPSTS=1074004488,
BPWM0_BPWM_RCAPDAT0=1074004492,
BPWM0_BPWM_FCAPDAT0=1074004496,
BPWM0_BPWM_RCAPDAT1=1074004500,
BPWM0_BPWM_FCAPDAT1=1074004504,
BPWM0_BPWM_RCAPDAT2=1074004508,
BPWM0_BPWM_FCAPDAT2=1074004512,
BPWM0_BPWM_RCAPDAT3=1074004516,
BPWM0_BPWM_FCAPDAT3=1074004520,
BPWM0_BPWM_RCAPDAT4=1074004524,
BPWM0_BPWM_FCAPDAT4=1074004528,
BPWM0_BPWM_RCAPDAT5=1074004532,
BPWM0_BPWM_FCAPDAT5=1074004536,
BPWM0_BPWM_CAPIEN=1074004560,
BPWM0_BPWM_CAPIF=1074004564,
BPWM0_BPWM_PBUF=1074004740,
BPWM0_BPWM_CMPBUF0=1074004764,
BPWM0_BPWM_CMPBUF1=1074004768,
BPWM0_BPWM_CMPBUF2=1074004772,
BPWM0_BPWM_CMPBUF3=1074004776,
BPWM0_BPWM_CMPBUF4=1074004780,
BPWM0_BPWM_CMPBUF5=1074004784,
BPWM1_BPWM_CTL0=1075052544,
BPWM1_BPWM_CTL1=1075052548,
BPWM1_BPWM_CLKSRC=1075052560,
BPWM1_BPWM_CLKPSC=1075052564,
BPWM1_BPWM_CNTEN=1075052576,
BPWM1_BPWM_CNTCLR=1075052580,
BPWM1_BPWM_PERIOD=1075052592,
BPWM1_BPWM_CMPDAT0=1075052624,
BPWM1_BPWM_CMPDAT1=1075052628,
BPWM1_BPWM_CMPDAT2=1075052632,
BPWM1_BPWM_CMPDAT3=1075052636,
BPWM1_BPWM_CMPDAT4=1075052640,
BPWM1_BPWM_CMPDAT5=1075052644,
BPWM1_BPWM_CNT=1075052688,
BPWM1_BPWM_WGCTL0=1075052720,
BPWM1_BPWM_WGCTL1=1075052724,
BPWM1_BPWM_MSKEN=1075052728,
BPWM1_BPWM_MSK=1075052732,
BPWM1_BPWM_POLCTL=1075052756,
BPWM1_BPWM_POEN=1075052760,
BPWM1_BPWM_INTEN=1075052768,
BPWM1_BPWM_INTSTS0=1075052776,
BPWM1_BPWM_ADCTS0=1075052792,
BPWM1_BPWM_ADCTS1=1075052796,
BPWM1_BPWM_SSCTL=1075052816,
BPWM1_BPWM_SSTRG=1075052820,
BPWM1_BPWM_STATUS=1075052832,
BPWM1_BPWM_CAPINEN=1075053056,
BPWM1_BPWM_CAPCTL=1075053060,
BPWM1_BPWM_CAPSTS=1075053064,
BPWM1_BPWM_RCAPDAT0=1075053068,
BPWM1_BPWM_FCAPDAT0=1075053072,
BPWM1_BPWM_RCAPDAT1=1075053076,
BPWM1_BPWM_FCAPDAT1=1075053080,
BPWM1_BPWM_RCAPDAT2=1075053084,
BPWM1_BPWM_FCAPDAT2=1075053088,
BPWM1_BPWM_RCAPDAT3=1075053092,
BPWM1_BPWM_FCAPDAT3=1075053096,
BPWM1_BPWM_RCAPDAT4=1075053100,
BPWM1_BPWM_FCAPDAT4=1075053104,
BPWM1_BPWM_RCAPDAT5=1075053108,
BPWM1_BPWM_FCAPDAT5=1075053112,
BPWM1_BPWM_CAPIEN=1075053136,
BPWM1_BPWM_CAPIF=1075053140,
BPWM1_BPWM_PBUF=1075053316,
BPWM1_BPWM_CMPBUF0=1075053340,
BPWM1_BPWM_CMPBUF1=1075053344,
BPWM1_BPWM_CMPBUF2=1075053348,
BPWM1_BPWM_CMPBUF3=1075053352,
BPWM1_BPWM_CMPBUF4=1075053356,
BPWM1_BPWM_CMPBUF5=1075053360,
PWM0_PWM_CTL0=1074020352,
PWM0_PWM_CTL1=1074020356,
PWM0_PWM_CLKSRC=1074020368,
PWM0_PWM_CLKPSC0_1=1074020372,
PWM0_PWM_CLKPSC2_3=1074020376,
PWM0_PWM_CLKPSC4_5=1074020380,
PWM0_PWM_CNTEN=1074020384,
PWM0_PWM_CNTCLR=1074020388,
PWM0_PWM_PERIOD0=1074020400,
PWM0_PWM_PERIOD2=1074020408,
PWM0_PWM_PERIOD4=1074020416,
PWM0_PWM_CMPDAT0=1074020432,
PWM0_PWM_CMPDAT1=1074020436,
PWM0_PWM_CMPDAT2=1074020440,
PWM0_PWM_CMPDAT3=1074020444,
PWM0_PWM_CMPDAT4=1074020448,
PWM0_PWM_CMPDAT5=1074020452,
PWM0_PWM_DTCTL0_1=1074020464,
PWM0_PWM_DTCTL2_3=1074020468,
PWM0_PWM_DTCTL4_5=1074020472,
PWM0_PWM_CNT0=1074020496,
PWM0_PWM_CNT2=1074020504,
PWM0_PWM_CNT4=1074020512,
PWM0_PWM_WGCTL0=1074020528,
PWM0_PWM_WGCTL1=1074020532,
PWM0_PWM_MSKEN=1074020536,
PWM0_PWM_MSK=1074020540,
PWM0_PWM_BNF=1074020544,
PWM0_PWM_FAILBRK=1074020548,
PWM0_PWM_BRKCTL0_1=1074020552,
PWM0_PWM_BRKCTL2_3=1074020556,
PWM0_PWM_BRKCTL4_5=1074020560,
PWM0_PWM_POLCTL=1074020564,
PWM0_PWM_POEN=1074020568,
PWM0_PWM_SWBRK=1074020572,
PWM0_PWM_INTEN0=1074020576,
PWM0_PWM_INTEN1=1074020580,
PWM0_PWM_INTSTS0=1074020584,
PWM0_PWM_INTSTS1=1074020588,
PWM0_PWM_ADCTS0=1074020600,
PWM0_PWM_ADCTS1=1074020604,
PWM0_PWM_SSCTL=1074020624,
PWM0_PWM_SSTRG=1074020628,
PWM0_PWM_STATUS=1074020640,
PWM0_PWM_CAPINEN=1074020864,
PWM0_PWM_CAPCTL=1074020868,
PWM0_PWM_CAPSTS=1074020872,
PWM0_PWM_RCAPDAT0=1074020876,
PWM0_PWM_FCAPDAT0=1074020880,
PWM0_PWM_RCAPDAT1=1074020884,
PWM0_PWM_FCAPDAT1=1074020888,
PWM0_PWM_RCAPDAT2=1074020892,
PWM0_PWM_FCAPDAT2=1074020896,
PWM0_PWM_RCAPDAT3=1074020900,
PWM0_PWM_FCAPDAT3=1074020904,
PWM0_PWM_RCAPDAT4=1074020908,
PWM0_PWM_FCAPDAT4=1074020912,
PWM0_PWM_RCAPDAT5=1074020916,
PWM0_PWM_FCAPDAT5=1074020920,
PWM0_PWM_PDMACTL=1074020924,
PWM0_PWM_PDMACAP0_1=1074020928,
PWM0_PWM_PDMACAP2_3=1074020932,
PWM0_PWM_PDMACAP4_5=1074020936,
PWM0_PWM_CAPIEN=1074020944,
PWM0_PWM_CAPIF=1074020948,
PWM0_PWM_PBUF0=1074021124,
PWM0_PWM_PBUF2=1074021132,
PWM0_PWM_PBUF4=1074021140,
PWM0_PWM_CMPBUF0=1074021148,
PWM0_PWM_CMPBUF1=1074021152,
PWM0_PWM_CMPBUF2=1074021156,
PWM0_PWM_CMPBUF3=1074021160,
PWM0_PWM_CMPBUF4=1074021164,
PWM0_PWM_CMPBUF5=1074021168,
PWM1_PWM_CTL0=1075068928,
PWM1_PWM_CTL1=1075068932,
PWM1_PWM_CLKSRC=1075068944,
PWM1_PWM_CLKPSC0_1=1075068948,
PWM1_PWM_CLKPSC2_3=1075068952,
PWM1_PWM_CLKPSC4_5=1075068956,
PWM1_PWM_CNTEN=1075068960,
PWM1_PWM_CNTCLR=1075068964,
PWM1_PWM_PERIOD0=1075068976,
PWM1_PWM_PERIOD2=1075068984,
PWM1_PWM_PERIOD4=1075068992,
PWM1_PWM_CMPDAT0=1075069008,
PWM1_PWM_CMPDAT1=1075069012,
PWM1_PWM_CMPDAT2=1075069016,
PWM1_PWM_CMPDAT3=1075069020,
PWM1_PWM_CMPDAT4=1075069024,
PWM1_PWM_CMPDAT5=1075069028,
PWM1_PWM_DTCTL0_1=1075069040,
PWM1_PWM_DTCTL2_3=1075069044,
PWM1_PWM_DTCTL4_5=1075069048,
PWM1_PWM_CNT0=1075069072,
PWM1_PWM_CNT2=1075069080,
PWM1_PWM_CNT4=1075069088,
PWM1_PWM_WGCTL0=1075069104,
PWM1_PWM_WGCTL1=1075069108,
PWM1_PWM_MSKEN=1075069112,
PWM1_PWM_MSK=1075069116,
PWM1_PWM_BNF=1075069120,
PWM1_PWM_FAILBRK=1075069124,
PWM1_PWM_BRKCTL0_1=1075069128,
PWM1_PWM_BRKCTL2_3=1075069132,
PWM1_PWM_BRKCTL4_5=1075069136,
PWM1_PWM_POLCTL=1075069140,
PWM1_PWM_POEN=1075069144,
PWM1_PWM_SWBRK=1075069148,
PWM1_PWM_INTEN0=1075069152,
PWM1_PWM_INTEN1=1075069156,
PWM1_PWM_INTSTS0=1075069160,
PWM1_PWM_INTSTS1=1075069164,
PWM1_PWM_ADCTS0=1075069176,
PWM1_PWM_ADCTS1=1075069180,
PWM1_PWM_SSCTL=1075069200,
PWM1_PWM_SSTRG=1075069204,
PWM1_PWM_STATUS=1075069216,
PWM1_PWM_CAPINEN=1075069440,
PWM1_PWM_CAPCTL=1075069444,
PWM1_PWM_CAPSTS=1075069448,
PWM1_PWM_RCAPDAT0=1075069452,
PWM1_PWM_FCAPDAT0=1075069456,
PWM1_PWM_RCAPDAT1=1075069460,
PWM1_PWM_FCAPDAT1=1075069464,
PWM1_PWM_RCAPDAT2=1075069468,
PWM1_PWM_FCAPDAT2=1075069472,
PWM1_PWM_RCAPDAT3=1075069476,
PWM1_PWM_FCAPDAT3=1075069480,
PWM1_PWM_RCAPDAT4=1075069484,
PWM1_PWM_FCAPDAT4=1075069488,
PWM1_PWM_RCAPDAT5=1075069492,
PWM1_PWM_FCAPDAT5=1075069496,
PWM1_PWM_PDMACTL=1075069500,
PWM1_PWM_PDMACAP0_1=1075069504,
PWM1_PWM_PDMACAP2_3=1075069508,
PWM1_PWM_PDMACAP4_5=1075069512,
PWM1_PWM_CAPIEN=1075069520,
PWM1_PWM_CAPIF=1075069524,
PWM1_PWM_PBUF0=1075069700,
PWM1_PWM_PBUF2=1075069708,
PWM1_PWM_PBUF4=1075069716,
PWM1_PWM_CMPBUF0=1075069724,
PWM1_PWM_CMPBUF1=1075069728,
PWM1_PWM_CMPBUF2=1075069732,
PWM1_PWM_CMPBUF3=1075069736,
PWM1_PWM_CMPBUF4=1075069740,
PWM1_PWM_CMPBUF5=1075069744,
WDT_WDT_CTL=1073758208,
WDT_WDT_ALTCTL=1073758212,
WDT_WDT_RSTCNT=1073758216,
WDT_WDT_VERSION=1073762300,
WWDT_WWDT_RLDCNT=1073758464,
WWDT_WWDT_CTL=1073758468,
WWDT_WWDT_STATUS=1073758472,
WWDT_WWDT_CNT=1073758476,
UUART0_UUART_CTL=1074200576,
UUART0_UUART_INTEN=1074200580,
UUART0_UUART_BRGEN=1074200584,
UUART0_UUART_DATIN0=1074200592,
UUART0_UUART_CTLIN0=1074200608,
UUART0_UUART_CLKIN=1074200616,
UUART0_UUART_LINECTL=1074200620,
UUART0_UUART_TXDAT=1074200624,
UUART0_UUART_RXDAT=1074200628,
UUART0_UUART_BUFCTL=1074200632,
UUART0_UUART_BUFSTS=1074200636,
UUART0_UUART_PDMACTL=1074200640,
UUART0_UUART_WKCTL=1074200660,
UUART0_UUART_WKSTS=1074200664,
UUART0_UUART_PROTCTL=1074200668,
UUART0_UUART_PROTIEN=1074200672,
UUART0_UUART_PROTSTS=1074200676,
USPI0_USPI_CTL=1074200576,
USPI0_USPI_INTEN=1074200580,
USPI0_USPI_BRGEN=1074200584,
USPI0_USPI_DATIN0=1074200592,
USPI0_USPI_CTLIN0=1074200608,
USPI0_USPI_CLKIN=1074200616,
USPI0_USPI_LINECTL=1074200620,
USPI0_USPI_TXDAT=1074200624,
USPI0_USPI_RXDAT=1074200628,
USPI0_USPI_BUFCTL=1074200632,
USPI0_USPI_BUFSTS=1074200636,
USPI0_USPI_PDMACTL=1074200640,
USPI0_USPI_WKCTL=1074200660,
USPI0_USPI_WKSTS=1074200664,
USPI0_USPI_PROTCTL=1074200668,
USPI0_USPI_PROTIEN=1074200672,
USPI0_USPI_PROTSTS=1074200676,
UI2C0_UI2C_CTL=1074200576,
UI2C0_UI2C_BRGEN=1074200584,
UI2C0_UI2C_LINECTL=1074200620,
UI2C0_UI2C_TXDAT=1074200624,
UI2C0_UI2C_RXDAT=1074200628,
UI2C0_UI2C_DEVADDR0=1074200644,
UI2C0_UI2C_DEVADDR1=1074200648,
UI2C0_UI2C_ADDRMSK0=1074200652,
UI2C0_UI2C_ADDRMSK1=1074200656,
UI2C0_UI2C_WKCTL=1074200660,
UI2C0_UI2C_WKSTS=1074200664,
UI2C0_UI2C_PROTCTL=1074200668,
UI2C0_UI2C_PROTIEN=1074200672,
UI2C0_UI2C_PROTSTS=1074200676,
UI2C0_UI2C_ADMAT=1074200712,
UI2C0_UI2C_TMCTL=1074200716,
UART0_UART_DAT=1074069504,
UART0_UART_INTEN=1074069508,
UART0_UART_FIFO=1074069512,
UART0_UART_LINE=1074069516,
UART0_UART_MODEM=1074069520,
UART0_UART_MODEMSTS=1074069524,
UART0_UART_FIFOSTS=1074069528,
UART0_UART_INTSTS=1074069532,
UART0_UART_TOUT=1074069536,
UART0_UART_BAUD=1074069540,
UART0_UART_IRDA=1074069544,
UART0_UART_ALTCTL=1074069548,
UART0_UART_FUNCSEL=1074069552,
UART0_UART_LINCTL=1074069556,
UART0_UART_LINSTS=1074069560,
UART0_UART_BRCOMP=1074069564,
UART0_UART_WKCTL=1074069568,
UART0_UART_WKSTS=1074069572,
UART0_UART_DWKCOMP=1074069576,
I2C0_I2C_CTL=1073872896,
I2C0_I2C_ADDR0=1073872900,
I2C0_I2C_DAT=1073872904,
I2C0_I2C_STATUS=1073872908,
I2C0_I2C_CLKDIV=1073872912,
I2C0_I2C_TOCTL=1073872916,
I2C0_I2C_ADDR1=1073872920,
I2C0_I2C_ADDR2=1073872924,
I2C0_I2C_ADDR3=1073872928,
I2C0_I2C_ADDRMSK0=1073872932,
I2C0_I2C_ADDRMSK1=1073872936,
I2C0_I2C_ADDRMSK2=1073872940,
I2C0_I2C_ADDRMSK3=1073872944,
I2C0_I2C_WKCTL=1073872956,
I2C0_I2C_WKSTS=1073872960,
I2C0_I2C_CTL1=1073872964,
I2C0_I2C_STATUS1=1073872968,
I2C0_I2C_TMCTL=1073872972,
I2C1_I2C_CTL=1074921472,
I2C1_I2C_ADDR0=1074921476,
I2C1_I2C_DAT=1074921480,
I2C1_I2C_STATUS=1074921484,
I2C1_I2C_CLKDIV=1074921488,
I2C1_I2C_TOCTL=1074921492,
I2C1_I2C_ADDR1=1074921496,
I2C1_I2C_ADDR2=1074921500,
I2C1_I2C_ADDR3=1074921504,
I2C1_I2C_ADDRMSK0=1074921508,
I2C1_I2C_ADDRMSK1=1074921512,
I2C1_I2C_ADDRMSK2=1074921516,
I2C1_I2C_ADDRMSK3=1074921520,
I2C1_I2C_WKCTL=1074921532,
I2C1_I2C_WKSTS=1074921536,
I2C1_I2C_CTL1=1074921540,
I2C1_I2C_STATUS1=1074921544,
I2C1_I2C_TMCTL=1074921548,
SPI0_SPIx_CTL=1073938432,
SPI0_SPIx_CLKDIV=1073938436,
SPI0_SPIx_SSCTL=1073938440,
SPI0_SPIx_PDMACTL=1073938444,
SPI0_SPIx_FIFOCTL=1073938448,
SPI0_SPIx_STATUS=1073938452,
SPI0_SPIx_TX=1073938464,
SPI0_SPIx_RX=1073938480,
SPI0_SPIx_INTERNAL=1073938504,
SPI0_SPIx_I2SCTL=1073938528,
SPI0_SPIx_I2SCLK=1073938532,
SPI0_SPIx_I2SSTS=1073938536,
SPI0_SPIx_VERSION=1073942524,
USBD_USBD_INTEN=1074135040,
USBD_USBD_INTSTS=1074135044,
USBD_USBD_FADDR=1074135048,
USBD_USBD_EPSTS=1074135052,
USBD_USBD_ATTR=1074135056,
USBD_USBD_VBUSDET=1074135060,
USBD_USBD_STBUFSEG=1074135064,
USBD_USBD_LPMATTR=1074135176,
USBD_USBD_FN=1074135180,
USBD_USBD_SE0=1074135184,
USBD_USBD_BUFSEG0=1074136320,
USBD_USBD_MXPLD0=1074136324,
USBD_USBD_CFG0=1074136328,
USBD_USBD_CFGP0=1074136332,
USBD_USBD_BUFSEG1=1074136336,
USBD_USBD_MXPLD1=1074136340,
USBD_USBD_CFG1=1074136344,
USBD_USBD_CFGP1=1074136348,
USBD_USBD_BUFSEG2=1074136352,
USBD_USBD_MXPLD2=1074136356,
USBD_USBD_CFG2=1074136360,
USBD_USBD_CFGP2=1074136364,
USBD_USBD_BUFSEG3=1074136368,
USBD_USBD_MXPLD3=1074136372,
USBD_USBD_CFG3=1074136376,
USBD_USBD_CFGP3=1074136380,
USBD_USBD_BUFSEG4=1074136384,
USBD_USBD_MXPLD4=1074136388,
USBD_USBD_CFG4=1074136392,
USBD_USBD_CFGP4=1074136396,
USBD_USBD_BUFSEG5=1074136400,
USBD_USBD_MXPLD5=1074136404,
USBD_USBD_CFG5=1074136408,
USBD_USBD_CFGP5=1074136412,
USBD_USBD_BUFSEG6=1074136416,
USBD_USBD_MXPLD6=1074136420,
USBD_USBD_CFG6=1074136424,
USBD_USBD_CFGP6=1074136428,
USBD_USBD_BUFSEG7=1074136432,
USBD_USBD_MXPLD7=1074136436,
USBD_USBD_CFG7=1074136440,
USBD_USBD_CFGP7=1074136444,
ADC_ADC_ADDR0=1074659328,
ADC_ADC_ADDR1=1074659332,
ADC_ADC_ADDR2=1074659336,
ADC_ADC_ADDR3=1074659340,
ADC_ADC_ADDR4=1074659344,
ADC_ADC_ADDR5=1074659348,
ADC_ADC_ADDR6=1074659352,
ADC_ADC_ADDR7=1074659356,
ADC_ADC_ADDR8=1074659360,
ADC_ADC_ADDR9=1074659364,
ADC_ADC_ADDR10=1074659368,
ADC_ADC_ADDR11=1074659372,
ADC_ADC_ADDR29=1074659444,
ADC_ADC_ADDR30=1074659448,
ADC_ADC_ADCR=1074659456,
ADC_ADC_ADCHER=1074659460,
ADC_ADC_ADCMPR0=1074659464,
ADC_ADC_ADCMPR1=1074659468,
ADC_ADC_ADSR0=1074659472,
ADC_ADC_ADSR1=1074659476,
ADC_ADC_ADSR2=1074659480,
ADC_ADC_ADTDCR=1074659484,
ADC_ADC_ADPDMA=1074659584,
}
g_NUC121_regs=REG
function read_NUC121_Registers(e,e,e,e)
local e={}
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_NUC121_regs.SYS_SYS_GPA_MFPH,5)
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"]=ice:ReadMem32(g_NUC121_regs.SYS_SYS_GPD_MFPL,5)
e["SYS_SYS_IRCTCTL"]=ice:ReadMem32(g_NUC121_regs.SYS_SYS_IRCTCTL,1)
e["CLK_CLK_PWRCTL"],
e["CLK_CLK_AHBCLK"],
e["CLK_CLK_APBCLK0"],
e["CLK_CLK_STATUS"],
e["CLK_CLK_CLKSEL0"],
e["CLK_CLK_CLKSEL1"],
e["CLK_CLK_CLKDIV0"],
e["CLK_CLK_CLKSEL2"],
e["CLK_CLK_PLLCTL"],
e["CLK_CLK_CLKOCTL"]=ice:ReadMem32(g_NUC121_regs.CLK_CLK_PWRCTL,10)
e["CLK_CLK_APBCLK1"],
e["CLK_CLK_CLKSEL3"]=ice:ReadMem32(g_NUC121_regs.CLK_CLK_APBCLK1,2)
e["GPIO_PA_MODE"],
e["GPIO_PA_DINOFF"],
e["GPIO_PA_DOUT"],
e["GPIO_PA_DATMSK"],
e["GPIO_PA_PIN"]=ice:ReadMem32(g_NUC121_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_NUC121_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_NUC121_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_NUC121_regs.GPIO_PD_MODE,5)
e["GPIO_PE_MODE"],
e["GPIO_PE_DINOFF"],
e["GPIO_PE_DOUT"],
e["GPIO_PE_DATMSK"],
e["GPIO_PE_PIN"]=ice:ReadMem32(g_NUC121_regs.GPIO_PE_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_NUC121_regs.GPIO_PF_MODE,5)
e["GPIO_PA_SLEWCTL"],
e["GPIO_PB_SLEWCTL"],
e["GPIO_PC_SLEWCTL"],
e["GPIO_PD_SLEWCTL"]=ice:ReadMemMulti(g_NUC121_regs.GPIO_PA_SLEWCTL,
g_NUC121_regs.GPIO_PB_SLEWCTL,
g_NUC121_regs.GPIO_PC_SLEWCTL,
g_NUC121_regs.GPIO_PD_SLEWCTL)
e["GPIO_PE_SLEWCTL"],
e["GPIO_PF_SLEWCTL"]=ice:ReadMemMulti(g_NUC121_regs.GPIO_PE_SLEWCTL,
g_NUC121_regs.GPIO_PF_SLEWCTL)
e["UART0_UART_BAUD"]=ice:ReadMemMulti(g_NUC121_regs.UART0_UART_BAUD)
e["SPI0_SPIx_CTL"],
e["SPI0_SPIx_CLKDIV"],
e["SPI0_SPIx_I2SCTL"],
e["SPI0_SPIx_I2SCLK"]=ice:ReadMemMulti(g_NUC121_regs.SPI0_SPIx_CTL,
g_NUC121_regs.SPI0_SPIx_CLKDIV,
g_NUC121_regs.SPI0_SPIx_I2SCTL,
g_NUC121_regs.SPI0_SPIx_I2SCLK)
e["I2C0_I2C_CTL"],
e["I2C0_I2C_CLKDIV"],
e["I2C1_I2C_CTL"],
e["I2C1_I2C_CLKDIV"]=ice:ReadMemMulti(g_NUC121_regs.I2C0_I2C_CTL,
g_NUC121_regs.I2C0_I2C_CLKDIV,
g_NUC121_regs.I2C1_I2C_CTL,
g_NUC121_regs.I2C1_I2C_CLKDIV)
e["TMR01_TIMER0_CTL"],
e["TMR01_TIMER1_CTL"],
e["TMR23_TIMER2_CTL"],
e["TMR23_TIMER3_CTL"]=ice:ReadMemMulti(g_NUC121_regs.TMR01_TIMER0_CTL,
g_NUC121_regs.TMR01_TIMER1_CTL,
g_NUC121_regs.TMR23_TIMER2_CTL,
g_NUC121_regs.TMR23_TIMER3_CTL)
e["PWM0_PWM_CLKSRC"],
e["PWM1_PWM_CLKSRC"]=ice:ReadMemMulti(g_NUC121_regs.PWM0_PWM_CLKSRC,
g_NUC121_regs.PWM1_PWM_CLKSRC)
e["PWM0_PWM_CLKPSC0_1"],
e["PWM0_PWM_CLKPSC2_3"],
e["PWM0_PWM_CLKPSC4_5"]=ice:ReadMem32(g_NUC121_regs.PWM0_PWM_CLKPSC0_1,3)
e["PWM1_PWM_CLKPSC0_1"],
e["PWM1_PWM_CLKPSC2_3"],
e["PWM1_PWM_CLKPSC4_5"]=ice:ReadMem32(g_NUC121_regs.PWM1_PWM_CLKPSC0_1,3)
e["PWM0_PWM_CNTEN"],
e["PWM1_PWM_CNTEN"]=ice:ReadMemMulti(g_NUC121_regs.PWM0_PWM_CNTEN,
g_NUC121_regs.PWM1_PWM_CNTEN)
e["BPWM0_BPWM_CLKSRC"],
e["BPWM0_BPWM_CLKPSC"],
e["BPWM1_BPWM_CLKSRC"],
e["BPWM1_BPWM_CLKPSC"]=ice:ReadMemMulti(g_NUC121_regs.BPWM0_BPWM_CLKSRC,
g_NUC121_regs.BPWM0_BPWM_CLKPSC,
g_NUC121_regs.BPWM1_BPWM_CLKSRC,
g_NUC121_regs.BPWM1_BPWM_CLKPSC)
e["BPWM0_BPWM_CNTEN"],
e["BPWM1_BPWM_CNTEN"]=ice:ReadMemMulti(g_NUC121_regs.BPWM0_BPWM_CNTEN,
g_NUC121_regs.BPWM1_BPWM_CNTEN)
g_NUC121_regs.USCI0_USCI_CTL=g_NUC121_regs.UUART0_UUART_CTL
g_NUC121_regs.USCI0_USCI_BRGEN=g_NUC121_regs.UUART0_UUART_BRGEN
g_NUC121_regs.USCI0_USCI_PROTCTL=g_NUC121_regs.UUART0_UUART_PROTCTL
e["USCI0_USCI_CTL"],
e["USCI0_USCI_BRGEN"],
e["USCI0_USCI_PROTCTL"]=ice:ReadMemMulti(g_NUC121_regs.UUART0_UUART_CTL,
g_NUC121_regs.UUART0_UUART_BRGEN,
g_NUC121_regs.UUART0_UUART_PROTCTL)
return e
end
local n={
[0]=kPinDirection_In,
[1]=kPinDirection_PushPullOut,
[2]=kPinDirection_OpenDrainOut,
[3]=kPinDirection_Bi,
}
local m={
[0]="INPUT",
[1]="OUTPUT",
[2]="Open-Drain",
[3]="Quasi-bidirectional",
}
function get_mfp_regs(a,e,t)
if e~=nil and t~=nil then
local t=(t<8)and"L"or"H"
local e={"SYS_SYS_GP"..e.."_MFP"..t}
return reg2str("Multi-Function register",g_NUC121_regs,a,e)
else
return""
end
end
function get_clk_informnation(e,t)
return reg2str("Clock setting registers",g_NUC121_regs,e,t)
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 10kHz low speed oscillator clock (see CLK_PWRCTL[3].LIRCEN)"
else
e=10000
t="internal 10kHz low speed oscillator clock"
end
return e,t
end
function get_HIRC_clock(o,a)
local e
local t
table.insert(a,"CLK_CLK_PWRCTL")
local i=ext.band(o["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(a,"SYS_SYS_IRCTCTL")
local a=ext.band(o["SYS_SYS_IRCTCTL"],3)
if a==0 then
e=48000000
t="internal 48MHz high speed oscillator clock"
elseif a==2 then
e=48000000
t="internal 48MHz high speed oscillator clock (auto trim)"
else
e=0
t="invalid HIRC trim frequency selection (see SYS_IRCTCTL0[1:0].FREQSEL)"
end
end
return e,t
end
function get_LXT_clock(a,o)
local e
local t
table.insert(o,"CLK_CLK_PWRCTL")
local a=ext.band(a["CLK_CLK_PWRCTL"],3)
if a~=2 then
e=0
t="invalid external 32.768kHz low speed crystal clock (see CLK_PWRCTL[1:0].XLLEN)"
else
e=32768
t="external 32.768kHz low speed crystal clock"
end
return e,t
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"],3)
if a~=1 then
t=0
e="invalid external 4~24M high speed crystal clock (see CLK_PWRCTL[1:0].XLLEN)"
else
t=12000000
e="external 4~24M high speed crystal clock, when external input clock is 12M"
end
return t,e
end
function get_PLL_clock(a,o)
local e
local t
table.insert(o,"CLK_CLK_PLLCTL")
local i=ext.band(ext.rshift(a["CLK_CLK_PLLCTL"],16),1)
if i~=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/2
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 e
local t
table.insert(a,"CLK_CLK_CLKSEL0")
local i=ext.band(o["CLK_CLK_CLKSEL0"],7)
if i==0 then
e,t=get_HXT_clock(o,a)
elseif i==1 then
e,t=get_LXT_clock(o,a)
elseif i==2 then
e,t=get_PLL_clock(o,a)
elseif i==3 then
e,t=get_LIRC_clock(o,a)
elseif i==4 then
e,t=get_HIRC_clock(o,a)
elseif i==5 then
e,t=get_PLL_clock(o,a)
e=e/2
elseif i==7 then
e,t=get_HIRC_clock(o,a)
e=e/2
else
e=0
t="invalid "..n.." clock (see CLK_CLKSEL0[2:0].HCLKSEL)"
return e,t
end
if e==0 then
t=""..n.." clock from "..t
else
table.insert(a,"CLK_CLK_CLKDIV0")
local a=ext.band(o["CLK_CLK_CLKDIV0"],15)
e=e/(a+1)
t=string.format("%s clock (%sHz), from %s",n,val2str(e),t)
end
return e,t
end
function get_HCLK_clock(e,t)
return get_sys_clock(e,t,"HCLK")
end
function get_PCLK_clock(o,i,a)
local e
local t
e,t=get_HCLK_clock(o,i)
if e==0 then
t=string.format("PCLK%d clock from ",a)..t
else
table.insert(i,"CLK_CLK_CLKSEL0")
local o=ext.band(ext.rshift(o["CLK_CLK_CLKSEL0"],6+a),1)
if o~=0 then
e=e/2
end
t=string.format("PCLK%d clock (%sHz), from %s",a,val2str(e),t)
end
return e,t
end
function fill_NUC121_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 c=s["GPIO_P"..t.."_DINOFF"]
local r=s["GPIO_P"..t.."_DOUT"]
local u=s["GPIO_P"..t.."_DATMSK"]
local d=s["GPIO_P"..t.."_PIN"]
local h=s["GPIO_P"..t.."_SLEWCTL"]
if(t=="B"and e==11)or(t=="C"and(e==6 or e==7))or(t=="D"and(e==6 or e==7))then
h=nil
end
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(u,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,m[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(u,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(c,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
if h~=nil then
if ext.band(h,ext.lshift(1,e))==0 then
a=a.."IO output with basic slew rate
"
else
a=a.."IO output with higher slew rate
"
end
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",
"GPIO_P"..t.."_SLEWCTL"}
local i=reg2str("GPIO setting registers",g_NUC121_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,i,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 o="Undefined setting in Multi-Function registers for this pin.
"
e["information"]=string.format(
"P%s.%d
%s
"..
"%s",
a,t,
o,
get_mfp_regs(i,a,t))
end
function fill_NUC121_ADC(a,e,r,d,h)
local n=""
local i=""
local t={}
a["highlight_text"]=h
a["normal_color"]=kColor_Invalid
a["highlight_color"]=kColor_ADC
a["pin_bg_color"]=kBgColor_ADC
a["direction"]=kPinDirection_In
a["status"]=kPinStatus_Unknown
table.insert(t,"CLK_CLK_APBCLK0")
local o=ext.band(ext.rshift(e["CLK_CLK_APBCLK0"],28),1)
if o~=0 then
local a
local o
table.insert(t,"CLK_CLK_CLKSEL1")
local s=ext.band(ext.rshift(e["CLK_CLK_CLKSEL1"],2),3)
if s==0 then
a,o=get_HXT_clock(e,t)
elseif s==1 then
a,o=get_PLL_clock(e,t)
elseif s==2 then
a,o=get_PCLK_clock(e,t,0)
elseif s==3 then
a,o=get_HIRC_clock(e,t)
a=a/2
end
local e=ext.band(ext.rshift(e["CLK_CLK_CLKDIV0"],16),255)
local e=a/(e+1)
if e~=0 then
table.insert(t,"CLK_CLK_CLKDIV0")
n=string.format("ADC clock frequency: %sHz, from %s.
",val2str(e),o)
else
i="ADC clock is not available, "..o..".
"
end
else
i="ADC clock is not available (see CLK_APBCLK0[28].ADCCKEN).
"
end
if i~=""then
i=""..i..""
a["pin_no_color"]=kBgColor_Error
end
if n~=""then
n="Information
"..n
end
a["information"]=string.format(
"%s
%s
%s%s%s",
h,
i,
get_mfp_regs(e,r,d),
get_clk_informnation(e,t),
n)
end
function fill_NUC121_UART(a,e,u,l,d,o)
local n=""
local i=""
local t={}
local h=0
a["highlight_text"]=d
a["normal_color"]=kColor_Invalid
a["highlight_color"]=kColor_UART
a["pin_bg_color"]=kBgColor_UART
a["direction"]=kPinDirection_Unknown
a["status"]=kPinStatus_Unknown
function get_uart_baudate(i)
local s=string.format("UART%d",o)
local a=string.format("UART%d_UART_BAUD",o)
table.insert(t,a)
local o=ext.band(ext.rshift(e[a],29),1)
local n=ext.band(ext.rshift(e[a],28),1)
local h=ext.band(ext.rshift(e[a],24),15)
local t=ext.band(e[a],65535)
local e=0
local a=""
if o==0 and n==0 then
e=i/(16*(t+2))
elseif o~=0 and n==0 then
if h>=8 then
e=i/((h+1)*(t+2))
else
a="invalid "..s.."'s UART_BAUD value, EDIVM1 must >= 8"
end
elseif o~=0 and n~=0 then
e=i/(t+2)
else
a="invalid "..s.."'s UART_BAUD value"
end
return e,a
end
table.insert(t,"CLK_CLK_APBCLK0")
local s=ext.band(e["CLK_CLK_APBCLK0"],ext.lshift(1,o+16))
if s~=0 then
local a
local s
table.insert(t,"CLK_CLK_CLKSEL1")
local r=ext.band(ext.rshift(e["CLK_CLK_CLKSEL1"],24),3)
if r==0 then
a,s=get_HXT_clock(e,t)
elseif r==1 then
a,s=get_PLL_clock(e,t)
elseif r==2 then
a,s=get_LXT_clock(e,t)
elseif r==3 then
a,s=get_HIRC_clock(e,t)
a=a/2
end
local e=ext.band(ext.rshift(e["CLK_CLK_CLKDIV0"],8),15)
h=a/(e+1)
if h~=0 then
table.insert(t,"CLK_CLK_CLKDIV0")
n=string.format("UART%d clock frequency: %sHz, from %s.
",o,val2str(h),s)
else
i=string.format("UART%d clock is not available, %s.
",o,s)
end
else
i=string.format("UART%d clock is not available (see CLK_APBCLK0[%d].UART%dCKEN).
",
o,o+16,o)
end
if i==""then
local e,t=get_uart_baudate(h)
if e~=0 then
n=n..string.format("UART baudrate: %d
",e)
else
i=t..".
"
end
end
if i~=""then
i=""..i..""
a["pin_no_color"]=kBgColor_Error
end
if n~=""then
n="Information
"..n
end
a["information"]=string.format(
"%s
%s
"..
"%s%s%s",
d,
i,
get_mfp_regs(e,u,l),
get_clk_informnation(e,t),
n)
end
function fill_NUC121_SPI(i,a,l,u,d,t)
local e=""
local h=""
local n={}
i["highlight_text"]=d
i["normal_color"]=kColor_Invalid
i["highlight_color"]=kColor_SPI
i["pin_bg_color"]=kBgColor_SPI
i["direction"]=kPinDirection_Unknown
i["status"]=kPinStatus_Unknown
table.insert(n,"CLK_CLK_APBCLK0")
local o=ext.band(a["CLK_CLK_APBCLK0"],ext.lshift(1,t+12))
if o~=0 then
local o
local s
table.insert(n,"CLK_CLK_CLKSEL2")
local r=ext.band(ext.rshift(a["CLK_CLK_CLKSEL2"],2*t+24),3)
if r==0 then
o,s=get_HXT_clock(a,n)
elseif r==1 then
o,s=get_PLL_clock(a,n)
elseif r==2 then
o,s=get_PCLK_clock(a,n,0)
elseif r==3 then
o,s=get_HIRC_clock(a,n)
end
if o~=0 then
local r=string.format("SPI%d_SPIx_I2SCTL",t)
table.insert(n,r)
local h=ext.band(a[r],1)
if h~=0 then
e=string.format("I2S controller enabled.
")
local h=string.format("SPI%d_SPIx_I2SCLK",t)
table.insert(n,h)
local n=ext.band(ext.rshift(a[h],8),511)
local r=ext.band(ext.rshift(a[r],8),1)
if r==0 then
local a=ext.band(a[h],63)
local n=o/(2*(n+1))
local i=o
if a~=0 then
i=o/(2*a)
end
e=e..string.format("SPI%d_I2S is in master mode.
",t)
e=e..string.format("BCLK frequency: %sHz
",val2str(n))
e=e..string.format("MCLK frequency: %sHz
",val2str(i))
else
e=e..string.format("SPI%d_I2S is in slave mode.
",t)
o=o/(n/2+1)
e=e..string.format("SPI%d_I2S clock frequency: %sHz, from %s.
",
t,val2str(o),s)
end
i["highlight_color"]=kColor_I2S
i["pin_bg_color"]=kBgColor_I2S
i["direction"]=kPinDirection_Unknown
else
local i=string.format("SPI%d_SPIx_CTL",t)
local h=string.format("SPI%d_SPIx_CLKDIV",t)
table.insert(n,i)
local i=ext.band(ext.rshift(a[i],18),1)
if i==0 then
e=string.format("SPI%d is in master mode.
",t)
table.insert(n,h)
local a=ext.band(a[h],255)
local a=o/(a+1)
e=e..string.format("SPI%d clock frequency: %sHz, from %s.
",
t,val2str(a),s)
else
e=string.format("SPI%d is in slave mode.
",t)
end
end
else
h=string.format("SPI%d clock is not available, %s.
",t,s)
end
else
h=string.format("SPI%d clock is not available (see CLK_APBCLK0[%d].SPI%dCKEN).
",
t,t+12,t)
end
if h~=""then
h=""..h..""
i["pin_no_color"]=kBgColor_Error
end
if e~=""then
e="Information
"..e
end
i["information"]=string.format(
"%s
%s
"..
"%s%s%s",
d,
h,
get_mfp_regs(a,l,u),
get_clk_informnation(a,n),
e)
end
function fill_NUC121_SPI_IO(e,o,a,t)
local i=string.format("SPI%d_SPIx_I2SCTL",a)
local i=ext.band(o[i],1)
if i~=0 then
if t then
e["direction"]=kPinDirection_In
else
e["direction"]=kPinDirection_PushPullOut
end
else
local a=string.format("SPI%d_SPIx_CTL",a)
local a=ext.band(ext.rshift(o[a],18),1)
if a==0 then
if t then
e["direction"]=kPinDirection_In
else
e["direction"]=kPinDirection_PushPullOut
end
else
if t then
e["direction"]=kPinDirection_PushPullOut
else
e["direction"]=kPinDirection_In
end
end
end
end
function fill_NUC121_I2C(t,o,l,d,r,e)
local n=""
local a=""
local i={}
t["highlight_text"]=r
t["normal_color"]=kColor_Invalid
t["highlight_color"]=kColor_I2C
t["pin_bg_color"]=kBgColor_I2C
t["direction"]=kPinDirection_Unknown
t["status"]=kPinStatus_Unknown
table.insert(i,"CLK_CLK_APBCLK0")
local s=ext.band(o["CLK_CLK_APBCLK0"],ext.lshift(1,e+8))
if s~=0 then
local t=string.format("I2C%d_I2C_CTL",e)
table.insert(i,t)
local t=ext.band(ext.rshift(o[t],6),1)
if t~=0 then
local t
local s
if e==0 then
t,s=get_PCLK_clock(o,i,0)
else
t,s=get_PCLK_clock(o,i,1)
end
if t~=0 then
local h=string.format("I2C%d_I2C_CLKDIV",e)
table.insert(i,h)
local o=ext.band(o[h],255)
if o<4 then
a=string.format("Invalid I2C%d's I2C_CLKDIV value, I2C_CLKDIV must >= 4.
",e)
else
local t=t/(4*(o+1))
n=n..string.format("I2C%d clock frequency: %sHz, from %s.
",e,val2str(t),s)
end
else
a=string.format("I2C%d clock is not available, %s.
",e,s)
end
else
a=string.format("I2C%d controller disabled (see I2C%d_I2C_CTL[6].I2CEN).
",e,e)
end
else
a=string.format("I2C%d clock is not available (see CLK_APBCLK0[%d].I2C%dCKEN).
",e,e+8,e)
end
if a~=""then
a=""..a..""
t["pin_no_color"]=kBgColor_Error
end
if n~=""then
n="Information
"..n
end
t["information"]=string.format(
"%s
%s
"..
"%s%s%s",
r,
a,
get_mfp_regs(o,l,d),
get_clk_informnation(o,i),
n)
end
function fill_NUC121_CLKO(o,e,d,r,h)
local s=""
local n=""
local a={}
o["highlight_text"]=h
o["normal_color"]=kColor_Invalid
o["highlight_color"]=kColor_CLK
o["pin_bg_color"]=kBgColor_CLK
o["direction"]=kPinDirection_PushPullOut
o["status"]=kPinStatus_Unknown
table.insert(a,"CLK_CLK_APBCLK0")
local t=ext.band(e["CLK_CLK_APBCLK0"],ext.lshift(1,6))
if t~=0 then
table.insert(a,"CLK_CLK_CLKOCTL")
local t=ext.band(ext.rshift(e["CLK_CLK_CLKOCTL"],4),1)
if t~=0 then
local t
local o
table.insert(a,"CLK_CLK_CLKSEL2")
local i=ext.band(ext.rshift(e["CLK_CLK_CLKSEL2"],2),7)
if i==0 then
t,o=get_HXT_clock(e,a)
elseif i==1 then
t,o=get_LXT_clock(e,a)
elseif i==2 then
t,o=get_HCLK_clock(e,a)
elseif i==3 then
t,o=get_HIRC_clock(e,a)
t=t/2
elseif i==5 then
t,o=get_HIRC_clock(e,a)
elseif i==7 then
s="CLKO clock source from SOF (USB Start Of Frame) event.
"
else
t=0
o="invalid CLKO clock source (see CLK_CLKSEL2[4:2].CLKOSEL)"
end
if i~=7 then
if t~=0 then
local a=t
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)
a=t/ext.lshift(1,(e+1))
end
s=string.format("CLKO clock frequency: %sHz, from %s.
",val2str(a),o)
else
n="CLKO clock is not available, "..o..".
"
end
end
else
n="CLKO output function disabled (see CLK_CLKOCTL[4].CLKOEN).
"
end
else
n="CLKO clock is not available (see CLK_APBCLK0[6].CLKOCKEN).
"
end
if n~=""then
n=""..n..""
o["pin_no_color"]=kBgColor_Error
end
if s~=""then
s="Information
"..s
end
o["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
n,
get_mfp_regs(e,d,r),
get_clk_informnation(e,a),
s)
end
function fill_NUC121_TM(h,t,l,d,r,e)
local o=""
local s=""
local i={}
h["highlight_text"]=r
h["normal_color"]=kColor_Invalid
h["highlight_color"]=kColor_TM
h["pin_bg_color"]=kBgColor_TM
h["direction"]=kPinDirection_Unknown
h["status"]=kPinStatus_Unknown
table.insert(i,"CLK_CLK_APBCLK0")
local a=ext.band(t["CLK_CLK_APBCLK0"],ext.lshift(1,e+2))
if a~=0 then
local a=string.format("TMR%d%d_TIMER%d_CTL",ext.rshift(e,1)*2,ext.rshift(e,1)*2+1,e)
table.insert(i,a)
local a=ext.band(ext.rshift(t[a],24),1)
if a~=0 then
o=o..string.format("TMR%d external counting pin function enabled.
",e)
else
local a
local n
table.insert(i,"CLK_CLK_CLKSEL1")
local h=ext.band(ext.rshift(t["CLK_CLK_CLKSEL1"],8+e*4),7)
if h==0 then
a,n=get_HXT_clock(t,i)
elseif h==1 then
a,n=get_LXT_clock(t,i)
elseif h==2 then
if e==0 or e==1 then
a,n=get_PCLK_clock(t,i,0)
else
a,n=get_PCLK_clock(t,i,1)
end
elseif h==3 then
o=o..string.format("TMR%d clock source is from external clock T%d pin.
",e,e)
elseif h==5 then
a,n=get_LIRC_clock(t,i)
elseif h==7 then
a,n=get_HIRC_clock(t,i)
a=a/2
else
s=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 s==""and h~=3 then
if a~=0 then
o=o..string.format("TMR%d clock frequency: %sHz, from %s.
",e,val2str(a),n)
else
s=string.format("TMR%d clock is not available, %s.
",e,n)
end
end
end
else
s=string.format("TMR%d clock is not available (see CLK_APBCLK0[%d].TMR%dCKEN).
",e,e+2,e)
end
if s~=""then
s=""..s..""
h["pin_no_color"]=kBgColor_Error
end
if o~=""then
o="Information
"..o
end
h["information"]=string.format(
"%s
%s
"..
"%s%s%s",
r,
s,
get_mfp_regs(t,l,d),
get_clk_informnation(t,i),
o)
end
function fill_NUC121_BPWM(n,t,l,d,r,e,s)
local i=""
local o=""
local a={}
n["highlight_text"]=r
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 s~=nil then
local n=ext.rshift(s,1)
table.insert(a,"CLK_CLK_APBCLK0")
local n=ext.band(t["CLK_CLK_APBCLK0"],ext.lshift(1,e+20))
if n~=0 then
table.insert(a,"CLK_CLK_CLKSEL1")
local h=ext.band(ext.rshift(t["CLK_CLK_CLKSEL1"],e+28),1)
local n
local s
if h==0 then
n,s=get_PLL_clock(t,a)
else
if e==0 then
n,s=get_PCLK_clock(t,a,0)
else
n,s=get_PCLK_clock(t,a,1)
end
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
o=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 n==0 then
o=string.format("BPWM%d clock is not available, %s.
",e,s)
else
local o=string.format("BPWM%d_BPWM_CLKPSC",e)
table.insert(a,o)
local t=ext.band(t[o],4095)
local t=n/(t+1)
i=string.format("BPWM%d clock frequency: %sHz, from %s.
",
e,val2str(n),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
o=string.format("BPWM%d clock source is undefined (see BPWM_CLKSRC[2:0].ECLKSRC0).
",e)
end
end
else
o=string.format("BPWM%d clock is not available (see CLK_APBCLK0[%d].BPWM%dCKEN).
",
e,e+20,e)
end
end
if o~=""then
o=""..o..""
n["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
n["information"]=string.format(
"%s
%s
"..
"%s%s%s",
r,
o,
get_mfp_regs(t,l,d),
get_clk_informnation(t,a),
i)
end
function fill_NUC121_PWM(i,a,l,u,d,t,e)
local s=""
local n=""
local o={}
i["highlight_text"]=d
i["normal_color"]=kColor_Invalid
i["highlight_color"]=kColor_PWM
i["pin_bg_color"]=kBgColor_PWM
i["direction"]=kPinDirection_Unknown
i["status"]=kPinStatus_Unknown
if e~=nil then
local e=ext.rshift(e,1)
table.insert(o,"CLK_CLK_APBCLK0")
local i=ext.band(a["CLK_CLK_APBCLK0"],ext.lshift(1,t+22))
if i~=0 then
table.insert(o,"CLK_CLK_CLKSEL1")
local r=ext.band(ext.rshift(a["CLK_CLK_CLKSEL1"],t+30),1)
local i
local h
if r==0 then
i,h=get_PLL_clock(a,o)
else
if t==0 then
i,h=get_PCLK_clock(a,o,0)
else
i,h=get_PCLK_clock(a,o,1)
end
end
local r=string.format("PWM%d_PWM_CNTEN",t)
table.insert(o,r)
local r=ext.band(ext.rshift(a[r],e*2),1)
if r==0 then
n=string.format("PWM%d counter%d_%d stops running.
",t,e*2,e*2+1)
else
local r=string.format("PWM%d_PWM_CLKSRC",t)
table.insert(o,r)
local r=ext.band(ext.rshift(a[r],8*e),7)
if r==0 then
if i==0 then
n=string.format("PWM%d clock is not available, %s.
",t,h)
else
local n=string.format("PWM%d_PWM_CLKPSC%d_%d",t,2*e,2*e+1)
table.insert(o,n)
local a=ext.band(a[n],4095)
local a=i/(a+1)
s=string.format("PWM%d clock frequency: %sHz, from %s.
",
t,val2str(i),h)
s=s..string.format("PWM%d counter%d_%d frequency: %sHz (Pre-Scaled)
",
t,2*e,2*e+1,val2str(a))
end
elseif r<=4 then
s=string.format("PWM%d_CH%d%d clock source is from TIMER%d.
",
t,2*e,2*e+1,r-1)
else
n=string.format("PWM%d_CH%d%d clock source is undefined (see PWM_CLKSRC[%d:%d].ECLKSRC%d).
",
t,2*e,2*e+1,8*e+2,8*e,2*e)
end
end
else
n=string.format("PWM%d clock is not available (see CLK_APBCLK0[%d].PWM%dCKEN).
",
t,t+22,t)
end
end
if n~=""then
n=""..n..""
i["pin_no_color"]=kBgColor_Error
end
if s~=""then
s="Information
"..s
end
i["information"]=string.format(
"%s
%s
"..
"%s%s%s",
d,
n,
get_mfp_regs(a,l,u),
get_clk_informnation(a,o),
s)
end
function fill_NUC121_USCI(o,t,m,f,d,e)
local a=""
local i={}
o["highlight_text"]=d
o["normal_color"]=kColor_Invalid
o["highlight_color"]=kColor_USCI
o["pin_bg_color"]=kBgColor_USCI
o["direction"]=kPinDirection_Unknown
o["status"]=kPinStatus_Unknown
table.insert(i,"CLK_CLK_APBCLK1")
local n=ext.band(t["CLK_CLK_APBCLK1"],ext.lshift(1,e+8))
if n~=0 then
local o=string.format("USCI%d_USCI_CTL",e)
table.insert(i,o)
local h=ext.band(t[o],7)
local o=string.format("USCI%d_USCI_BRGEN",e)
table.insert(i,o)
local n=ext.band(t[o],1)
local l=ext.band(ext.rshift(t[o],1),1)
local s=ext.band(ext.rshift(t[o],2),3)
local m=ext.band(ext.rshift(t[o],10),31)
local c=ext.band(ext.rshift(t[o],8),3)
local d=ext.band(ext.rshift(t[o],16),1023)
local o=string.format("USCI%d_USCI_PROTCTL",e)
table.insert(i,o)
local r=ext.band(ext.rshift(t[o],31),1)
local u=ext.band(t[o],1)
local n
local o
if e==0 or e==2 then
n,o=get_PCLK_clock(t,i,0)
else
n,o=get_PCLK_clock(t,i,1)
end
local i=n
local t=i/2
local l=(l==0)and i or t
local d=l/(d+1)
local f=d/2
local t
if s==0 then
t=d
elseif s==1 then
t=l
elseif s==2 then
t=f
elseif s==3 then
t=i
end
if n~=0 then
if h==0 then
info=string.format("USCI%d is in idle state.
",e)
elseif h==1 then
if u==0 then
info=string.format("USCI%d is in SPI master mode.
",e)
else
info=string.format("USCI%d is in SPI slave mode.
",e)
end
if r==0 then
a=string.format("SPI protocol disabled (see USCI%d_USCI_PROTCTL[31].PROTEN)
",e)
elseif u==0 then
local t=t/2
info=info..string.format("USPI%d clock frequency: %sHz, from %s.
",e,val2str(t),o)
end
elseif h==2 then
info=string.format("USCI%d is in UART mode.
",e)
if r==0 then
a=string.format("UART protocol disabled (see USCI%d_USCI_PROTCTL[31].PROTEN)
",e)
else
info=info..string.format("UUART%d clock frequency: %sHz, from %s.
",e,val2str(n),o)
local e=t/(m+1)/(c+1)
info=info..string.format("UART baudrate: %d
",e)
end
elseif h==4 then
info=string.format("USCI%d is in I2C mode.
",e)
if r==0 then
a=string.format("I2C protocol disabled (see USCI%d_USCI_PROTCTL[31].PROTEN)
",e)
else
local t=t/2
info=info..string.format("UI2C%d clock frequency: %sHz, from %s.
",e,val2str(t),o)
end
else
a=string.format("Undefined function mode (see USCI_CTL[2:0].FUNMODE).
")
end
else
a=string.format("USCI%d clock is not available, %s.
",e,o)
end
else
a=string.format("USCI%d clock is not available (see CLK_APBCLK1[%d].USCI%dCKEN).
",e,e+8,e)
end
if a~=""then
a=""..a..""
o["pin_no_color"]=kBgColor_Error
end
if info~=""then
info="Information
"..info
end
o["information"]=string.format(
"%s
%s
"..
"%s%s%s",
d,
a,
get_mfp_regs(t,m,f),
get_clk_informnation(t,i),
info)
end
function fill_NUC121_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_NUC121_USB(e,t,r,h,s)
local i=""
local o=""
local a={}
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(a,"CLK_CLK_APBCLK0")
local n=ext.band(t["CLK_CLK_APBCLK0"],ext.lshift(1,27))
if n~=0 then
local e
local n
table.insert(a,"CLK_CLK_CLKSEL3")
local s=ext.band(ext.rshift(t["CLK_CLK_CLKSEL3"],8),1)
if s==0 then
e,n=get_HIRC_clock(t,a)
else
e,n=get_PLL_clock(t,a)
table.insert(a,"CLK_CLK_CLKDIV0")
local t=ext.band(ext.rshift(t["CLK_CLK_CLKDIV0"],4),15)
e=e/(t+1)
end
if e~=0 then
i=string.format("USB clock frequency: %sHz, from %s.
",val2str(e),n)
else
o="USB clock is not available, "..n..".
"
end
else
o="USB clock is not available (see CLK_APBCLK0[27].USBDCKEN).
"
end
if o~=""then
o=""..o..""
e["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
e["information"]=string.format(
"%s
%s
"..
"%s%s%s",
s,
o,
get_mfp_regs(t,r,h),
get_clk_informnation(t,a),
i)
end
function fill_NUC121_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