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_IVSCTL=1073741852,
SYS_SYS_PORCTL=1073741860,
SYS_SYS_VREFCTL=1073741864,
SYS_SYS_USBPHYCR=1073741868,
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_SRAM_BISTCTL=1073742032,
SYS_SYS_SRAM_BISTSTS=1073742036,
SYS_SYS_IRCTCTL=1073742064,
SYS_SYS_IRCTIEN=1073742068,
SYS_SYS_IRCTISTS=1073742072,
SYS_SYS_REGLCTL=1073742080,
SYS_SYS_IRC48MTRIMCTL=1073742128,
SCS_SYST_CTRL=3758153744,
SCS_SYST_LOAD=3758153748,
SCS_SYST_VAL=3758153752,
SCS_ICSR=3758157060,
SCS_AIRCR=3758157068,
SCS_SCR=3758157072,
SCS_SHPR1=3758157080,
SCS_SHPR2=3758157084,
SCS_SHPR3=3758157088,
NVIC_NVIC_ISER1=3758153984,
NVIC_NVIC_ISER2=3758153988,
NVIC_NVIC_ICER1=3758154112,
NVIC_NVIC_ICER2=3758154116,
NVIC_NVIC_ISPR1=3758154240,
NVIC_NVIC_ISPR2=3758154244,
NVIC_NVIC_ICPR1=3758154368,
NVIC_NVIC_ICPR2=3758154372,
NVIC_NVIC_IABR1=3758154496,
NVIC_NVIC_IABR2=3758154500,
NVIC_NVIC_IPR1=3758154752,
NVIC_NVIC_IPR2=3758154812,
NVIC_STIR=3758157568,
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_CLKDIV1=1073742372,
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,
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,
FMC_FMC_MPDAT0=1073791104,
FMC_FMC_MPDAT1=1073791108,
FMC_FMC_MPDAT2=1073791112,
FMC_FMC_MPDAT3=1073791116,
FMC_FMC_MPSTS=1073791168,
FMC_FMC_MPADDR=1073791172,
EBI_EBI_CTL0=1073807360,
EBI_EBI_TCTL0=1073807364,
EBI_EBI_CTL1=1073807376,
EBI_EBI_TCTL1=1073807380,
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_PA_SMTEN=1073758244,
GPIO_PA_SLEWCTL=1073758248,
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_PB_SMTEN=1073758308,
GPIO_PB_SLEWCTL=1073758312,
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_PC_SMTEN=1073758372,
GPIO_PC_SLEWCTL=1073758376,
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_PD_SMTEN=1073758436,
GPIO_PD_SLEWCTL=1073758440,
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_PE_SMTEN=1073758500,
GPIO_PE_SLEWCTL=1073758504,
GPIO_PE_DRVCTL=1073758508,
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_PF_SMTEN=1073758564,
GPIO_PF_SLEWCTL=1073758568,
GPIO_GPIO_DBCTL=1073759296,
GPIO_PA0_PDIO=1073760256,
GPIO_PA1_PDIO=1073760260,
GPIO_PA2_PDIO=1073760264,
GPIO_PA3_PDIO=1073760268,
GPIO_PB0_PDIO=1073760320,
GPIO_PB1_PDIO=1073760324,
GPIO_PB2_PDIO=1073760328,
GPIO_PB3_PDIO=1073760332,
GPIO_PB4_PDIO=1073760336,
GPIO_PB5_PDIO=1073760340,
GPIO_PB6_PDIO=1073760344,
GPIO_PB7_PDIO=1073760348,
GPIO_PB8_PDIO=1073760352,
GPIO_PB9_PDIO=1073760356,
GPIO_PB10_PDIO=1073760360,
GPIO_PB11_PDIO=1073760364,
GPIO_PB12_PDIO=1073760368,
GPIO_PB13_PDIO=1073760372,
GPIO_PB14_PDIO=1073760376,
GPIO_PB15_PDIO=1073760380,
GPIO_PC0_PDIO=1073760384,
GPIO_PC1_PDIO=1073760388,
GPIO_PC2_PDIO=1073760392,
GPIO_PC3_PDIO=1073760396,
GPIO_PC4_PDIO=1073760400,
GPIO_PC5_PDIO=1073760404,
GPIO_PC6_PDIO=1073760408,
GPIO_PC7_PDIO=1073760412,
GPIO_PD0_PDIO=1073760448,
GPIO_PD1_PDIO=1073760452,
GPIO_PD2_PDIO=1073760456,
GPIO_PD3_PDIO=1073760460,
GPIO_PD4_PDIO=1073760464,
GPIO_PD5_PDIO=1073760468,
GPIO_PD6_PDIO=1073760472,
GPIO_PD7_PDIO=1073760476,
GPIO_PD8_PDIO=1073760480,
GPIO_PD9_PDIO=1073760484,
GPIO_PD10_PDIO=1073760488,
GPIO_PD11_PDIO=1073760492,
GPIO_PD12_PDIO=1073760496,
GPIO_PD13_PDIO=1073760500,
GPIO_PD14_PDIO=1073760504,
GPIO_PD15_PDIO=1073760508,
GPIO_PE0_PDIO=1073760512,
GPIO_PE1_PDIO=1073760516,
GPIO_PE2_PDIO=1073760520,
GPIO_PE3_PDIO=1073760524,
GPIO_PE4_PDIO=1073760528,
GPIO_PE5_PDIO=1073760532,
GPIO_PE6_PDIO=1073760536,
GPIO_PE7_PDIO=1073760540,
GPIO_PE8_PDIO=1073760544,
GPIO_PE9_PDIO=1073760548,
GPIO_PE10_PDIO=1073760552,
GPIO_PE11_PDIO=1073760556,
GPIO_PE12_PDIO=1073760560,
GPIO_PE13_PDIO=1073760564,
GPIO_PF0_PDIO=1073760576,
GPIO_PF1_PDIO=1073760580,
GPIO_PF2_PDIO=1073760584,
GPIO_PF3_PDIO=1073760588,
GPIO_PF4_PDIO=1073760592,
GPIO_PF5_PDIO=1073760596,
GPIO_PF6_PDIO=1073760600,
GPIO_PF7_PDIO=1073760604,
PDMA_PDMA_CHCTL=1073775616,
PDMA_PDMA_STOP=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_SCATSTS=1073775656,
PDMA_PDMA_TACTSTS=1073775660,
PDMA_PDMA_TOUTEN=1073775668,
PDMA_PDMA_TOUTIEN=1073775672,
PDMA_PDMA_SCATBA=1073775676,
PDMA_PDMA_TOC0_1=1073775680,
PDMA_PDMA_TOC2_3=1073775684,
PDMA_PDMA_TOC4_5=1073775688,
PDMA_PDMA_TOC6_7=1073775692,
PDMA_PDMA_REQSEL0_3=1073775744,
PDMA_PDMA_REQSEL4_7=1073775748,
DSCT_CTL_PDMA_DSCTn_CTL=1073774592,
DSCT_SA_PDMA_DSCTn_SA=1073774596,
DSCT_DA_PDMA_DSCTn_DA=1073774600,
DSCT_NEXT_PDMA_DSCTn_NEXT=1073774604,
CURSCAT_PDMA_CURSCATn=1073774784,
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,
PWM0_PWM_CTL0=1074102272,
PWM0_PWM_CTL1=1074102276,
PWM0_PWM_SYNC=1074102280,
PWM0_PWM_SWSYNC=1074102284,
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_LOAD=1074102312,
PWM0_PWM_PERIOD0=1074102320,
PWM0_PWM_PERIOD1=1074102324,
PWM0_PWM_PERIOD2=1074102328,
PWM0_PWM_PERIOD3=1074102332,
PWM0_PWM_PERIOD4=1074102336,
PWM0_PWM_PERIOD5=1074102340,
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_PHS0_1=1074102400,
PWM0_PWM_PHS2_3=1074102404,
PWM0_PWM_PHS4_5=1074102408,
PWM0_PWM_CNT0=1074102416,
PWM0_PWM_CNT1=1074102420,
PWM0_PWM_CNT2=1074102424,
PWM0_PWM_CNT3=1074102428,
PWM0_PWM_CNT4=1074102432,
PWM0_PWM_CNT5=1074102436,
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_IFA=1074102512,
PWM0_PWM_EADCTS0=1074102520,
PWM0_PWM_EADCTS1=1074102524,
PWM0_PWM_FTCMPDAT0_1=1074102528,
PWM0_PWM_FTCMPDAT2_3=1074102532,
PWM0_PWM_FTCMPDAT4_5=1074102536,
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_PBUF1=1074103048,
PWM0_PWM_PBUF2=1074103052,
PWM0_PWM_PBUF3=1074103056,
PWM0_PWM_PBUF4=1074103060,
PWM0_PWM_PBUF5=1074103064,
PWM0_PWM_CMPBUF0=1074103068,
PWM0_PWM_CMPBUF1=1074103072,
PWM0_PWM_CMPBUF2=1074103076,
PWM0_PWM_CMPBUF3=1074103080,
PWM0_PWM_CMPBUF4=1074103084,
PWM0_PWM_CMPBUF5=1074103088,
PWM0_PWM_FTCBUF0_1=1074103104,
PWM0_PWM_FTCBUF2_3=1074103108,
PWM0_PWM_FTCBUF4_5=1074103112,
PWM0_PWM_FTCI=1074103116,
PWM1_PWM_CTL0=1074106368,
PWM1_PWM_CTL1=1074106372,
PWM1_PWM_SYNC=1074106376,
PWM1_PWM_SWSYNC=1074106380,
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_LOAD=1074106408,
PWM1_PWM_PERIOD0=1074106416,
PWM1_PWM_PERIOD1=1074106420,
PWM1_PWM_PERIOD2=1074106424,
PWM1_PWM_PERIOD3=1074106428,
PWM1_PWM_PERIOD4=1074106432,
PWM1_PWM_PERIOD5=1074106436,
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_PHS0_1=1074106496,
PWM1_PWM_PHS2_3=1074106500,
PWM1_PWM_PHS4_5=1074106504,
PWM1_PWM_CNT0=1074106512,
PWM1_PWM_CNT1=1074106516,
PWM1_PWM_CNT2=1074106520,
PWM1_PWM_CNT3=1074106524,
PWM1_PWM_CNT4=1074106528,
PWM1_PWM_CNT5=1074106532,
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_IFA=1074106608,
PWM1_PWM_EADCTS0=1074106616,
PWM1_PWM_EADCTS1=1074106620,
PWM1_PWM_FTCMPDAT0_1=1074106624,
PWM1_PWM_FTCMPDAT2_3=1074106628,
PWM1_PWM_FTCMPDAT4_5=1074106632,
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_PBUF1=1074107144,
PWM1_PWM_PBUF2=1074107148,
PWM1_PWM_PBUF3=1074107152,
PWM1_PWM_PBUF4=1074107156,
PWM1_PWM_PBUF5=1074107160,
PWM1_PWM_CMPBUF0=1074107164,
PWM1_PWM_CMPBUF1=1074107168,
PWM1_PWM_CMPBUF2=1074107172,
PWM1_PWM_CMPBUF3=1074107176,
PWM1_PWM_CMPBUF4=1074107180,
PWM1_PWM_CMPBUF5=1074107184,
PWM1_PWM_FTCBUF0_1=1074107200,
PWM1_PWM_FTCBUF2_3=1074107204,
PWM1_PWM_FTCBUF4_5=1074107208,
PWM1_PWM_FTCI=1074107212,
WDT_WDT_CTL=1074003968,
WDT_WDT_ALTCTL=1074003972,
WWDT_WWDT_RLDCNT=1074004224,
WWDT_WWDT_CTL=1074004228,
WWDT_WWDT_STATUS=1074004232,
WWDT_WWDT_CNT=1074004236,
RTC_RTC_INIT=1074008064,
RTC_RTC_RWEN=1074008068,
RTC_RTC_FREQADJ=1074008072,
RTC_RTC_TIME=1074008076,
RTC_RTC_CAL=1074008080,
RTC_RTC_CLKFMT=1074008084,
RTC_RTC_WEEKDAY=1074008088,
RTC_RTC_TALM=1074008092,
RTC_RTC_CALM=1074008096,
RTC_RTC_LEAPYEAR=1074008100,
RTC_RTC_INTEN=1074008104,
RTC_RTC_INTSTS=1074008108,
RTC_RTC_TICK=1074008112,
RTC_RTC_TAMSK=1074008116,
RTC_RTC_CAMSK=1074008120,
RTC_RTC_SPRCTL=1074008124,
RTC_RTC_SPR0=1074008128,
RTC_RTC_SPR1=1074008132,
RTC_RTC_SPR2=1074008136,
RTC_RTC_SPR3=1074008140,
RTC_RTC_SPR4=1074008144,
RTC_RTC_SPR5=1074008148,
RTC_RTC_SPR6=1074008152,
RTC_RTC_SPR7=1074008156,
RTC_RTC_SPR8=1074008160,
RTC_RTC_SPR9=1074008164,
RTC_RTC_SPR10=1074008168,
RTC_RTC_SPR11=1074008172,
RTC_RTC_SPR12=1074008176,
RTC_RTC_SPR13=1074008180,
RTC_RTC_SPR14=1074008184,
RTC_RTC_SPR15=1074008188,
RTC_RTC_SPR16=1074008192,
RTC_RTC_SPR17=1074008196,
RTC_RTC_SPR18=1074008200,
RTC_RTC_SPR19=1074008204,
RTC_RTC_LXTCTL=1074008320,
RTC_RTC_LXTOCTL=1074008324,
RTC_RTC_LXTICTL=1074008328,
RTC_RTC_TAMPCTL=1074008332,
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,
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,
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,
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,
SC_SC_DAT=1074331648,
SC_SC_CTL=1074331652,
SC_SC_ALTCTL=1074331656,
SC_SC_EGT=1074331660,
SC_SC_RXTOUT=1074331664,
SC_SC_ETUCTL=1074331668,
SC_SC_INTEN=1074331672,
SC_SC_INTSTS=1074331676,
SC_SC_STATUS=1074331680,
SC_SC_PINCTL=1074331684,
SC_SC_TMRCTL0=1074331688,
SC_SC_TMRCTL1=1074331692,
SC_SC_TMRCTL2=1074331696,
SC_SC_UARTCTL=1074331700,
SC_SC_TMRDAT0=1074331704,
SC_SC_TMRDAT1_2=1074331708,
I2C0_I2C_CTL=1074266112,
I2C0_I2C_ADDR0=1074266116,
I2C0_I2C_DAT=1074266120,
I2C0_I2C_STATUS=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_BUSCTL=1074266180,
I2C0_I2C_BUSTCTL=1074266184,
I2C0_I2C_BUSSTS=1074266188,
I2C0_I2C_PKTSIZE=1074266192,
I2C0_I2C_PKTCRC=1074266196,
I2C0_I2C_BUSTOUT=1074266200,
I2C0_I2C_CLKTOUT=1074266204,
I2C1_I2C_CTL=1074270208,
I2C1_I2C_ADDR0=1074270212,
I2C1_I2C_DAT=1074270216,
I2C1_I2C_STATUS=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_BUSCTL=1074270276,
I2C1_I2C_BUSTCTL=1074270280,
I2C1_I2C_BUSSTS=1074270284,
I2C1_I2C_PKTSIZE=1074270288,
I2C1_I2C_PKTCRC=1074270292,
I2C1_I2C_BUSTOUT=1074270296,
I2C1_I2C_CLKTOUT=1074270300,
SPI0_SPI_CTL=1074135040,
SPI0_SPI_CLKDIV=1074135044,
SPI0_SPI_SSCTL=1074135048,
SPI0_SPI_PDMACTL=1074135052,
SPI0_SPI_FIFOCTL=1074135056,
SPI0_SPI_STATUS=1074135060,
SPI0_SPI_TX=1074135072,
SPI0_SPI_RX=1074135088,
SPI1_SPI_CTL=1074139136,
SPI1_SPI_CLKDIV=1074139140,
SPI1_SPI_SSCTL=1074139144,
SPI1_SPI_PDMACTL=1074139148,
SPI1_SPI_FIFOCTL=1074139152,
SPI1_SPI_STATUS=1074139156,
SPI1_SPI_TX=1074139168,
SPI1_SPI_RX=1074139184,
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_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,
USBH_HCREVISION=1073778688,
USBH_HCCONTROL=1073778692,
USBH_HCCOMMANDSTATUS=1073778696,
USBH_HCINTERRUPTSTATUS=1073778700,
USBH_HCINTERRUPTENABLE=1073778704,
USBH_HCINTERRUPTDISABLE=1073778708,
USBH_HCHCCA=1073778712,
USBH_HCPERIODCURRENTED=1073778716,
USBH_HCCONTROLHEADED=1073778720,
USBH_HCCONTROLCURRENTED=1073778724,
USBH_HCBULKHEADED=1073778728,
USBH_HCBULKCURRENTED=1073778732,
USBH_HCDONEHEAD=1073778736,
USBH_HCFMINTERVAL=1073778740,
USBH_HCFMREMAINING=1073778744,
USBH_HCFMNUMBER=1073778748,
USBH_HCPERIODICSTART=1073778752,
USBH_HCLSTHRESHOLD=1073778756,
USBH_HCRHDESCRIPTORA=1073778760,
USBH_HCRHDESCRIPTORB=1073778764,
USBH_HCRHSTATUS=1073778768,
USBH_HCRHPORTSTATUS1=1073778772,
USBH_HCPHYCONTROL=1073779200,
USBH_HCMISCCONTROL=1073779204,
CRC_CRC_CTL=1073942528,
CRC_CRC_DAT=1073942532,
CRC_CRC_SEED=1073942536,
CRC_CRC_CHECKSUM=1073942540,
EADC_EADC_DAT0=1074016256,
EADC_EADC_DAT1=1074016260,
EADC_EADC_DAT2=1074016264,
EADC_EADC_DAT3=1074016268,
EADC_EADC_DAT4=1074016272,
EADC_EADC_DAT5=1074016276,
EADC_EADC_DAT6=1074016280,
EADC_EADC_DAT7=1074016284,
EADC_EADC_DAT8=1074016288,
EADC_EADC_DAT9=1074016292,
EADC_EADC_DAT10=1074016296,
EADC_EADC_DAT11=1074016300,
EADC_EADC_DAT12=1074016304,
EADC_EADC_DAT13=1074016308,
EADC_EADC_DAT14=1074016312,
EADC_EADC_DAT15=1074016316,
EADC_EADC_DAT16=1074016320,
EADC_EADC_DAT17=1074016324,
EADC_EADC_DAT18=1074016328,
EADC_EADC_CURDAT=1074016332,
EADC_EADC_CTL=1074016336,
EADC_EADC_SWTRG=1074016340,
EADC_EADC_PENDSTS=1074016344,
EADC_EADC_OVSTS=1074016348,
EADC_EADC_SCTL0=1074016384,
EADC_EADC_SCTL1=1074016388,
EADC_EADC_SCTL2=1074016392,
EADC_EADC_SCTL3=1074016396,
EADC_EADC_SCTL4=1074016400,
EADC_EADC_SCTL5=1074016404,
EADC_EADC_SCTL6=1074016408,
EADC_EADC_SCTL7=1074016412,
EADC_EADC_SCTL8=1074016416,
EADC_EADC_SCTL9=1074016420,
EADC_EADC_SCTL10=1074016424,
EADC_EADC_SCTL11=1074016428,
EADC_EADC_SCTL12=1074016432,
EADC_EADC_SCTL13=1074016436,
EADC_EADC_SCTL14=1074016440,
EADC_EADC_SCTL15=1074016444,
EADC_EADC_SCTL16=1074016448,
EADC_EADC_SCTL17=1074016452,
EADC_EADC_SCTL18=1074016456,
EADC_EADC_INTSRC0=1074016464,
EADC_EADC_INTSRC1=1074016468,
EADC_EADC_INTSRC2=1074016472,
EADC_EADC_INTSRC3=1074016476,
EADC_EADC_CMP0=1074016480,
EADC_EADC_CMP1=1074016484,
EADC_EADC_CMP2=1074016488,
EADC_EADC_CMP3=1074016492,
EADC_EADC_STATUS0=1074016496,
EADC_EADC_STATUS1=1074016500,
EADC_EADC_STATUS2=1074016504,
EADC_EADC_STATUS3=1074016508,
EADC_EADC_DDAT0=1074016512,
EADC_EADC_DDAT1=1074016516,
EADC_EADC_DDAT2=1074016520,
EADC_EADC_DDAT3=1074016524,
}
g_M4521_regs=REG
function read_M4521_Registers(e,e,e,e)
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_M4521_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"]=ice:ReadMem32(g_M4521_regs.SYS_SYS_GPD_MFPL,5)
e["SYS_SYS_IRCTCTL"],
e["SYS_SYS_IRC48MTRIMCTL"],
e["SYS_SYS_USBPHYCR"]=ice:ReadMemMulti(g_M4521_regs.SYS_SYS_IRCTCTL,
g_M4521_regs.SYS_SYS_IRC48MTRIMCTL,
g_M4521_regs.SYS_SYS_USBPHYCR)
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"],
e["CLK_CLK_CLKDIV1"]=ice:ReadMem32(g_M4521_regs.CLK_CLK_PWRCTL,10)
e["CLK_CLK_PLLCTL"],
e["CLK_CLK_STATUS"],
e["CLK_CLK_CLKOCTL"]=ice:ReadMemMulti(g_M4521_regs.CLK_CLK_PLLCTL,
g_M4521_regs.CLK_CLK_STATUS,
g_M4521_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_M4521_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_M4521_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_M4521_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_M4521_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_M4521_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_M4521_regs.GPIO_PF_MODE,5)
e["GPIO_PA_SLEWCTL"],
e["GPIO_PB_SLEWCTL"],
e["GPIO_PC_SLEWCTL"],
e["GPIO_PD_SLEWCTL"]=ice:ReadMemMulti(g_M4521_regs.GPIO_PA_SLEWCTL,
g_M4521_regs.GPIO_PB_SLEWCTL,
g_M4521_regs.GPIO_PC_SLEWCTL,
g_M4521_regs.GPIO_PD_SLEWCTL)
e["GPIO_PE_SLEWCTL"],
e["GPIO_PF_SLEWCTL"]=ice:ReadMemMulti(g_M4521_regs.GPIO_PE_SLEWCTL,
g_M4521_regs.GPIO_PF_SLEWCTL)
e["UART0_UART_BAUD"],
e["UART1_UART_BAUD"],
e["UART2_UART_BAUD"],
e["UART3_UART_BAUD"]=ice:ReadMemMulti(g_M4521_regs.UART0_UART_BAUD,
g_M4521_regs.UART1_UART_BAUD,
g_M4521_regs.UART2_UART_BAUD,
g_M4521_regs.UART3_UART_BAUD)
e["SPI0_SPI_CTL"],
e["SPI0_SPI_CLKDIV"],
e["SPI1_SPI_CTL"],
e["SPI1_SPI_CLKDIV"]=ice:ReadMemMulti(g_M4521_regs.SPI0_SPI_CTL,
g_M4521_regs.SPI0_SPI_CLKDIV,
g_M4521_regs.SPI1_SPI_CTL,
g_M4521_regs.SPI1_SPI_CLKDIV)
e["I2C0_I2C_CTL"],
e["I2C0_I2C_CLKDIV"],
e["I2C1_I2C_CTL"],
e["I2C1_I2C_CLKDIV"]=ice:ReadMemMulti(g_M4521_regs.I2C0_I2C_CTL,
g_M4521_regs.I2C0_I2C_CLKDIV,
g_M4521_regs.I2C1_I2C_CTL,
g_M4521_regs.I2C1_I2C_CLKDIV)
e["TMR01_TIMER0_CTL"],
e["TMR01_TIMER1_CTL"],
e["TMR23_TIMER2_CTL"],
e["TMR23_TIMER3_CTL"]=ice:ReadMemMulti(g_M4521_regs.TMR01_TIMER0_CTL,
g_M4521_regs.TMR01_TIMER1_CTL,
g_M4521_regs.TMR23_TIMER2_CTL,
g_M4521_regs.TMR23_TIMER3_CTL)
e["EBI_EBI_CTL0"],
e["EBI_EBI_CTL1"]=ice:ReadMemMulti(g_M4521_regs.EBI_EBI_CTL0,
g_M4521_regs.EBI_EBI_CTL1)
e["SC_SC_CTL"],
e["SC_SC_ETUCTL"],
e["SC_SC_UARTCTL"]=ice:ReadMemMulti(g_M4521_regs.SC_SC_CTL,
g_M4521_regs.SC_SC_ETUCTL,
g_M4521_regs.SC_SC_UARTCTL)
e["PWM0_PWM_CLKSRC"],
e["PWM1_PWM_CLKSRC"]=ice:ReadMemMulti(g_M4521_regs.PWM0_PWM_CLKSRC,
g_M4521_regs.PWM1_PWM_CLKSRC)
e["PWM0_PWM_CLKPSC0_1"],
e["PWM0_PWM_CLKPSC2_3"],
e["PWM0_PWM_CLKPSC4_5"]=ice:ReadMem32(g_M4521_regs.PWM0_PWM_CLKPSC0_1,3)
e["PWM1_PWM_CLKPSC0_1"],
e["PWM1_PWM_CLKPSC2_3"],
e["PWM1_PWM_CLKPSC4_5"]=ice:ReadMem32(g_M4521_regs.PWM1_PWM_CLKPSC0_1,3)
e["PWM0_PWM_CNTEN"],
e["PWM1_PWM_CNTEN"]=ice:ReadMemMulti(g_M4521_regs.PWM0_PWM_CNTEN,
g_M4521_regs.PWM1_PWM_CNTEN)
return e
end
local n={
[0]=kPinDirection_In,
[1]=kPinDirection_PushPullOut,
[2]=kPinDirection_OpenDrainOut,
[3]=kPinDirection_Bi,
}
local u={
[0]="INPUT",
[1]="OUTPUT",
[2]="Open-Drain",
[3]="Quasi-bidirectional",
}
function get_mfp_regs(a,o,t)
local e
if t>=0 and t<=7 then
e="L"
else
e="H"
end
local e={"SYS_SYS_GP"..o.."_MFP"..e}
return reg2str("Multi-Function register",g_M4521_regs,a,e)
end
function get_clk_informnation(e,t)
return reg2str("Clock setting registers",g_M4521_regs,e,t)
end
function get_LIRC_clock(o,a)
local t
local e
table.insert(a,"CLK_CLK_PWRCTL")
local a=ext.band(o["CLK_CLK_PWRCTL"],8)
if a==0 then
t=0
e="invalid internal 10kHz low speed oscillator clock (see CLK_PWRCTL[3].LIRCEN)"
else
t=10000
e="internal 10kHz low speed oscillator clock"
end
return t,e
end
function get_HIRC_clock(o,a)
local t
local e
table.insert(a,"CLK_CLK_PWRCTL")
local i=ext.band(o["CLK_CLK_PWRCTL"],4)
if i==0 then
t=0
e="invalid internal 22.1184MHz 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
t=22118400
e="internal 22.1184MHz high speed oscillator clock"
elseif a==1 then
t=22118400
e="internal 22.1184MHz high speed oscillator clock (auto trim)"
else
t=0
e="invalid HIRC trim frequency selection (see SYS_IRCTCTL[1:0].FREQSEL)"
end
end
return t,e
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 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 get_HXT_clock(o,a)
local t
local e
table.insert(a,"CLK_CLK_PWRCTL")
local a=ext.band(o["CLK_CLK_PWRCTL"],1)
if a==0 then
t=0
e="invalid external 4~20M high speed crystal clock (see CLK_PWRCTL[0].HXTEN)"
else
t=12000000
e="external 4~20M high speed crystal clock, when external input clock is 12M"
end
return t,e
end
function get_HIRC48_clock(o,a)
local e
local t
table.insert(a,"CLK_CLK_PWRCTL")
local i=ext.band(o["CLK_CLK_PWRCTL"],16777216)
if i==0 then
e=0
t="invalid internal 48MHz high speed oscillator clock (see CLK_PWRCTL[24].HIRC48MEN)"
else
table.insert(a,"SYS_SYS_IRC48MTRIMCTL")
local a=ext.band(o["SYS_SYS_IRC48MTRIMCTL"],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_IRC48MTRIMCTL[1:0].FREQSEL)"
end
end
return e,t
end
function get_PLL_clock(a,o)
local t
local e
table.insert(o,"CLK_CLK_PLLCTL")
if ext.band(ext.rshift(a["CLK_CLK_PLLCTL"],16),1)~=0 then
t=0
e="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
t,e=get_HIRC_clock(a,o)
else
t,e=get_HXT_clock(a,o)
end
if t~=0 then
local o=ext.band(ext.rshift(a["CLK_CLK_PLLCTL"],17),1)
if o~=0 then
e=string.format("PLL clock (%sHz), bypassed from %s",val2str(t),e)
else
local i=ext.band(a["CLK_CLK_PLLCTL"],511)+2
local n=ext.band(ext.rshift(a["CLK_CLK_PLLCTL"],9),31)+2
local o={1,2,2,4}
local a=o[ext.band(ext.rshift(a["CLK_CLK_PLLCTL"],14),3)+1]
t=t*i/n/a
e=string.format("PLL clock (%sHz), from %s",val2str(t),e)
end
else
e="PLL clock from "..e
end
end
return t,e
end
function get_sys_clock(a,o,n)
local t
local e
table.insert(o,"CLK_CLK_CLKSEL0")
local i=ext.band(a["CLK_CLK_CLKSEL0"],7)
if i==0 then
t,e=get_HXT_clock(a,o)
elseif i==1 then
t,e=get_LXT_clock(a,o)
elseif i==2 then
t,e=get_PLL_clock(a,o)
elseif i==3 then
t,e=get_LIRC_clock(a,o)
elseif i==7 then
t,e=get_HIRC_clock(a,o)
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(o,"CLK_CLK_CLKDIV0")
local a=ext.band(a["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(o,i,a)
local t
local e
t,e=get_HCLK_clock(o,i)
if t==0 then
e=string.format("PCLK%d clock from ",a)..e
else
e=string.format("PCLK%d clock (%sHz), from %s",
a,val2str(t),e)
end
return t,e
end
function fill_M4521_GPIO(o,s,t,e,r)
if r==nil then r=string.format("P%s.%d",t,e)end
local a=s["GPIO_P"..t.."_MODE"]
local c=s["GPIO_P"..t.."_DINOFF"]
local d=s["GPIO_P"..t.."_DOUT"]
local h=s["GPIO_P"..t.."_DATMSK"]
local l=s["GPIO_P"..t.."_PIN"]
local m=s["GPIO_P"..t.."_SLEWCTL"]
o["highlight_text"]=r
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(l,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(d,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,u[i])
if n[i]==kPinDirection_In
or n[i]==kPinDirection_Bi then
if ext.band(l,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(d,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
local h=ext.band(ext.rshift(m,e),1)
if h==0 then
a=a.."IO output with basic slew rate
"
else
a=a.."IO output with high slew rate
"
end
local h=""
if n[i]==kPinDirection_PushPullOut
or n[i]==kPinDirection_Bi then
if ext.band(d,ext.lshift(1,e))==0 and ext.band(l,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(d,ext.lshift(1,e))~=0 and ext.band(l,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_M4521_regs,s,i)
o["information"]=string.format(
"%s
%s
"..
"%s%s"..
"Information
"..
"%s",
r,
h,
get_mfp_regs(s,t,e),
i,
a)
end
function fill_invalid_GPIO(e,i,t,a)
e["highlight_text"]=string.format("P%s.%d",t,a)
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",
t,a,
o,
get_mfp_regs(i,t,a))
end
function fill_M4521_EADC(e,o,s,h,n)
local a=""
local t=""
local i={}
e["highlight_text"]=n
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_ADC
e["pin_bg_color"]=kBgColor_ADC
e["direction"]=kPinDirection_Unknown
e["status"]=kPinStatus_Unknown
table.insert(i,"CLK_CLK_APBCLK0")
local r=ext.band(ext.rshift(o["CLK_CLK_APBCLK0"],28),1)
if r~=0 then
local n
local e
n,e=get_PCLK_clock(o,i,1)
table.insert(i,"CLK_CLK_CLKDIV0")
local o=ext.band(ext.rshift(o["CLK_CLK_CLKDIV0"],16),255)
local o=n/(o+1)
if o~=0 then
a=string.format("EADC clock frequency: %sHz, from %s.
",val2str(o),e)
else
t="EADC clock is not available, "..e..".
"
end
else
t="EADC clock is not available (see CLK_APBCLK0[28].EADCCKEN).
"
end
if t~=""then
t=""..t..""
e["pin_no_color"]=kBgColor_Error
end
if a~=""then
a="Information
"..a
end
e["information"]=string.format(
"%s
%s
%s%s%s",
n,
t,
get_mfp_regs(o,s,h),
get_clk_informnation(o,i),
a)
end
function fill_M4521_USB(a,t,s,h,n)
local i=""
local e=""
local o={}
a["highlight_text"]=n
a["normal_color"]=kColor_Invalid
a["highlight_color"]=kColor_USB
a["pin_bg_color"]=kBgColor_USB
a["direction"]=kPinDirection_Unknown
a["status"]=kPinStatus_Unknown
function get_usb_clk()
local e
local a
table.insert(o,"CLK_CLK_CLKSEL0")
local i=ext.band(ext.rshift(t["CLK_CLK_CLKSEL0"],8),1)
if i==0 then
e,a=get_PLL_clock(t,o)
else
e,a=get_HIRC48_clock(t,o)
end
table.insert(o,"CLK_CLK_CLKDIV0")
local t=ext.band(ext.rshift(t["CLK_CLK_CLKDIV0"],4),15)
e=e/(t+1)
return e,a
end
table.insert(o,"SYS_SYS_USBPHYCR")
local r=ext.band(t["SYS_SYS_USBPHYCR"],3)
if r==0 then
table.insert(o,"CLK_CLK_APBCLK0")
local t=ext.band(t["CLK_CLK_APBCLK0"],ext.lshift(1,27))
if t~=0 then
local a
local t
a,t=get_usb_clk()
if a~=0 then
i=string.format("USBD clock frequency: %sHz, from %s.
",val2str(a),t)
else
e="USBD clock is not available, "..t..".
"
end
else
e="USBD clock is not available (see CLK_APBCLK0[27].USBDCKEN).
"
end
elseif r==1 then
table.insert(o,"CLK_CLK_AHBCLK")
local t=ext.band(ext.rshift(t["CLK_CLK_AHBCLK"],4),1)
if t then
local a
local t
a,t=get_usb_clk()
if a~=0 then
i=string.format("USBH clock frequency: %sHz, from %s.
",val2str(a),t)
else
e="USBH clock is not available, "..t..".
"
end
else
e="USBH clock is not available (see CLK_AHBCLK[4].USBHEN).
"
end
else
e="Invalid USB role option (see SYS_USBPHYCR[1:0].USB_ROLE).
"
end
if e~=""then
e=""..e..""
a["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
if s~=nil and h~=nil then
a["information"]=string.format(
"%s
%s
"..
"%s%s%s",
n,
e,
get_mfp_regs(t,s,h),
get_clk_informnation(t,o),
i)
else
a["information"]=string.format(
"%s
%s
"..
"%s%s",
n,
e,
get_clk_informnation(t,o),
i)
end
end
function fill_M4521_UART(o,e,u,l,d,i)
local n=""
local a=""
local t={}
local h=0
o["highlight_text"]=d
o["normal_color"]=kColor_Invalid
o["highlight_color"]=kColor_UART
o["pin_bg_color"]=kBgColor_UART
o["direction"]=kPinDirection_Unknown
o["status"]=kPinStatus_Unknown
function get_uart_baudate(o)
local h=string.format("UART%d",i)
local a=string.format("UART%d_UART_BAUD",i)
table.insert(t,a)
local t=ext.band(e[a],536870912)
local i=ext.band(e[a],268435456)
local s=ext.rshift(ext.band(e[a],251658240),24)
local a=ext.band(e[a],65535)
local e=0
local n=""
if t==0 and i==0 then
e=o/(16*(a+2))
elseif t~=0 and i==0 then
if s>=8 then
e=o/((s+1)*(a+2))
else
n="invalid "..h.."'s UART_BAUD value, EDIV_M1 must >= 8"
end
elseif t~=0 and i~=0 then
e=o/(a+2)
else
n="invalid "..h.."'s UART_BAUD value"
end
return e,n
end
table.insert(t,"CLK_CLK_APBCLK0")
local s=ext.band(ext.rshift(e["CLK_CLK_APBCLK0"],i+16),1)
if s~=0 then
table.insert(t,"CLK_CLK_CLKSEL1")
table.insert(t,"CLK_CLK_CLKDIV0")
local r=ext.band(ext.rshift(e["CLK_CLK_CLKSEL1"],24),3)
local d=ext.band(ext.rshift(e["CLK_CLK_CLKDIV0"],8),15)
local s
local o
if r==0 then
s,o=get_HXT_clock(e,t)
elseif r==1 then
s,o=get_PLL_clock(e,t)
elseif r==2 then
s,o=get_LXT_clock(e,t)
else
s,o=get_HIRC_clock(e,t)
end
h=s/(d+1)
if h~=0 then
n=string.format("UART%d clock frequency: %sHz, from %s.
",i,val2str(h),o)
else
a=string.format("UART%d clock is not available, %s.
",i,o)
end
else
a=string.format("UART%d clock is not available (see CLK_APBCLK0[%d].UART%dCKEN).
",
i,i+16,i)
end
if a==""then
local e,t=get_uart_baudate(h)
if e~=0 then
n=n..string.format("UART baudrate: %d
",e)
else
a=t..".
"
end
end
if a~=""then
a=""..a..""
o["pin_no_color"]=kBgColor_Error
end
if n~=""then
n="Information
"..n
end
o["information"]=string.format(
"%s
%s
"..
"%s%s%s",
d,
a,
get_mfp_regs(e,u,l),
get_clk_informnation(e,t),
n)
end
function fill_M4521_SPI(a,e,u,l,d,h)
local o=""
local s=""
local t={}
a["highlight_text"]=d
a["normal_color"]=kColor_Invalid
a["highlight_color"]=kColor_SPI
a["pin_bg_color"]=kBgColor_SPI
a["direction"]=kPinDirection_Unknown
a["status"]=kPinStatus_Unknown
local i=string.format("SPI%d",h)
table.insert(t,"CLK_CLK_APBCLK0")
local n=ext.band(ext.rshift(e["CLK_CLK_APBCLK0"],h+12),1)
if n~=0 then
local n
local a
table.insert(t,"CLK_CLK_CLKSEL2")
local r=ext.band(ext.rshift(e["CLK_CLK_CLKSEL2"],2*h+2),3)
if r==0 then
n,a=get_HXT_clock(e,t)
elseif r==1 then
n,a=get_PLL_clock(e,t)
elseif r==2 then
n,a=get_PCLK_clock(e,t,ext.band(h,1))
else
n,a=get_HIRC_clock(e,t)
end
if n~=0 then
local s=string.format("%s_SPI_CTL",i)
local h=string.format("%s_SPI_CLKDIV",i)
table.insert(t,s)
local s=ext.band(ext.rshift(e[s],18),1)
if s~=0 then
o=string.format("%s is in slave mode.
",i)
else
o=string.format("%s is in master mode.
",i)
table.insert(t,h)
local e=ext.band(e[h],255)
local e=n/(e+1)
o=o..string.format("%s clock frequency: %sHz, from %s.
",
i,val2str(e),a)
end
else
s=string.format("%s clock is not available, %s.
",i,a)
end
else
s=string.format("%s clock is not available (see CLK_APBCLK0[%d].%sCKEN).
",
i,h+12,i)
end
if s~=""then
s=""..s..""
a["pin_no_color"]=kBgColor_Error
end
if o~=""then
o="Information
"..o
end
a["information"]=string.format(
"%s
%s
"..
"%s%s%s",
d,
s,
get_mfp_regs(e,u,l),
get_clk_informnation(e,t),
o)
end
function fill_M4521_SPI_IO(e,a,o,t)
local o=string.format("SPI%d",o)
local o=string.format("%s_SPI_CTL",o)
local a=ext.band(ext.rshift(a[o],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
function fill_M4521_I2C(a,i,r,d,h,e)
local o=""
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(i["CLK_CLK_APBCLK0"],8+e),1)
if s~=0 then
local a=string.format("I2C%d_I2C_CTL",e)
local h=string.format("I2C%d_I2C_CLKDIV",e)
table.insert(n,a)
local a=ext.band(ext.rshift(i[a],6),1)
if a~=0 then
local s
local a
s,a=get_PCLK_clock(i,n,ext.band(e,1))
if s~=0 then
table.insert(n,h)
local i=ext.band(i[h],255)
if i<4 then
t=string.format("Invalid I2C%d's I2C_CLKDIV value, I2C_CLKDIV must >= 4.
",e)
else
local t=s/(4*(i+1))
o=o..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_CTL[6].I2CEN).
",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 o~=""then
o="Information
"..o
end
a["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
t,
get_mfp_regs(i,r,d),
get_clk_informnation(i,n),
o)
end
function fill_M4521_CLKO(a,e,r,d,h)
local i=""
local o=""
local t={}
a["highlight_text"]=h
a["normal_color"]=kColor_Invalid
a["highlight_color"]=kColor_CLK
a["pin_bg_color"]=kBgColor_CLK
a["direction"]=kPinDirection_PushPullOut
a["status"]=kPinStatus_Unknown
table.insert(t,"CLK_CLK_APBCLK0")
local n=ext.band(ext.rshift(e["CLK_CLK_APBCLK0"],6),1)
if n~=0 then
table.insert(t,"CLK_CLK_CLKOCTL")
local a=ext.band(ext.rshift(e["CLK_CLK_CLKOCTL"],6),1)
if a==0 then
local a=ext.band(ext.rshift(e["CLK_CLK_CLKOCTL"],4),1)
if a~=0 then
local a
local n
table.insert(t,"CLK_CLK_CLKSEL1")
local s=ext.band(ext.rshift(e["CLK_CLK_CLKSEL1"],28),3)
if s==0 then
a,n=get_HXT_clock(e,t)
elseif s==1 then
a,n=get_LXT_clock(e,t)
elseif s==2 then
a,n=get_HCLK_clock(e,t)
else
a,n=get_HIRC_clock(e,t)
end
if a~=0 then
local t=a
local o=ext.band(ext.rshift(e["CLK_CLK_CLKOCTL"],5),1)
if o==0 then
local e=ext.band(e["CLK_CLK_CLKOCTL"],15)
t=a/ext.lshift(1,(e+1))
end
i=string.format("CLKO clock frequency: %sHz, from %s.
",val2str(t),n)
else
o="CLKO clock is not available, "..n..".
"
end
else
o="CLKO output function disabled (see CLK_CLKOCTL[4].CLKOEN).
"
end
else
i="1Hz clock from RTC"
end
else
o="CLKO clock is not available (see CLK_APBCLK0[6].CLKOCKEN).
"
end
if o~=""then
o=""..o..""
a["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
a["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
o,
get_mfp_regs(e,r,d),
get_clk_informnation(e,t),
i)
end
function fill_M4521_TM(n,t,d,l,r,e)
local o=""
local i=""
local a={}
n["highlight_text"]=r
n["normal_color"]=kColor_Invalid
n["highlight_color"]=kColor_TM
n["pin_bg_color"]=kBgColor_TM
n["direction"]=kPinDirection_Unknown
n["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 n=string.format("TMR%d%d_TIMER%d_CTL",ext.rshift(e,1)*2,ext.rshift(e,1)*2+1,e)
table.insert(a,n)
local n=ext.band(ext.rshift(t[n],24),1)
if n~=0 then
o=string.format("TMR%d external counting pin function enabled.
",e)
else
local n
local s
table.insert(a,"CLK_CLK_CLKSEL1")
local h=ext.band(ext.rshift(t["CLK_CLK_CLKSEL1"],8+e*4),7)
if h==0 then
n,s=get_HXT_clock(t,a)
elseif h==1 then
n,s=get_LXT_clock(t,a)
elseif h==2 then
if e==0 or e==1 then
n,s=get_PCLK_clock(t,a,0)
else
n,s=get_PCLK_clock(t,a,1)
end
elseif h==3 then
o=string.format("TMR%d clock source is from external clock T%d pin.
",e,e)
elseif h==5 then
n,s=get_LIRC_clock(t,a)
elseif h==7 then
n,s=get_HIRC_clock(t,a)
else
i=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 i==""and o==""then
if n~=0 then
o=string.format("TMR%d clock frequency: %sHz, from %s.
",
e,val2str(n),s)
else
i=string.format("TMR%d clock is not available, %s.
",e,s)
end
end
end
else
i=string.format("TMR%d clock is not available (see CLK_APBCLK0[%d].TMR%dCKEN).
",e,e+2,e)
end
if i~=""then
i=""..i..""
n["pin_no_color"]=kBgColor_Error
end
if o~=""then
o="Information
"..o
end
n["information"]=string.format(
"%s
%s
"..
"%s%s%s",
r,
i,
get_mfp_regs(t,d,l),
get_clk_informnation(t,a),
o)
end
function fill_M4521_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 o=0,1 do
local t=string.format("EBI_EBI_CTL%d",o)
table.insert(i,t)
local i=ext.band(a[t],1)
if i~=0 then
local i=ext.band(ext.rshift(a[t],8),7)
local i=ext.rshift(s,i)
local t=ext.band(ext.rshift(a[t],1),1)
e=e..string.format("EBI Bank%d MCLK frequency: %sHz, from %s.
",
o,val2str(i),n)
e=e..string.format("EBI Bank%d: address/data bus %s mode, and data width %d-bit
",
o,"multiplex",(t~=0)and 16 or 8)
else
e=e..string.format("EBI Bank%d disabled
",o)
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_M4521_PWM(n,a,c,u,l,e,h)
local s=""
local i=""
local o={}
n["highlight_text"]=l
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 h~=nil then
local t=ext.rshift(h,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 r
table.insert(o,"CLK_CLK_CLKSEL2")
local d=ext.band(ext.rshift(a["CLK_CLK_CLKSEL2"],e),1)
if d==0 then
n,r=get_PLL_clock(a,o)
else
n,r=get_PCLK_clock(a,o,ext.band(e,1))
end
local d=string.format("PWM%d_PWM_CNTEN",e)
table.insert(o,d)
local d=ext.band(ext.rshift(a[d],h),1)
if d==0 then
i=string.format("PWM%d counter%d stops running.
",e,h)
else
local d=string.format("PWM%d_PWM_CLKSRC",e)
table.insert(o,d)
local d=ext.band(ext.rshift(a[d],8*t),7)
if d==0 then
if n==0 then
i=string.format("PWM%d clock is not available, %s.
",e,r)
else
local t=string.format("PWM%d_PWM_CLKPSC%d_%d",e,2*t,2*t+1)
table.insert(o,t)
local t=ext.band(a[t],4095)
local t=n/(t+1)
s=string.format("PWM%d clock frequency: %sHz, from %s.
",
e,val2str(n),r)
s=s..string.format("PWM%d counter%d frequency: %sHz (Pre-Scaled)
",
e,h,val2str(t))
end
elseif d<=4 then
s=string.format("PWM%d_CH%d%d clock source is from TIMER%d.
",
e,2*t,2*t+1,d-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",
l,
i,
get_mfp_regs(a,c,u),
get_clk_informnation(a,o),
s)
end
function fill_M4521_SC(n,t,u,l,d,e)
local a=""
local i=""
local o={}
local h=0
n["highlight_text"]=d
n["normal_color"]=kColor_Invalid
n["highlight_color"]=kColor_SC
n["pin_bg_color"]=kBgColor_SC
n["direction"]=kPinDirection_PushPullOut
n["status"]=kPinStatus_Unknown
if e==0 then
table.insert(o,"CLK_CLK_APBCLK1")
local n=ext.band(ext.rshift(t["CLK_CLK_APBCLK1"],e),1)
if n~=0 then
local r=string.format("SC_SC_CTL")
table.insert(o,r)
if ext.band(t[r],1)~=0 then
local s
local n
table.insert(o,"CLK_CLK_CLKSEL3")
local r=ext.band(ext.rshift(t["CLK_CLK_CLKSEL3"],e*2),3)
if r==0 then
s,n=get_HXT_clock(t,o)
elseif r==1 then
s,n=get_PLL_clock(t,o)
elseif r==2 then
s,n=get_PCLK_clock(t,o,ext.band(e,1))
else
s,n=get_HIRC_clock(t,o)
end
table.insert(o,"CLK_CLK_CLKDIV1")
local t=ext.band(ext.rshift(t["CLK_CLK_CLKDIV1"],e*8),255)
h=s/(t+1)
if h~=0 then
a=a..string.format("SC%d clock frequency: %sHz, from %s.
",e,val2str(h),n)
else
i=string.format("SC%d clock is not available, ",e)..n..".
"
end
else
i=string.format("SC%d engine disabled (see %s[0].SCEN).
",e,r)
end
else
i=string.format("SC%d clock is not available (see CLK_APBCLK1[%d].SC%dCKEN).
",e,e,e)
end
if i==""then
local n=string.format("SC_SC_UARTCTL")
local s=string.format("SC_SC_ETUCTL")
table.insert(o,n)
table.insert(o,s)
local o=ext.band(t[s],4095)
local s=h/(o+1)
local t=ext.band(t[n],1)
if t~=0 then
a=string.format("SC%d is in UART mode.
",e)..a
if o>4 then
a=a..string.format("UART baudrate: %d
",s)
else
i=string.format("SC%d ETURDIV(SC_ETUCTL[11:0]) must be greater than 4.
",e)
end
else
a=string.format("SC%d is in Smart Card mode.
",e)..a
end
end
end
if i~=""then
i=""..i..""
n["pin_no_color"]=kBgColor_Error
end
if a~=""then
a="Information
"..a
end
n["information"]=string.format(
"%s
%s
"..
"%s%s%s",
d,
i,
get_mfp_regs(t,u,l),
get_clk_informnation(t,o),
a)
end
function fill_M4521_Normal(e,i,o,a,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 o==nil or a==nil then
e["information"]=string.format(
"%s
",
t)
else
e["information"]=string.format(
"%s
"..
"%s",
t,
get_mfp_regs(i,o,a))
end
end