REG=
{
SCS_SYST_CTL=3758153744,
SCS_SYST_RVR=3758153748,
SCS_SYST_CVR=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_CPUID=3758157056,
SCS_ICSR=3758157060,
SCS_SCR=3758157072,
SCS_SHPR2=3758157084,
SCS_SHPR3=3758157088,
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_PUEN=1342193700,
GPIO_PA_INTSTS=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_PUEN=1342193764,
GPIO_PB_INTSTS=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_PUEN=1342193828,
GPIO_PC_INTSTS=1342193832,
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_PUEN=1342193892,
GPIO_PD_INTSTS=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_PUEN=1342193956,
GPIO_PE_INTSTS=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_PUEN=1342194020,
GPIO_PF_INTSTS=1342194024,
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,
SYS_PDID=1342177280,
SYS_RSTSTS=1342177284,
SYS_IPRST1=1342177288,
SYS_IPRST2=1342177292,
SYS_TEMPCTL=1342177312,
SYS_RCCFCTL=1342177320,
SYS_GPA_MFPL=1342177328,
SYS_GPA_MFPH=1342177332,
SYS_GPB_MFPL=1342177336,
SYS_GPB_MFPH=1342177340,
SYS_GPC_MFPL=1342177344,
SYS_GPC_MFPH=1342177348,
SYS_GPD_MFPL=1342177352,
SYS_GPD_MFPH=1342177356,
SYS_GPE_MFPL=1342177360,
SYS_GPF_MFPL=1342177368,
SYS_PORCTL=1342177376,
SYS_BODCTL=1342177380,
SYS_BODSTS=1342177384,
SYS_IVREFCTL=1342177388,
SYS_LDOCTL=1342177392,
SYS_BATDCTL=1342177396,
SYS_WKSTS=1342177404,
SYS_RC0TCTL=1342177408,
SYS_RC0TIEN=1342177412,
SYS_RC0TISTS=1342177416,
SYS_RC1TCTL=1342177424,
SYS_RC1TIEN=1342177428,
SYS_RC1TISTS=1342177432,
SYS_MRCTCTL=1342177440,
SYS_MRCTIEN=1342177444,
SYS_MRCTISTS=1342177448,
SYS_REGLCTL=1342177536,
SYS_RPDBCLK=1342177568,
CLK_PWRCTL=1342177792,
CLK_AHBCLK=1342177796,
CLK_APBCLK=1342177800,
CLK_STATUS=1342177804,
CLK_CLKSEL0=1342177808,
CLK_CLKSEL1=1342177812,
CLK_CLKSEL2=1342177816,
CLK_CLKDIV0=1342177820,
CLK_CLKDIV1=1342177824,
CLK_PLLCTL=1342177828,
CLK_CLKOCTL=1342177832,
CLK_WKINTSTS=1342177840,
CLK_APBDIV=1342177844,
CLK_CLKDCTL=1342177848,
FMC_ISPCTL=1342226432,
FMC_ISPADDR=1342226436,
FMC_ISPDAT=1342226440,
FMC_ISPCMD=1342226444,
FMC_ISPTRG=1342226448,
FMC_DFBA=1342226452,
FMC_FTCTL=1342226456,
FMC_ISPSTS=1342226496,
FMC_KEY0=1342226512,
FMC_KEY1=1342226516,
FMC_KEY2=1342226520,
FMC_KEYTRG=1342226524,
FMC_KEYSTS=1342226528,
FMC_KECNT=1342226532,
FMC_KPCNT=1342226536,
PDMA_CH1_PDMA_CTLn=1342210304,
PDMA_CH1_PDMA_SAn=1342210308,
PDMA_CH1_PDMA_DAn=1342210312,
PDMA_CH1_PDMA_CNTn=1342210316,
PDMA_CH1_PDMA_CSAn=1342210324,
PDMA_CH1_PDMA_CDAn=1342210328,
PDMA_CH1_PDMA_CCNTn=1342210332,
PDMA_CH1_PDMA_INTENn=1342210336,
PDMA_CH1_PDMA_INTSTSn=1342210340,
PDMA_CH1_PDMA_TOCn=1342210344,
PDMA_CH2_PDMA_CTLn=1342210560,
PDMA_CH2_PDMA_SAn=1342210564,
PDMA_CH2_PDMA_DAn=1342210568,
PDMA_CH2_PDMA_CNTn=1342210572,
PDMA_CH2_PDMA_CSAn=1342210580,
PDMA_CH2_PDMA_CDAn=1342210584,
PDMA_CH2_PDMA_CCNTn=1342210588,
PDMA_CH2_PDMA_INTENn=1342210592,
PDMA_CH2_PDMA_INTSTSn=1342210596,
PDMA_CH2_PDMA_TOCn=1342210600,
PDMA_CH3_PDMA_CTLn=1342210816,
PDMA_CH3_PDMA_SAn=1342210820,
PDMA_CH3_PDMA_DAn=1342210824,
PDMA_CH3_PDMA_CNTn=1342210828,
PDMA_CH3_PDMA_CSAn=1342210836,
PDMA_CH3_PDMA_CDAn=1342210840,
PDMA_CH3_PDMA_CCNTn=1342210844,
PDMA_CH3_PDMA_INTENn=1342210848,
PDMA_CH3_PDMA_INTSTSn=1342210852,
PDMA_CH3_PDMA_TOCn=1342210856,
PDMA_CH4_PDMA_CTLn=1342211072,
PDMA_CH4_PDMA_SAn=1342211076,
PDMA_CH4_PDMA_DAn=1342211080,
PDMA_CH4_PDMA_CNTn=1342211084,
PDMA_CH4_PDMA_CSAn=1342211092,
PDMA_CH4_PDMA_CDAn=1342211096,
PDMA_CH4_PDMA_CCNTn=1342211100,
PDMA_CH4_PDMA_INTENn=1342211104,
PDMA_CH4_PDMA_INTSTSn=1342211108,
PDMA_CH4_PDMA_TOCn=1342211112,
CRC_CTL=1342213632,
CRC_DMASA=1342213636,
CRC_DMABCNT=1342213644,
CRC_DMACSA=1342213652,
CRC_DMACBCNT=1342213660,
CRC_DMAINTEN=1342213664,
CRC_DMAISTS=1342213668,
CRC_DAT=1342213760,
CRC_SEED=1342213764,
CRC_CHECKSUM=1342213768,
PDMA_GCR_PDMA_GCTL=1342213888,
PDMA_GCR_PDMA_REQSEL0=1342213892,
PDMA_GCR_PDMA_REQSEL1=1342213896,
PDMA_GCR_PDMA_GINTSTS=1342213900,
TMR_TIMER0_CTL=1073807360,
TMR_TIMER0_PRECNT=1073807364,
TMR_TIMER0_CMP=1073807368,
TMR_TIMER0_INTEN=1073807372,
TMR_TIMER0_INTSTS=1073807376,
TMR_TIMER0_CNT=1073807380,
TMR_TIMER0_CAP=1073807384,
TMR_TIMER0_ECTL=1073807392,
TMR_TIMER1_CTL=1073807616,
TMR_TIMER1_PRECNT=1073807620,
TMR_TIMER1_CMP=1073807624,
TMR_TIMER1_INTEN=1073807628,
TMR_TIMER1_INTSTS=1073807632,
TMR_TIMER1_CNT=1073807636,
TMR_TIMER1_CAP=1073807640,
TMR_TIMER1_ECTL=1073807648,
TMR_GPA_SHADOW=1073807872,
TMR_GPB_SHADOW=1073807876,
TMR_GPC_SHADOW=1073807880,
TMR_GPD_SHADOW=1073807884,
TMR_GPE_SHADOW=1073807888,
TMR_GPF_SHADOW=1073807892,
TMR_TIMER2_CTL=1074855936,
TMR_TIMER2_PRECNT=1074855940,
TMR_TIMER2_CMP=1074855944,
TMR_TIMER2_INTEN=1074855948,
TMR_TIMER2_INTSTS=1074855952,
TMR_TIMER2_CNT=1074855956,
TMR_TIMER2_CAP=1074855960,
TMR_TIMER2_ECTL=1074855968,
TMR_TIMER3_CTL=1074856192,
TMR_TIMER3_PRECNT=1074856196,
TMR_TIMER3_CMP=1074856200,
TMR_TIMER3_INTEN=1074856204,
TMR_TIMER3_INTSTS=1074856208,
TMR_TIMER3_CNT=1074856212,
TMR_TIMER3_CAP=1074856216,
TMR_TIMER3_ECTL=1074856224,
PWM0_CTL0=1074003968,
PWM0_CTL1=1074003972,
PWM0_CLKSRC=1074003984,
PWM0_CLKPSC0_1=1074003988,
PWM0_CLKPSC2_3=1074003992,
PWM0_CLKPSC4_5=1074003996,
PWM0_CNTEN=1074004000,
PWM0_CNTCLR=1074004004,
PWM0_PERIOD0=1074004016,
PWM0_PERIOD2=1074004024,
PWM0_PERIOD4=1074004032,
PWM0_CMPDAT0=1074004048,
PWM0_CMPDAT1=1074004052,
PWM0_CMPDAT2=1074004056,
PWM0_CMPDAT3=1074004060,
PWM0_CMPDAT4=1074004064,
PWM0_CMPDAT5=1074004068,
PWM0_DTCTL0_1=1074004080,
PWM0_DTCTL2_3=1074004084,
PWM0_DTCTL4_5=1074004088,
PWM0_CNT0=1074004112,
PWM0_CNT2=1074004120,
PWM0_CNT4=1074004128,
PWM0_WGCTL0=1074004144,
PWM0_WGCTL1=1074004148,
PWM0_MSKEN=1074004152,
PWM0_MSK=1074004156,
PWM0_BNF=1074004160,
PWM0_FAILBRK=1074004164,
PWM0_BRKCTL0_1=1074004168,
PWM0_BRKCTL2_3=1074004172,
PWM0_BRKCTL4_5=1074004176,
PWM0_POLCTL=1074004180,
PWM0_POEN=1074004184,
PWM0_SWBRK=1074004188,
PWM0_INTEN0=1074004192,
PWM0_INTEN1=1074004196,
PWM0_INTSTS0=1074004200,
PWM0_INTSTS1=1074004204,
PWM0_ADCTS0=1074004216,
PWM0_ADCTS1=1074004220,
PWM0_STATUS=1074004256,
PWM0_CAPINEN=1074004480,
PWM0_CAPCTL=1074004484,
PWM0_CAPSTS=1074004488,
PWM0_RCAPDAT0=1074004492,
PWM0_FCAPDAT0=1074004496,
PWM0_RCAPDAT1=1074004500,
PWM0_FCAPDAT1=1074004504,
PWM0_RCAPDAT2=1074004508,
PWM0_FCAPDAT2=1074004512,
PWM0_RCAPDAT3=1074004516,
PWM0_FCAPDAT3=1074004520,
PWM0_RCAPDAT4=1074004524,
PWM0_FCAPDAT4=1074004528,
PWM0_RCAPDAT5=1074004532,
PWM0_FCAPDAT5=1074004536,
PWM0_CAPIEN=1074004560,
PWM0_CAPIF=1074004564,
PWM0_SELFTEST=1074004736,
PWM0_PBUF0=1074004740,
PWM0_PBUF2=1074004748,
PWM0_PBUF4=1074004756,
PWM0_CMPBUF0=1074004764,
PWM0_CMPBUF1=1074004768,
PWM0_CMPBUF2=1074004772,
PWM0_CMPBUF3=1074004776,
PWM0_CMPBUF4=1074004780,
PWM0_CMPBUF5=1074004784,
PWM0_VERSION=1074008060,
WDT_CTL=1073758208,
WDT_INTEN=1073758212,
WDT_STATUS=1073758216,
WWDT_RLDCNT=1073758464,
WWDT_CTL=1073758468,
WWDT_INTEN=1073758472,
WWDT_STATUS=1073758476,
WWDT_CNT=1073758480,
RTC_INIT=1073774592,
RTC_RWEN=1073774596,
RTC_FREQADJ=1073774600,
RTC_TIME=1073774604,
RTC_CAL=1073774608,
RTC_CLKFMT=1073774612,
RTC_WEEKDAY=1073774616,
RTC_TALM=1073774620,
RTC_CALM=1073774624,
RTC_LEAPYEAR=1073774628,
RTC_INTEN=1073774632,
RTC_INTSTS=1073774636,
RTC_TICK=1073774640,
RTC_TAMSK=1073774644,
RTC_CAMSK=1073774648,
RTC_SPRCTL=1073774652,
RTC_SPR0=1073774656,
RTC_SPR1=1073774660,
RTC_SPR2=1073774664,
RTC_SPR3=1073774668,
RTC_SPR4=1073774672,
RTC_LXTCTL=1073774848,
RTC_LXTOCTL=1073774852,
RTC_LXTICTL=1073774856,
RTC_TAMPCTL=1073774860,
UART0_UART_DAT=1074069504,
UART0_UART_CTRL=1074069508,
UART0_UART_LINE=1074069512,
UART0_UART_INTEN=1074069516,
UART0_UART_INTSTS=1074069520,
UART0_UART_TRSR=1074069524,
UART0_UART_FIFOSTS=1074069528,
UART0_UART_MODEM=1074069532,
UART0_UART_TOUT=1074069536,
UART0_UART_BAUD=1074069540,
UART0_UART_IRDA=1074069552,
UART0_UART_ATLCTL=1074069556,
UART0_UART_FUNCSEL=1074069560,
UART0_UART_BRCOMPAT=1074069564,
UART0_UART_WKUPEN=1074069568,
UART0_UART_WKUPSTS=1074069572,
UART1_UART_DAT=1075118080,
UART1_UART_CTRL=1075118084,
UART1_UART_LINE=1075118088,
UART1_UART_INTEN=1075118092,
UART1_UART_INTSTS=1075118096,
UART1_UART_TRSR=1075118100,
UART1_UART_FIFOSTS=1075118104,
UART1_UART_MODEM=1075118108,
UART1_UART_TOUT=1075118112,
UART1_UART_BAUD=1075118116,
UART1_UART_IRDA=1075118128,
UART1_UART_ATLCTL=1075118132,
UART1_UART_FUNCSEL=1075118136,
UART1_UART_BRCOMPAT=1075118140,
UART1_UART_WKUPEN=1075118144,
UART1_UART_WKUPSTS=1075118148,
SC0_SCn_DAT=1075380224,
SC0_SCn_CTL=1075380228,
SC0_SCn_ALTCTL=1075380232,
SC0_SCn_EGT=1075380236,
SC0_SCn_RXTOUT=1075380240,
SC0_SCn_ETUCTL=1075380244,
SC0_SCn_INTEN=1075380248,
SC0_SCn_INTSTS=1075380252,
SC0_SCn_STATUS=1075380256,
SC0_SCn_PINCTL=1075380260,
SC0_SCn_TMRCTL0=1075380264,
SC0_SCn_TMRCTL1=1075380268,
SC0_SCn_TMRCTL2=1075380272,
SC0_SCn_UARTCTL=1075380276,
SC0_SCn_ACTCTL=1075380288,
SC1_SCn_DAT=1075511296,
SC1_SCn_CTL=1075511300,
SC1_SCn_ALTCTL=1075511304,
SC1_SCn_EGT=1075511308,
SC1_SCn_RXTOUT=1075511312,
SC1_SCn_ETUCTL=1075511316,
SC1_SCn_INTEN=1075511320,
SC1_SCn_INTSTS=1075511324,
SC1_SCn_STATUS=1075511328,
SC1_SCn_PINCTL=1075511332,
SC1_SCn_TMRCTL0=1075511336,
SC1_SCn_TMRCTL1=1075511340,
SC1_SCn_TMRCTL2=1075511344,
SC1_SCn_UARTCTL=1075511348,
SC1_SCn_ACTCTL=1075511360,
I2C0_I2C_CTL=1073872896,
I2C0_I2C_INTSTS=1073872900,
I2C0_I2C_STATUS=1073872904,
I2C0_I2C_CLKDIV=1073872908,
I2C0_I2C_TOCTL=1073872912,
I2C0_I2C_DAT=1073872916,
I2C0_I2C_ADDR0=1073872920,
I2C0_I2C_ADDR1=1073872924,
I2C0_I2C_ADDRMSK0=1073872936,
I2C0_I2C_ADDRMSK1=1073872940,
I2C0_I2C_CTL2=1073872960,
I2C0_I2C_STATUS2=1073872964,
I2C1_I2C_CTL=1074921472,
I2C1_I2C_INTSTS=1074921476,
I2C1_I2C_STATUS=1074921480,
I2C1_I2C_CLKDIV=1074921484,
I2C1_I2C_TOCTL=1074921488,
I2C1_I2C_DAT=1074921492,
I2C1_I2C_ADDR0=1074921496,
I2C1_I2C_ADDR1=1074921500,
I2C1_I2C_ADDRMSK0=1074921512,
I2C1_I2C_ADDRMSK1=1074921516,
I2C1_I2C_CTL2=1074921536,
I2C1_I2C_STATUS2=1074921540,
DSRC_CTL=1075773440,
DSRC_INTEN=1075773444,
DSRC_STATUS=1075773448,
DSRC_PREAMBLE=1075773452,
DSRC_CRCSEED=1075773456,
DSRC_RBCNT=1075773460,
DSRC_CHKSUM=1075773464,
DSRC_TX=1075773472,
DSRC_RX=1075773476,
DSRC_TMR2=1075773496,
DSRC_TMR3=1075773500,
DSRC_TMR4=1075773504,
DSRC_CTL2=1075773952,
DSRC_TXR=1075773968,
DSRC_RXR=1075773972,
DSRC_ICR=1075773976,
ADC_DAT0=1074659328,
ADC_DAT1=1074659332,
ADC_DAT2=1074659336,
ADC_DAT3=1074659340,
ADC_DAT4=1074659344,
ADC_DAT5=1074659348,
ADC_DAT6=1074659352,
ADC_DAT7=1074659356,
ADC_DAT12=1074659376,
ADC_DAT13=1074659380,
ADC_DAT14=1074659384,
ADC_DAT15=1074659388,
ADC_DAT16=1074659392,
ADC_DAT17=1074659396,
ADC_CTL=1074659400,
ADC_CHEN=1074659404,
ADC_CMP0=1074659408,
ADC_CMP1=1074659412,
ADC_STATUS=1074659416,
ADC_PDMA=1074659424,
ADC_PWD=1074659428,
ADC_CALCTL=1074659432,
ADC_CALWORD=1074659436,
ADC_EXTSMPT0=1074659440,
ADC_EXTSMPT1=1074659444,
ACMP0_ACMP_CTL0=1075642368,
ACMP0_ACMP_STATUS=1075642372,
ACMP0_ACMP_VREF=1075642376,
SPI0_SPI_CTL=1073938432,
SPI0_SPI_STATUS=1073938436,
SPI0_SPI_CLKDIV=1073938440,
SPI0_SPI_SSCTL=1073938444,
SPI0_SPI_RX0=1073938448,
SPI0_SPI_RX1=1073938452,
SPI0_SPI_TX0=1073938464,
SPI0_SPI_TX1=1073938468,
SPI0_SPI_PDMACTL=1073938488,
SPI0_SPI_FIFOCTL=1073938492,
SPI1_SPI_CTL=1074987008,
SPI1_SPI_STATUS=1074987012,
SPI1_SPI_CLKDIV=1074987016,
SPI1_SPI_SSR=1074987020,
SPI1_SPI_RX0=1074987024,
SPI1_SPI_RX1=1074987028,
SPI1_SPI_TX0=1074987040,
SPI1_SPI_TX1=1074987044,
SPI1_SPI_PDMACTL=1074987064,
SPI1_SPI_FIFOCTL=1074987068,
SPI2_SPI_CTL=1074593792,
SPI2_SPI_STATUS=1074593796,
SPI2_SPI_CLKDIV=1074593800,
SPI2_SPI_SSR=1074593804,
SPI2_SPI_RX0=1074593808,
SPI2_SPI_RX1=1074593812,
SPI2_SPI_TX0=1074593824,
SPI2_SPI_TX1=1074593828,
SPI2_SPI_PDMACTL=1074593848,
SPI2_SPI_FIFOCTL=1074593852,
SPI3_SPI_CTL=1075707904,
SPI3_SPI_STATUS=1075707908,
SPI3_SPI_CLKDIV=1075707912,
SPI3_SPI_SSR=1075707916,
SPI3_SPI_RX0=1075707920,
SPI3_SPI_RX1=1075707924,
SPI3_SPI_TX0=1075707936,
SPI3_SPI_TX1=1075707940,
SPI3_SPI_PDMACTL=1075707960,
SPI3_SPI_FIFOCTL=1075707964,
}
g_Nano103_regs=REG
function read_Nano103_Registers(e,e,e,e)
local e={}
e["SYS_GPA_MFPL"],
e["SYS_GPA_MFPH"],
e["SYS_GPB_MFPL"],
e["SYS_GPB_MFPH"],
e["SYS_GPC_MFPL"],
e["SYS_GPC_MFPH"],
e["SYS_GPD_MFPL"],
e["SYS_GPD_MFPH"],
e["SYS_GPE_MFPL"],
e["dummy"],
e["SYS_GPF_MFPL"]=ice:ReadMem32(g_Nano103_regs.SYS_GPA_MFPL,11)
e["SYS_RC0TCTL"],
e["SYS_RC1TCTL"]=ice:ReadMemMulti(g_Nano103_regs.SYS_RC0TCTL,
g_Nano103_regs.SYS_RC1TCTL)
e["GPIO_PA_MODE"],
e["GPIO_PA_DINOFF"],
e["GPIO_PA_DOUT"],
e["GPIO_PA_DATMSK"],
e["GPIO_PA_PIN"]=ice:ReadMem32(g_Nano103_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_Nano103_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_Nano103_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_Nano103_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_Nano103_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_Nano103_regs.GPIO_PF_MODE,5)
e["GPIO_PA_PUEN"],
e["GPIO_PB_PUEN"],
e["GPIO_PC_PUEN"],
e["GPIO_PD_PUEN"]=ice:ReadMemMulti(g_Nano103_regs.GPIO_PA_PUEN,
g_Nano103_regs.GPIO_PB_PUEN,
g_Nano103_regs.GPIO_PC_PUEN,
g_Nano103_regs.GPIO_PD_PUEN)
e["GPIO_PE_PUEN"],
e["GPIO_PF_PUEN"]=ice:ReadMemMulti(g_Nano103_regs.GPIO_PE_PUEN,
g_Nano103_regs.GPIO_PF_PUEN)
e["CLK_PWRCTL"],
e["CLK_AHBCLK"],
e["CLK_APBCLK"],
e["CLK_CLKSTATUS"],
e["CLK_CLKSEL0"],
e["CLK_CLKSEL1"],
e["CLK_CLKSEL2"],
e["CLK_CLKDIV0"],
e["CLK_CLKDIV1"],
e["CLK_PLLCTL"],
e["CLK_CLKOCTL"]=ice:ReadMem32(g_Nano103_regs.CLK_PWRCTL,11)
e["CLK_APBDIV"],
e["CLK_CLKDCTL"]=ice:ReadMemMulti(g_Nano103_regs.CLK_APBDIV,
g_Nano103_regs.CLK_CLKDCTL)
e["UART0_UART_BAUD"],
e["UART1_UART_BAUD"]=ice:ReadMemMulti(g_Nano103_regs.UART0_UART_BAUD,
g_Nano103_regs.UART1_UART_BAUD)
e["I2C0_I2C_CTL"],
e["I2C1_I2C_CTL"],
e["I2C0_I2C_CLKDIV"],
e["I2C1_I2C_CLKDIV"]=ice:ReadMemMulti(g_Nano103_regs.I2C0_I2C_CTL,
g_Nano103_regs.I2C1_I2C_CTL,
g_Nano103_regs.I2C0_I2C_CLKDIV,
g_Nano103_regs.I2C1_I2C_CLKDIV)
e["SPI0_SPI_CTL"],
e["SPI1_SPI_CTL"],
e["SPI2_SPI_CTL"],
e["SPI3_SPI_CTL"]=ice:ReadMemMulti(g_Nano103_regs.SPI0_SPI_CTL,
g_Nano103_regs.SPI1_SPI_CTL,
g_Nano103_regs.SPI2_SPI_CTL,
g_Nano103_regs.SPI3_SPI_CTL)
e["SPI0_SPI_CLKDIV"],
e["SPI1_SPI_CLKDIV"],
e["SPI2_SPI_CLKDIV"],
e["SPI3_SPI_CLKDIV"]=ice:ReadMemMulti(g_Nano103_regs.SPI0_SPI_CLKDIV,
g_Nano103_regs.SPI1_SPI_CLKDIV,
g_Nano103_regs.SPI2_SPI_CLKDIV,
g_Nano103_regs.SPI3_SPI_CLKDIV)
e["TMR_TIMER0_CTL"],
e["TMR_TIMER1_CTL"],
e["TMR_TIMER2_CTL"],
e["TMR_TIMER3_CTL"]=ice:ReadMemMulti(g_Nano103_regs.TMR_TIMER0_CTL,
g_Nano103_regs.TMR_TIMER1_CTL,
g_Nano103_regs.TMR_TIMER2_CTL,
g_Nano103_regs.TMR_TIMER3_CTL)
e["SC0_SCn_CTL"],
e["SC1_SCn_CTL"],
e["SC0_SCn_UARTCTL"],
e["SC1_SCn_UARTCTL"]=ice:ReadMemMulti(g_Nano103_regs.SC0_SCn_CTL,
g_Nano103_regs.SC1_SCn_CTL,
g_Nano103_regs.SC0_SCn_UARTCTL,
g_Nano103_regs.SC1_SCn_UARTCTL)
e["SC0_SCn_ETUCTL"],
e["SC1_SCn_ETUCTL"]=ice:ReadMemMulti(g_Nano103_regs.SC0_SCn_ETUCTL,
g_Nano103_regs.SC1_SCn_ETUCTL)
e["PWM0_CLKSRC"],
e["PWM0_CLKPSC0_1"],
e["PWM0_CLKPSC2_3"],
e["PWM0_CLKPSC4_5"]=ice:ReadMemMulti(g_Nano103_regs.PWM0_CLKSRC,
g_Nano103_regs.PWM0_CLKPSC0_1,
g_Nano103_regs.PWM0_CLKPSC2_3,
g_Nano103_regs.PWM0_CLKPSC4_5)
e["PWM0_CNTEN"]=ice:ReadMemMulti(g_Nano103_regs.PWM0_CNTEN)
return e
end
local h={
[0]=kPinDirection_In,
[1]=kPinDirection_PushPullOut,
[2]=kPinDirection_OpenDrainOut,
}
local m={
[0]="INPUT",
[1]="OUTPUT",
[2]="Open-Drain",
}
function get_HXT_clock(o,a)
local e
local t
table.insert(a,"CLK_PWRCTL")
local a=ext.band(o["CLK_PWRCTL"],1)
if a==0 then
e=0
t="invalid external 4~32M high speed crystal clock (see CLK_PWRCTL[0].HXTEN)"
else
e=12000000
t="external 4~32M high speed crystal clock, when external input clock is 12M"
end
return e,t
end
function get_LXT_clock(a,o)
local t
local e
table.insert(o,"CLK_PWRCTL")
local a=ext.band(a["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_HIRC_clock(i,o)
local t
local e
table.insert(o,"CLK_CLKSEL0")
local a=ext.band(i["CLK_CLKSEL0"],8)
if a==0 then
table.insert(o,"CLK_PWRCTL")
local a=ext.band(i["CLK_PWRCTL"],4)
if a==0 then
t=0
e="invalid internal 12~16MHz high speed oscillator clock (see CLK_PWRCTL[2].HIRC0EN)"
else
table.insert(o,"SYS_RC0TCTL")
local a=ext.band(i["SYS_RC0TCTL"],7)
if a==0 then
t=12000000
e="internal 12MHz high speed oscillator clock"
elseif a==1 then
t=11059200
e="internal 11.0592MHz high speed oscillator clock (auto trim)"
elseif a==2 then
t=12000000
e="internal 12MHz high speed oscillator clock (auto trim)"
elseif a==3 then
t=12288000
e="internal 12.288MHz high speed oscillator clock (auto trim)"
elseif a==4 then
t=16000000
e="internal 16MHz high speed oscillator clock (auto trim)"
else
t=0
e="invalid trim frequency selection of internal 12MHz high speed oscillator clock (see SYS_RC0TCTL[2:0].FREQSEL)"
end
end
else
table.insert(o,"CLK_PWRCTL")
local a=ext.band(i["CLK_PWRCTL"],16777216)
if a==0 then
t=0
e="invalid internal 36MHz high speed oscillator clock (see CLK_PWRCTL[24].HIRC1EN)"
else
table.insert(o,"SYS_RC1TCTL")
local a=ext.band(i["SYS_RC1TCTL"],7)
if a==0 then
t=36000000
e="internal 36MHz high speed oscillator clock"
elseif a==2 then
t=36000000
e="internal 36MHz high speed oscillator trimmed clock"
else
t=0
e="invalid trim frequency selection of internal 36MHz high speed oscillator clock (see SYS_RC1TCTL[2:0].FREQSEL)"
end
end
end
return t,e
end
function get_LIRC_clock(o,a)
local e
local t
table.insert(a,"CLK_PWRCTL")
local a=ext.band(o["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_MIRC_clock(o,a)
local e
local t
table.insert(a,"CLK_PWRCTL")
local a=ext.band(o["CLK_PWRCTL"],33554432)
if a==0 then
e=0
t="invalid internal 4MHz medium speed oscillator clock (see CLK_PWRCTL[25].MIRCEN)"
else
e=4000000
t="internal 4MHz medium speed oscillator clock"
end
return e,t
end
function get_PLL_clock(a,o)
local t
local e
table.insert(o,"CLK_PLLCTL")
if ext.band(a["CLK_PLLCTL"],65536)~=0 then
t=0
e="invalid PLL clock, PLL is in power down mode (see CLK_PLLCTL[16].PD)"
else
local i=ext.rshift(ext.band(a["CLK_PLLCTL"],393216),17)
if i==0 then
t,e=get_HXT_clock(a,o)
elseif i==1 then
t,e=get_HIRC_clock(a,o)
elseif i==2 then
t,e=get_MIRC_clock(a,o)
else
t=0
e="invalid PLL clock source select (see CLK_PLLCTL[18:17].PLLSRC)"
end
if t~=0 then
local o=ext.rshift(ext.band(a["CLK_PLLCTL"],16128),8)
local a=ext.band(a["CLK_PLLCTL"],63)
t=t/(o+1)*a
if a==0 or a>36 then
e="invalid PLL clock (see CLK_PLLCTL[5:0].PLLMLP)"
else
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_CLKSEL0")
local i=ext.band(a["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==4 then
t,e=get_HIRC_clock(a,o)
else
t,e=get_MIRC_clock(a,o)
end
if t==0 then
e=""..n.." clock from "..e
else
table.insert(o,"CLK_CLKDIV0")
local a=ext.band(a["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(t,e)
return get_sys_clock(t,e,"HCLK")
end
function get_PCLK0_clock(o,a)
local t
local e
t,e=get_HCLK_clock(o,a)
if t==0 then
e="PCLK0 clock from "..e
else
table.insert(a,"CLK_APBDIV")
local a=ext.band(o["CLK_APBDIV"],7)
if a<=4 then
t=ext.rshift(t,a)
end
e=string.format("PCLK0 clock (%sHz), from %s",val2str(t),e)
end
return t,e
end
function get_PCLK1_clock(o,a)
local t
local e
t,e=get_HCLK_clock(o,a)
if t==0 then
e="PCLK1 clock from "..e
else
table.insert(a,"CLK_APBDIV")
local a=ext.rshift(ext.band(o["CLK_APBDIV"],112),4)
if a<=4 then
t=ext.rshift(t,a)
end
e=string.format("PCLK1 clock (%sHz), from %s",val2str(t),e)
end
return t,e
end
function get_clk_informnation(e,t)
return reg2str("Clock setting registers",g_Nano103_regs,e,t)
end
function get_mfp_regs(t,e,a)
local e={"SYS_GP"..e.."_MFP"..a}
return reg2str("Multi-Function register",g_Nano103_regs,t,e)
end
function fill_Nano103_GPIO(o,s,a,e)
local i=""
local t=""
local l=string.format("P%s.%d",a,e)
o["highlight_text"]=l
o["normal_color"]=kColor_Invalid
o["highlight_color"]=kColor_GPIO
o["pin_bg_color"]=kBgColor_GPIO
local n=s["GPIO_P"..a.."_MODE"]
local c=s["GPIO_P"..a.."_DINOFF"]
local d=s["GPIO_P"..a.."_DOUT"]
local u=s["GPIO_P"..a.."_DATMSK"]
local r=s["GPIO_P"..a.."_PIN"]
local f=s["GPIO_P"..a.."_PUEN"]
local n=ext.band(ext.rshift(n,e*2),3)
o["direction"]=h[n]
if h[n]==kPinDirection_In then
if ext.band(r,ext.lshift(1,e))==0 then
o["status"]=kPinStatus_Low
else
o["status"]=kPinStatus_High
end
elseif h[n]==kPinDirection_PushPullOut
or h[n]==kPinDirection_OpenDrainOut then
if ext.band(u,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
else
i=string.format("GPIO_P%s_MODE[%d:%d] is undefined
",a,e*2+1,e*2)
end
t=string.format("P%s.%d is in %s mode
",
a,e,m[n])
if h[n]==kPinDirection_In then
if ext.band(r,ext.lshift(1,e))==0 then
t=t.."Pin input low
"
else
t=t.."Pin input high
"
end
end
if h[n]==kPinDirection_PushPullOut
or h[n]==kPinDirection_OpenDrainOut then
if ext.band(u,ext.lshift(1,e))~=0 then
t=t.."Pin output masked
"
elseif ext.band(d,ext.lshift(1,e))==0 then
t=t.."Pin output low
"
else
t=t.."Pin output high
"
end
end
if ext.band(c,ext.lshift(1,e+16))==0 then
t=t.."IO digital input path enabled
"
else
t=t.."IO digital input path disabled(digital input tied to low)
"
end
if ext.band(ext.rshift(f,e),1)~=0 then
o["pullup"]=true
t=t.."Pull-up resistor enable
"
else
o["pullup"]=false
t=t.."Pull-up resistor disable
"
end
if h[n]==kPinDirection_PushPullOut then
if ext.band(d,ext.lshift(1,e))==0 and ext.band(r,ext.lshift(1,e))~=0 then
i=i..string.format("Leakage warning: GPIO_P%s_DOUT[%d] = 0, GPIO_P%s_PIN[%d] = 1
",a,e,a,e)
elseif ext.band(d,ext.lshift(1,e))~=0 and ext.band(r,ext.lshift(1,e))==0 then
i=i..string.format("Leakage warning: GPIO_P%s_DOUT[%d] = 1, GPIO_P%s_PIN[%d] = 0
",a,e,a,e)
end
end
local n
if e>=0 and e<=7 then
n="L"
elseif e>=8 and e<=15 then
n="H"
else
i=i.."Bit error, it should be 0~15.
"
end
if i~=""then
o["pin_no_color"]=kBgColor_Error
i=""..i..""
end
local e={
"GPIO_P"..a.."_MODE",
"GPIO_P"..a.."_DINOFF",
"GPIO_P"..a.."_DOUT",
"GPIO_P"..a.."_DATMSK",
"GPIO_P"..a.."_PIN",
"GPIO_P"..a.."_PUEN"}
local e=reg2str("GPIO setting registers",g_Nano103_regs,s,e)
if t~=""then
t="Information
"..t
end
o["information"]=string.format("%s
%s
%s%s%s",l,i,
get_mfp_regs(s,a,n),e,t)
end
function fill_invalid_GPIO(e,i,o,t)
e["highlight_text"]=string.format("P%s.%d",o,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 a
if t>=0 and t<=7 then
a="L"
elseif t>=8 and t<=15 then
a="H"
end
local n="Undefined setting in Multi-Function registers for this pin
"
e["information"]=string.format("P%s.%d
%s
"..
"%s",
o,t,
n,
get_mfp_regs(i,o,a))
end
function fill_Nano103_ACMP(e,a,s,n,o)
local t=""
local i={}
e["highlight_text"]=o
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_CMP
e["pin_bg_color"]=kBgColor_CMP
e["direction"]=kPinDirection_In
e["status"]=kPinStatus_Unknown
table.insert(i,"CLK_APBCLK")
if ext.band(a["CLK_APBCLK"],2048)==0 then
t="ACMP clock is not available (see CLK_APBCLK[11].ACMP0CKEN).
"
t=""..t..""
e["pin_no_color"]=kBgColor_Error
end
e["information"]=string.format("%s
%s
%s%s",
o,
t,
get_mfp_regs(a,s,n),
get_clk_informnation(a,i))
end
function fill_Nano103_ADC(a,e,r,d,h)
local n=""
local o=""
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_APBCLK")
if ext.band(e["CLK_APBCLK"],268435456)~=0 then
table.insert(t,"CLK_CLKSEL1")
local s=ext.rshift(ext.band(e["CLK_CLKSEL1"],3670016),19)
local h=ext.rshift(ext.band(e["CLK_CLKDIV0"],16711680),16)
local i
local a
if s==0 then
i,a=get_HXT_clock(e,t)
elseif s==1 then
i,a=get_LXT_clock(e,t)
elseif s==2 then
i,a=get_PLL_clock(e,t)
elseif s==3 then
i,a=get_HIRC_clock(e,t)
else
i,a=get_HCLK_clock(e,t)
end
local e=i/(h+1)
if e~=0 then
table.insert(t,"CLK_CLKDIV0")
n=string.format("ADC clock frequency: %sHz, from %s.
",val2str(e),a)
else
o="ADC clock is not available, "..a..".
"
end
else
o="ADC clock is not available (see CLK_APBCLK[28].ADCCKEN).
"
end
if o~=""then
o=""..o..""
a["pin_no_color"]=kBgColor_Error
end
if n~=""then
n="Information
"..n
end
a["information"]=string.format("%s
%s
%s%s%s",
h,
o,
get_mfp_regs(e,r,d),
get_clk_informnation(e,t),
n)
end
function fill_Nano103_I2C(t,a,d,r,h,e)
local n=""
local o=""
local i={}
t["highlight_text"]=h
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_APBCLK")
if ext.band(a["CLK_APBCLK"],ext.lshift(256,e))~=0 then
local t=string.format("I2C%d_I2C_CTL",e)
local h=string.format("I2C%d_I2C_CLKDIV",e)
table.insert(i,t)
local t=ext.band(a[t],1)
if t~=0 then
local s=0
local t=""
if e==0 then
s,t=get_PCLK0_clock(a,i)
elseif e==1 then
s,t=get_PCLK1_clock(a,i)
end
if s~=0 then
table.insert(i,h)
local a=ext.band(a[h],255)
local a=s/(4*(a+1))
n=string.format("I2C%d clock frequency: %sHz, from %s.
",e,val2str(a),t)
else
o=string.format("I2C%d clock is not available, %s.
",e,t)
end
else
o=string.format("I2C%d controller disabled (see I2C%d_I2C_CTL[0].I2CEN).
",e,e)
end
else
o=string.format("I2C%d clock is not available (see CLK_APBCLK[%d].I2C%dCKEN).
",e,8+e,e)
end
if o~=""then
o=""..o..""
t["pin_no_color"]=kBgColor_Error
end
if n~=""then
n="Information
"..n
end
t["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
o,
get_mfp_regs(a,d,r),
get_clk_informnation(a,i),
n)
end
function fill_Nano103_CLKO(a,e,r,d,h)
local n=""
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_APBCLK")
if ext.band(e["CLK_APBCLK"],64)~=0 then
table.insert(t,"CLK_CLKOCTL")
if ext.band(e["CLK_CLKOCTL"],16)~=0 then
local i
local a
table.insert(t,"CLK_CLKSEL2")
local s=ext.band(ext.rshift(e["CLK_CLKSEL2"],4),7)
if s==0 then
i,a=get_HXT_clock(e,t)
elseif s==1 then
i,a=get_LXT_clock(e,t)
elseif s==2 then
i,a=get_HCLK_clock(e,t)
elseif s==3 then
i,a=get_HIRC_clock(e,t)
else
i,a=get_MIRC_clock(e,t)
end
local t
local s=ext.band(e["CLK_CLKOCTL"],32)
if s~=0 then
t=i
else
local e=ext.band(e["CLK_CLKOCTL"],15)
t=i/ext.lshift(1,(e+1))
end
if t~=0 then
n=string.format("Clock output clock frequency: %sHz, from %s.
",val2str(t),a)
else
o="Clock output clock is not available, "..a..".
"
end
else
o=string.format("Clock output function disabled (see CLK_CLKOCTL[4].CLKOEN).
")
end
else
o="Clock output clock is not available (see CLK_APBCLK[6].CLKOCKEN).
"
end
if o~=""then
o=""..o..""
a["pin_no_color"]=kBgColor_Error
end
if n~=""then
n="Information
"..n
end
a["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
o,
get_mfp_regs(e,r,d),
get_clk_informnation(e,t),
n)
end
function fill_Nano103_TM(h,e,d,l,r,t,o)
local n=""
local i=""
local a={}
local t=ext.lshift(t,1)+o
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(a,"CLK_APBCLK")
local o=ext.band(e["CLK_APBCLK"],ext.lshift(4,t))
if o~=0 then
local o=string.format("TMR_TIMER%d_CTL",t)
table.insert(a,o)
local o=ext.band(e[o],4096)
if o~=0 then
n=string.format("Timer%d counting is controlled by external event pin.
",t)
else
if t==0 then
TMR_S=ext.rshift(ext.band(e["CLK_CLKSEL1"],1792),8)
table.insert(a,"CLK_CLKSEL1")
elseif t==1 then
TMR_S=ext.rshift(ext.band(e["CLK_CLKSEL1"],28672),12)
table.insert(a,"CLK_CLKSEL1")
elseif t==2 then
TMR_S=ext.rshift(ext.band(e["CLK_CLKSEL2"],1792),8)
table.insert(a,"CLK_CLKSEL2")
elseif t==3 then
TMR_S=ext.rshift(ext.band(e["CLK_CLKSEL2"],28672),12)
table.insert(a,"CLK_CLKSEL2")
else
i=string.format("Timer%d do not exist.
",t)
end
local s=0
local o
if TMR_S==0 then
s,o=get_HXT_clock(e,a)
elseif TMR_S==1 then
s,o=get_LXT_clock(e,a)
elseif TMR_S==2 then
s,o=get_LIRC_clock(e,a)
elseif TMR_S==3 then
n=string.format("Timer%d clock is from external pin.
",t)
elseif TMR_S==4 then
s,o=get_HIRC_clock(e,a)
elseif TMR_S==5 then
s,o=get_MIRC_clock(e,a)
else
s,o=get_HCLK_clock(e,a)
end
if i==""and n==""then
if s~=0 then
n=string.format("Timer%d clock frequency: %sHz, from %s
",
t,val2str(s),o)
else
i=string.format("Timer%d clock is not available, %s.
",t,o)
end
end
end
else
i=string.format("Timer%d clock is disabled (see CLK_APBCLK[%d].TMR%dCKEN).
",t,t+2,t)
end
if i~=""then
i=""..i..""
h["pin_no_color"]=kBgColor_Error
end
if n~=""then
n="Information
"..n
end
h["information"]=string.format(
"%s
%s
"..
"%s%s%s",
r,
i,
get_mfp_regs(e,d,l),
get_clk_informnation(e,a),
n)
end
function fill_Nano103_SPI(n,t,d,l,r,e)
local s=""
local h=""
local a={}
n["highlight_text"]=r
n["normal_color"]=kColor_Invalid
n["highlight_color"]=kColor_SPI
n["pin_bg_color"]=kBgColor_SPI
n["direction"]=kPinDirection_Unknown
n["status"]=kPinStatus_Unknown
table.insert(a,"CLK_APBCLK")
if ext.band(t["CLK_APBCLK"],ext.lshift(4096,e))~=0 then
local i=0
local o
if e==0 or e==2 then
table.insert(a,"CLK_CLKSEL1")
local e=ext.band(ext.rshift(t["CLK_CLKSEL1"],e+24),3)
if e==0 then
i,o=get_PLL_clock(t,a)
elseif e==1 then
i,o=get_HCLK_clock(t,a)
elseif e==2 then
i,o=get_HXT_clock(t,a)
else
i,o=get_HIRC_clock(t,a)
end
elseif e==1 or e==3 then
table.insert(a,"CLK_CLKSEL2")
local e=ext.band(ext.rshift(t["CLK_CLKSEL2"],e+24-1),3)
if e==0 then
i,o=get_PLL_clock(t,a)
elseif e==1 then
i,o=get_HCLK_clock(t,a)
elseif e==2 then
i,o=get_HXT_clock(t,a)
else
i,o=get_HIRC_clock(t,a)
end
end
if i~=0 then
local n=string.format("SPI%d_SPI_CTL",e)
local h=string.format("SPI%d_SPI_CLKDIV",e)
table.insert(a,n)
local n=ext.band(t[n],262144)
if n~=0 then
s=string.format("SPI%d is in slave mode.
",e)
else
s=string.format("SPI%d is in master mode.
",e)
table.insert(a,h)
local t=ext.band(t[h],255)
local t=i/(t+1)
s=s..string.format("SPI%d clock frequency: %sHz, from %s.
",
e,val2str(t),o)
end
else
h=string.format("SPI%d clock is not available, ",e)..o..".
"
end
else
h=string.format("SPI%d clock is not available (see CLK_APBCLK[%d].SPI%dCKEN).
",e,e+12,e)
end
if h~=""then
h=""..h..""
n["pin_no_color"]=kBgColor_Error
end
if s~=""then
s="Information
"..s
end
n["information"]=string.format(
"%s
%s
"..
"%s%s%s",
r,
h,
get_mfp_regs(t,d,l),
get_clk_informnation(t,a),
s)
end
function fill_Nano103_SPI_IO(e,o,a,t)
local a=string.format("SPI%d_SPI_CTL",a)
local a=ext.band(o[a],262144)
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_Nano103_UART(i,e,c,u,l,a)
local n=""
local o=""
local t={}
local r=0
i["highlight_text"]=l
i["normal_color"]=kColor_Invalid
i["highlight_color"]=kColor_UART
i["pin_bg_color"]=kBgColor_UART
i["direction"]=kPinDirection_Unknown
i["status"]=kPinStatus_Unknown
function get_uart_baudate(o)
local a=string.format("UART%d_UART_BAUD",a)
table.insert(t,a)
local i=ext.band(e[a],2147483648)
local a=ext.band(e[a],65535)
local e=0
local t=""
if i==0 then
e=o/(a+1)
t="BRD must > 8"
else
e=o/(16*(a+1))
end
return e,t
end
table.insert(t,"CLK_APBCLK")
if ext.band(e["CLK_APBCLK"],ext.lshift(65536,a))~=0 then
local s=0
local d=0
if a==0 then
table.insert(t,"CLK_CLKSEL1")
s=ext.band(e["CLK_CLKSEL1"],7)
d=ext.band(ext.rshift(e["CLK_CLKDIV0"],8),15)
elseif a==1 then
table.insert(t,"CLK_CLKSEL2")
s=ext.band(e["CLK_CLKSEL2"],7)
d=ext.band(ext.rshift(e["CLK_CLKDIV0"],12),15)
end
local h
local i
if s==0 then
h,i=get_HXT_clock(e,t)
elseif s==1 then
h,i=get_LXT_clock(e,t)
elseif s==2 then
h,i=get_PLL_clock(e,t)
elseif s==3 then
h,i=get_HIRC_clock(e,t)
else
h,i=get_MIRC_clock(e,t)
end
r=h/(d+1)
if r~=0 then
table.insert(t,"CLK_CLKDIV0")
n=string.format("UART%d clock frequency: %sHz, from %s.
",a,val2str(r),i)
else
o=string.format("UART%d clock is not available, %s.
",a,i)
end
else
o=string.format("UART%d clock is not available (see CLK_APBCLK[%d].UART%dCKEN).
",
a,a+16,a)
end
if o==""then
local e,t=get_uart_baudate(r)
if e~=0 then
n=n..string.format("UART baudrate: %d
",e)
elseif t~=""then
o=t..".
"
end
end
if o~=""then
o=""..o..""
i["pin_no_color"]=kBgColor_Error
end
if n~=""then
n="Information
"..n
end
i["information"]=string.format(
"%s
%s
"..
"%s%s%s",
l,
o,
get_mfp_regs(e,c,u),
get_clk_informnation(e,t),
n)
end
function fill_Nano103_SC(n,t,u,c,l,e)
local i=""
local o=""
local a={}
local r=0
n["highlight_text"]=l
n["normal_color"]=kColor_Invalid
n["highlight_color"]=kColor_SC
n["pin_bg_color"]=kBgColor_SC
n["direction"]=kPinDirection_PushPullOut
n["status"]=kPinStatus_Unknown
table.insert(a,"CLK_APBCLK")
local s=ext.band(t["CLK_APBCLK"],ext.lshift(1073741824,e))
if s~=0 then
local d=string.format("SC%d_SCn_CTL",e)
table.insert(a,d)
if ext.band(t[d],1)~=0 then
table.insert(a,"CLK_CLKSEL2")
local h=ext.band(ext.rshift(t["CLK_CLKSEL2"],16+4*e),7)
local s
local n
if h==0 then
s,n=get_HXT_clock(t,a)
elseif h==1 then
s,n=get_PLL_clock(t,a)
elseif h==2 then
s,n=get_HIRC_clock(t,a)
elseif h==3 then
s,n=get_MIRC_clock(t,a)
else
s,n=get_HCLK_clock(t,a)
end
local h
if e==0 then
h=ext.rshift(ext.band(t["CLK_CLKDIV0"],4026531840),28)
table.insert(a,"CLK_CLKDIV0")
elseif e==1 then
h=ext.band(t["CLK_CLKDIV1"],15)
table.insert(a,"CLK_CLKDIV1")
else
o=string.format("SC%d do not exist.
",e)
end
if o==""then
r=s/(h+1)
if r~=0 then
i=string.format("SC%d clock frequency: %sHz, from %s.
",e,val2str(r),n)
else
o=string.format("SC%d clock is not available, ",e)..n..".
"
end
end
else
o=string.format("SC%d engine disable (see %s[0].SCEN).
",e,d)
end
else
o=string.format("SC%d clock is not available (see CLK_APBCLK[%d].SC%dCKEN).
",e,e+30,e)
end
if o==""then
local o=string.format("SC%d_SCn_UARTCTL",e)
local n=string.format("SC%d_SCn_ETUCTL",e)
table.insert(a,o)
table.insert(a,n)
local a=ext.band(t[n],4095)
local a=r/(a+1)
if ext.band(t[o],1)~=0 then
i=string.format("SC%d is in UART mode.
",e)..i
..string.format("UART baudrate: %d
",a)
else
i=string.format("SC%d is in Smart Card mode.
",e)..i
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",
l,
o,
get_mfp_regs(t,u,c),
get_clk_informnation(t,a),
i)
end
function fill_Nano103_PWM(o,a,u,c,l,t,e)
local s=""
local n=""
local i={}
o["highlight_text"]=l
o["normal_color"]=kColor_Invalid
o["highlight_color"]=kColor_PWM
o["pin_bg_color"]=kBgColor_PWM
o["direction"]=kPinDirection_Unknown
o["status"]=kPinStatus_Unknown
if e~=nil then
local e=ext.rshift(e,1)
table.insert(i,"CLK_APBCLK")
local o=ext.band(a["CLK_APBCLK"],ext.lshift(1048576,t))
if o~=0 then
local o
local h
table.insert(i,"CLK_CLKSEL1")
local r=ext.band(ext.rshift(a["CLK_CLKSEL1"],t+4),1)
if r==0 then
o,h=get_PLL_clock(a,i)
else
o,h=get_PCLK0_clock(a,i)
end
local r=string.format("PWM%d_CNTEN",t)
table.insert(i,r)
local r=ext.band(ext.rshift(a[r],2*e),1)
if r==0 then
n=string.format("PWM%d counter%d_%d stops running.
",t,2*e,2*e+1)
else
local r=string.format("PWM%d_CLKSRC",t)
local d=string.format("PWM%d_CLKPSC%d_%d",t,2*e,2*e+1)
table.insert(i,r)
local r=ext.band(ext.rshift(a[r],8*e),7)
if r==0 then
if o==0 then
n=string.format("PWM%d clock is not available, %s.
",t,h)
else
table.insert(i,d)
local a=ext.band(a[d],4095)
local a=o/(a+1)
s=string.format("PWM%d clock frequency: %sHz, from %s.
",
t,val2str(o),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_APBCLK[%d].PWM%dCKEN).
",
t,20+t,t)
end
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",
l,
n,
get_mfp_regs(a,u,c),
get_clk_informnation(a,i),
s)
end
function fill_Nano103_Normal(e,n,a,o,t)
local i=""
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
i=t.."
"
if a==nil or o==nil then
e["information"]=string.format(
"%s
",
t)
else
e["information"]=string.format(
"%s
"..
"%s",
t,
get_mfp_regs(n,a,o))
end
end