REG=
{
GCR_SYS_PDID=1073741824,
GCR_SYS_BOOTSET=1073741828,
GCR_SYS_IPRST0=1073741832,
GCR_SYS_LVDCTL=1073741836,
GCR_SYS_WAKEUP=1073741840,
GCR_SYS_IPRST1=1073741844,
GCR_SYS_NMICTL=1073741848,
GCR_SYS_RSTSTS=1073741852,
GCR_SYS_AHBCTL=1073741856,
GCR_SYS_GPA_MFPL=1073741872,
GCR_SYS_GPA_MFPH=1073741876,
GCR_SYS_GPB_MFPL=1073741880,
GCR_SYS_GPB_MFPH=1073741884,
GCR_SYS_GPC_MFPL=1073741888,
GCR_SYS_GPC_MFPH=1073741892,
GCR_SYS_GPD_MFPL=1073741896,
GCR_SYS_LVMPADDR=1073741904,
GCR_SYS_LVMPLEN=1073741908,
GCR_SYS_RVMPADDR=1073741912,
GCR_SYS_RVMPLEN=1073741916,
GCR_SYS_GPADS=1073741936,
GCR_SYS_GPAIBE=1073741940,
GCR_SYS_GPBIBE=1073741944,
GCR_SYS_GPCIBE=1073741948,
GCR_SYS_GPDIBE=1073741952,
GCR_SYS_GPDDS=1073741956,
GCR_SYS_RSTDBCNT=1073742080,
GCR_SYS_RSTDBEN=1073742084,
SCS_SYST_CSR=3758153744,
SCS_SYST_RVR=3758153748,
SCS_SYST_CVR=3758153752,
SCS_NVIC_ISER0=3758153984,
SCS_NVIC_ICER0=3758154112,
SCS_NVIC_ISPR0=3758154240,
SCS_NVIC_ICPR0=3758154368,
SCS_NVIC_IABR0=3758154496,
SCS_CPUID=3758157056,
SCS_ICSR=3758157060,
SCS_AIRCR=3758157068,
SCS_SCR=3758157072,
SCS_SHPR1=3758157080,
SCS_SHPR2=3758157084,
SCS_SHPR3=3758157088,
SCS_NVIC_STIR=3758157568,
CLK_CLK_PWRCTL=1073742336,
CLK_CLK_AHBCLK=1073742340,
CLK_CLK_APBCLK=1073742344,
CLK_CLK_CLKDIV0=1073742352,
CLK_CLK_CLKDIV1=1073742356,
CLK_CLK_CLKDIV2=1073742360,
CLK_CLK_CLKDIV3=1073742364,
CLK_CLK_UPLLCTL=1073742368,
CLK_CLK_APLLCTL=1073742376,
CLK_CLK_CLKDIV4=1073742384,
CLK_CLK_CLKDIV5=1073742388,
SPIM_SPIM_CTL0=1073770496,
SPIM_SPIM_CTL1=1073770500,
SPIM_SPIM_VALIDCTL=1073770504,
SPIM_SPIM_RXCLKDLY=1073770508,
SPIM_SPIM_RX0=1073770512,
SPIM_SPIM_RX1=1073770516,
SPIM_SPIM_RX2=1073770520,
SPIM_SPIM_RX3=1073770524,
SPIM_SPIM_TX0=1073770528,
SPIM_SPIM_TX1=1073770532,
SPIM_SPIM_TX2=1073770536,
SPIM_SPIM_TX3=1073770540,
SPIM_SPIM_SRAMADDR=1073770544,
SPIM_SPIM_DMATBCNT=1073770548,
SPIM_SPIM_FADDR=1073770552,
GPIO_PA_MODE=1074671616,
GPIO_PA_PUEN=1074671620,
GPIO_PA_DOUT=1074671624,
GPIO_PA_PIN=1074671628,
GPIO_PB_MODE=1074671632,
GPIO_PB_PUEN=1074671636,
GPIO_PB_DOUT=1074671640,
GPIO_PB_PIN=1074671644,
GPIO_PC_MODE=1074671648,
GPIO_PC_PUEN=1074671652,
GPIO_PC_DOUT=1074671656,
GPIO_PC_PIN=1074671660,
GPIO_PD_MODE=1074671664,
GPIO_PD_PUEN=1074671668,
GPIO_PD_DOUT=1074671672,
GPIO_PD_PIN=1074671676,
GPIO_GPIO_DBCTL=1074671728,
GPIO_PA_INTSRCGP=1074671744,
GPIO_PB_INTSRCGP=1074671748,
GPIO_PC_INTSRCGP=1074671752,
GPIO_PD_INTSRCGP=1074671756,
GPIO_PA_INTEN=1074671760,
GPIO_PB_INTEN=1074671764,
GPIO_PC_INTEN=1074671768,
GPIO_PD_INTEN=1074671772,
GPIO_GPIO_INTCTL=1074671776,
GPIO_PA_LATCHDAT=1074671780,
GPIO_PB_LATCHDAT=1074671784,
GPIO_PC_LATCHDAT=1074671788,
GPIO_PD_LATCHDAT=1074671792,
GPIO_GPIO_INTSTSA_B=1074671796,
GPIO_GPIO_INTSTSC_D=1074671800,
I2C0_I2C_CTL=1074675712,
I2C0_I2C_ADDR0=1074675716,
I2C0_I2C_DAT=1074675720,
I2C0_I2C_STATUS=1074675724,
I2C0_I2C_CLKDIV=1074675728,
I2C0_I2C_TOCTL=1074675732,
I2C0_I2C_ADDR1=1074675736,
I2C0_I2C_ADDR2=1074675740,
I2C0_I2C_ADDR3=1074675744,
I2C0_I2C_ADDRMSK0=1074675748,
I2C0_I2C_ADDRMSK1=1074675752,
I2C0_I2C_ADDRMSK2=1074675756,
I2C0_I2C_ADDRMSK3=1074675760,
I2C0_I2C_WKCTL=1074675772,
I2C0_I2C_WKSTS=1074675776,
I2C1_I2C_CTL=1074679808,
I2C1_I2C_ADDR0=1074679812,
I2C1_I2C_DAT=1074679816,
I2C1_I2C_STATUS=1074679820,
I2C1_I2C_CLKDIV=1074679824,
I2C1_I2C_TOCTL=1074679828,
I2C1_I2C_ADDR1=1074679832,
I2C1_I2C_ADDR2=1074679836,
I2C1_I2C_ADDR3=1074679840,
I2C1_I2C_ADDRMSK0=1074679844,
I2C1_I2C_ADDRMSK1=1074679848,
I2C1_I2C_ADDRMSK2=1074679852,
I2C1_I2C_ADDRMSK3=1074679856,
I2C1_I2C_WKCTL=1074679868,
I2C1_I2C_WKSTS=1074679872,
I2S_I2S_CTL=1074692096,
I2S_I2S_CLKDIV=1074692100,
I2S_I2S_IEN=1074692104,
I2S_I2S_STATUS=1074692108,
I2S_I2S_TX=1074692112,
I2S_I2S_RX=1074692116,
I2S_I2S_CODECCTL=1074692120,
I2S_I2S_TXSTADDR=1074692128,
I2S_I2S_TXTHADDR=1074692132,
I2S_I2S_TXEADDR=1074692136,
I2S_I2S_TXCADDR=1074692140,
I2S_I2S_RXSTADDR=1074692144,
I2S_I2S_RXTHADDR=1074692148,
I2S_I2S_RXEADDR=1074692152,
I2S_I2S_RXCADDR=1074692156,
I2S_I2S_RXAVGCTL=1074692160,
I2S_I2S_RXLCHAVG=1074692164,
I2S_I2S_RXRCHAVG=1074692168,
PWM_PWM_CLKPSC=1074683904,
PWM_PWM_CLKDIV=1074683908,
PWM_PWM_CTL=1074683912,
PWM_PWM_PERIOD0=1074683916,
PWM_PWM_CMPDAT0=1074683920,
PWM_PWM_CNT0=1074683924,
PWM_PWM_PERIOD1=1074683928,
PWM_PWM_CMPDAT1=1074683932,
PWM_PWM_CNT1=1074683936,
PWM_PWM_PERIOD2=1074683940,
PWM_PWM_CMPDAT2=1074683944,
PWM_PWM_CNT2=1074683948,
PWM_PWM_PERIOD3=1074683952,
PWM_PWM_CMPDAT3=1074683956,
PWM_PWM_CNT3=1074683960,
PWM_PWM_INTEN=1074683968,
PWM_PWM_INTSTS=1074683972,
PWM_PWM_CAPCTL01=1074683984,
PWM_PWM_CAPCTL23=1074683988,
PWM_PWM_RCAPDAT0=1074683992,
PWM_PWM_FCAPDAT0=1074683996,
PWM_PWM_RCAPDAT1=1074684000,
PWM_PWM_FCAPDAT1=1074684004,
PWM_PWM_RCAPDAT2=1074684008,
PWM_PWM_FCAPDAT2=1074684012,
PWM_PWM_RCAPDAT3=1074684016,
PWM_PWM_FCAPDAT3=1074684020,
PWM_PWM_CAPINEN=1074684024,
PWM_PWM_POEN=1074684028,
SDH_SDH_FB_0=1073782784,
SDH_SDH_FB_1=1073782788,
SDH_SDH_FB_2=1073782792,
SDH_SDH_FB_3=1073782796,
SDH_SDH_FB_4=1073782800,
SDH_SDH_FB_5=1073782804,
SDH_SDH_FB_6=1073782808,
SDH_SDH_FB_7=1073782812,
SDH_SDH_FB_8=1073782816,
SDH_SDH_FB_9=1073782820,
SDH_SDH_FB_10=1073782824,
SDH_SDH_FB_11=1073782828,
SDH_SDH_FB_12=1073782832,
SDH_SDH_FB_13=1073782836,
SDH_SDH_FB_14=1073782840,
SDH_SDH_FB_15=1073782844,
SDH_SDH_FB_16=1073782848,
SDH_SDH_FB_17=1073782852,
SDH_SDH_FB_18=1073782856,
SDH_SDH_FB_19=1073782860,
SDH_SDH_FB_20=1073782864,
SDH_SDH_FB_21=1073782868,
SDH_SDH_FB_22=1073782872,
SDH_SDH_FB_23=1073782876,
SDH_SDH_FB_24=1073782880,
SDH_SDH_FB_25=1073782884,
SDH_SDH_FB_26=1073782888,
SDH_SDH_FB_27=1073782892,
SDH_SDH_FB_28=1073782896,
SDH_SDH_FB_29=1073782900,
SDH_SDH_FB_30=1073782904,
SDH_SDH_FB_31=1073782908,
SDH_SDH_DMACTL=1073783808,
SDH_SDH_DMASA=1073783816,
SDH_SDH_DMABCNT=1073783820,
SDH_SDH_DMAINTEN=1073783824,
SDH_SDH_DMAINTSTS=1073783828,
SDH_SDH_GCTL=1073784832,
SDH_SDH_GINTEN=1073784836,
SDH_SDH_GINTSTS=1073784840,
SDH_SDH_CTL=1073784864,
SDH_SDH_CMDARG=1073784868,
SDH_SDH_INTEN=1073784872,
SDH_SDH_INTSTS=1073784876,
SDH_SDH_RESP0=1073784880,
SDH_SDH_RESP1=1073784884,
SDH_SDH_BLEN=1073784888,
SDH_SDH_TOUT=1073784892,
RTC_RTC_INIT=1074688000,
RTC_RTC_RWEN=1074688004,
RTC_RTC_FREQADJ=1074688008,
RTC_RTC_TIME=1074688012,
RTC_RTC_CAL=1074688016,
RTC_RTC_CLKFMT=1074688020,
RTC_RTC_WEEKDAY=1074688024,
RTC_RTC_TALM=1074688028,
RTC_RTC_CALM=1074688032,
RTC_RTC_LEAPYEAR=1074688036,
RTC_RTC_INTEN=1074688040,
RTC_RTC_INTSTS=1074688044,
RTC_RTC_TICK=1074688048,
RTC_RTC_POWCTL=1074688052,
RTC_RTC_SET=1074688056,
RTC_RTC_CLKSRC=1074688060,
RTC_RTC_CALCNT=1074688064,
RTC_RTC_SYNC=1074688068,
RTC_RTC_PORCTRL=1074688080,
RTC_RTC_SPR0=1074688084,
RTC_RTC_SPR1=1074688088,
RTC_RTC_SPR2=1074688092,
RTC_RTC_SPR3=1074688096,
RTC_RTC_SPR4=1074688100,
RTC_RTC_SPR5=1074688104,
RTC_RTC_SPR6=1074688108,
RTC_RTC_SPR7=1074688112,
SPI0_SPI_CTL=1074696192,
SPI0_SPI_CLKDIV=1074696196,
SPI0_SPI_SSCTL=1074696200,
SPI0_SPI_FIFOCTL=1074696208,
SPI0_SPI_STATUS=1074696212,
SPI0_SPI_TX=1074696224,
SPI0_SPI_RX=1074696240,
SPI1_SPI_CTL=1074663424,
SPI1_SPI_CLKDIV=1074663428,
SPI1_SPI_SSCTL=1074663432,
SPI1_SPI_FIFOCTL=1074663440,
SPI1_SPI_STATUS=1074663444,
SPI1_SPI_TX=1074663456,
SPI1_SPI_RX=1074663472,
ADC_ADC_CTL=1074667520,
ADC_ADC_INTCTL=1074667524,
ADC_ADC_DAT=1074667528,
TIMER01_TIMER0_CTL=1074700288,
TIMER01_TIMER0_CMP=1074700292,
TIMER01_TIMER0_INTSTS=1074700296,
TIMER01_TIMER0_CNT=1074700300,
TIMER01_TIMER0_CAP=1074700304,
TIMER01_TIMER0_EXTCTL=1074700308,
TIMER01_TIMER0_EINTSTS=1074700312,
TIMER01_TIMER1_CTL=1074700320,
TIMER01_TIMER1_CMP=1074700324,
TIMER01_TIMER1_INTSTS=1074700328,
TIMER01_TIMER1_CNT=1074700332,
TIMER01_TIMER1_CAP=1074700336,
TIMER01_TIMER1_EXTCTL=1074700340,
TIMER01_TIMER1_EINTSTS=1074700344,
TIMER23_TIMER2_CTL=1074704384,
TIMER23_TIMER2_CMP=1074704388,
TIMER23_TIMER2_INTSTS=1074704392,
TIMER23_TIMER2_CNT=1074704396,
TIMER23_TIMER2_CAP=1074704400,
TIMER23_TIMER2_EXTCTL=1074704404,
TIMER23_TIMER2_EINTSTS=1074704408,
TIMER23_TIMER3_CTL=1074704416,
TIMER23_TIMER3_CMP=1074704420,
TIMER23_TIMER3_INTSTS=1074704424,
TIMER23_TIMER3_CNT=1074704428,
TIMER23_TIMER3_CAP=1074704432,
TIMER23_TIMER3_EXTCTL=1074704436,
TIMER23_TIMER3_EINTSTS=1074704440,
WDT_WDT_CTL=1074720768,
WDT_WDT_ALTCTL=1074720772,
WDT_WDT_RSTSTS=1074720784,
WWDT_WWDT_RLDCNT=1074721024,
WWDT_WWDT_CTL=1074721028,
WWDT_WWDT_STATUS=1074721032,
WWDT_WWDT_CNT=1074721036,
WWDT_WWDT_RSTSTS=1074721048,
UART0_UART_DAT=1074708480,
UART0_UART_INTEN=1074708484,
UART0_UART_FIFO=1074708488,
UART0_UART_LINE=1074708492,
UART0_UART_MODEM=1074708496,
UART0_UART_MODEMSTS=1074708500,
UART0_UART_FIFOSTS=1074708504,
UART0_UART_INTSTS=1074708508,
UART0_UART_TOUT=1074708512,
UART0_UART_BAUD=1074708516,
UART0_UART_IRDA=1074708520,
UART0_UART_ALTCTL=1074708524,
UART0_UART_FUNCSEL=1074708528,
UART0_UART_LINCTL=1074708532,
UART0_UART_LINSTS=1074708536,
UART1_UART_DAT=1074712576,
UART1_UART_INTEN=1074712580,
UART1_UART_FIFO=1074712584,
UART1_UART_LINE=1074712588,
UART1_UART_MODEM=1074712592,
UART1_UART_MODEMSTS=1074712596,
UART1_UART_FIFOSTS=1074712600,
UART1_UART_INTSTS=1074712604,
UART1_UART_TOUT=1074712608,
UART1_UART_BAUD=1074712612,
UART1_UART_IRDA=1074712616,
UART1_UART_ALTCTL=1074712620,
UART1_UART_FUNCSEL=1074712624,
UART1_UART_LINCTL=1074712628,
UART1_UART_LINSTS=1074712632,
UART2_UART_DAT=1074716672,
UART2_UART_INTEN=1074716676,
UART2_UART_FIFO=1074716680,
UART2_UART_LINE=1074716684,
UART2_UART_MODEM=1074716688,
UART2_UART_MODEMSTS=1074716692,
UART2_UART_FIFOSTS=1074716696,
UART2_UART_INTSTS=1074716700,
UART2_UART_TOUT=1074716704,
UART2_UART_BAUD=1074716708,
UART2_UART_IRDA=1074716712,
UART2_UART_ALTCTL=1074716716,
UART2_UART_FUNCSEL=1074716720,
UART2_UART_LINCTL=1074716724,
UART2_UART_LINSTS=1074716728,
USBD_USBD_GINTSTS=1073844224,
USBD_USBD_GINTEN=1073844232,
USBD_USBD_BUSINTSTS=1073844240,
USBD_USBD_BUSINTEN=1073844244,
USBD_USBD_OPER=1073844248,
USBD_USBD_FRAMECNT=1073844252,
USBD_USBD_FADDR=1073844256,
USBD_USBD_TEST=1073844260,
USBD_USBD_CEPDAT=1073844264,
USBD_USBD_CEPCTL=1073844268,
USBD_USBD_CEPINTEN=1073844272,
USBD_USBD_CEPINTSTS=1073844276,
USBD_USBD_CEPTXCNT=1073844280,
USBD_USBD_CEPRXCNT=1073844284,
USBD_USBD_CEPDATCNT=1073844288,
USBD_USBD_SETUP1_0=1073844292,
USBD_USBD_SETUP3_2=1073844296,
USBD_USBD_SETUP5_4=1073844300,
USBD_USBD_SETUP7_6=1073844304,
USBD_USBD_CEPBUFSTART=1073844308,
USBD_USBD_CEPBUFEND=1073844312,
USBD_USBD_DMACTL=1073844316,
USBD_USBD_DMACNT=1073844320,
USBD_USBD_EPADAT=1073844324,
USBD_USBD_EPAINTSTS=1073844328,
USBD_USBD_EPAINTEN=1073844332,
USBD_USBD_EPADATCNT=1073844336,
USBD_USBD_EPARSPCTL=1073844340,
USBD_USBD_EPAMPS=1073844344,
USBD_USBD_EPATXCNT=1073844348,
USBD_USBD_EPACFG=1073844352,
USBD_USBD_EPABUFSTART=1073844356,
USBD_USBD_EPABUFEND=1073844360,
USBD_USBD_EPBDAT=1073844364,
USBD_USBD_EPBINTSTS=1073844368,
USBD_USBD_EPBINTEN=1073844372,
USBD_USBD_EPBDATCNT=1073844376,
USBD_USBD_EPBRSPCTL=1073844380,
USBD_USBD_EPBMPS=1073844384,
USBD_USBD_EPBTXCNT=1073844388,
USBD_USBD_EPBCFG=1073844392,
USBD_USBD_EPBBUFSTART=1073844396,
USBD_USBD_EPBBUFEND=1073844400,
USBD_USBD_EPCDAT=1073844404,
USBD_USBD_EPCINTSTS=1073844408,
USBD_USBD_EPCINTEN=1073844412,
USBD_USBD_EPCDATCNT=1073844416,
USBD_USBD_EPCRSPCTL=1073844420,
USBD_USBD_EPCMPS=1073844424,
USBD_USBD_EPCTXCNT=1073844428,
USBD_USBD_EPCCFG=1073844432,
USBD_USBD_EPCBUFSTART=1073844436,
USBD_USBD_EPCBUFEND=1073844440,
USBD_USBD_EPDDAT=1073844444,
USBD_USBD_EPDINTSTS=1073844448,
USBD_USBD_EPDINTEN=1073844452,
USBD_USBD_EPDDATCNT=1073844456,
USBD_USBD_EPDRSPCTL=1073844460,
USBD_USBD_EPDMPS=1073844464,
USBD_USBD_EPDTXCNT=1073844468,
USBD_USBD_EPDCFG=1073844472,
USBD_USBD_EPDBUFSTART=1073844476,
USBD_USBD_EPDBUFEND=1073844480,
USBD_USBD_EPEDAT=1073844484,
USBD_USBD_EPEINTSTS=1073844488,
USBD_USBD_EPEINTEN=1073844492,
USBD_USBD_EPEDATCNT=1073844496,
USBD_USBD_EPERSPCTL=1073844500,
USBD_USBD_EPEMPS=1073844504,
USBD_USBD_EPETXCNT=1073844508,
USBD_USBD_EPECFG=1073844512,
USBD_USBD_EPEBUFSTART=1073844516,
USBD_USBD_EPEBUFEND=1073844520,
USBD_USBD_EPFDAT=1073844524,
USBD_USBD_EPFINTSTS=1073844528,
USBD_USBD_EPFINTEN=1073844532,
USBD_USBD_EPFDATCNT=1073844536,
USBD_USBD_EPFRSPCTL=1073844540,
USBD_USBD_EPFMPS=1073844544,
USBD_USBD_EPFTXCNT=1073844548,
USBD_USBD_EPFCFG=1073844552,
USBD_USBD_EPFBUFSTART=1073844556,
USBD_USBD_EPFBUFEND=1073844560,
USBD_USBD_EPGDAT=1073844564,
USBD_USBD_EPGINTSTS=1073844568,
USBD_USBD_EPGINTEN=1073844572,
USBD_USBD_EPGDATCNT=1073844576,
USBD_USBD_EPGRSPCTL=1073844580,
USBD_USBD_EPGMPS=1073844584,
USBD_USBD_EPGTXCNT=1073844588,
USBD_USBD_EPGCFG=1073844592,
USBD_USBD_EPGBUFSTART=1073844596,
USBD_USBD_EPGBUFEND=1073844600,
USBD_USBD_EPHDAT=1073844604,
USBD_USBD_EPHINTSTS=1073844608,
USBD_USBD_EPHINTEN=1073844612,
USBD_USBD_EPHDATCNT=1073844616,
USBD_USBD_EPHRSPCTL=1073844620,
USBD_USBD_EPHMPS=1073844624,
USBD_USBD_EPHTXCNT=1073844628,
USBD_USBD_EPHCFG=1073844632,
USBD_USBD_EPHBUFSTART=1073844636,
USBD_USBD_EPHBUFEND=1073844640,
USBD_USBD_EPIDAT=1073844644,
USBD_USBD_EPIINTSTS=1073844648,
USBD_USBD_EPIINTEN=1073844652,
USBD_USBD_EPIDATCNT=1073844656,
USBD_USBD_EPIRSPCTL=1073844660,
USBD_USBD_EPIMPS=1073844664,
USBD_USBD_EPITXCNT=1073844668,
USBD_USBD_EPICFG=1073844672,
USBD_USBD_EPIBUFSTART=1073844676,
USBD_USBD_EPIBUFEND=1073844680,
USBD_USBD_EPJDAT=1073844684,
USBD_USBD_EPJINTSTS=1073844688,
USBD_USBD_EPJINTEN=1073844692,
USBD_USBD_EPJDATCNT=1073844696,
USBD_USBD_EPJRSPCTL=1073844700,
USBD_USBD_EPJMPS=1073844704,
USBD_USBD_EPJTXCNT=1073844708,
USBD_USBD_EPJCFG=1073844712,
USBD_USBD_EPJBUFSTART=1073844716,
USBD_USBD_EPJBUFEND=1073844720,
USBD_USBD_EPKDAT=1073844724,
USBD_USBD_EPKINTSTS=1073844728,
USBD_USBD_EPKINTEN=1073844732,
USBD_USBD_EPKDATCNT=1073844736,
USBD_USBD_EPKRSPCTL=1073844740,
USBD_USBD_EPKMPS=1073844744,
USBD_USBD_EPKTXCNT=1073844748,
USBD_USBD_EPKCFG=1073844752,
USBD_USBD_EPKBUFSTART=1073844756,
USBD_USBD_EPKBUFEND=1073844760,
USBD_USBD_EPLDAT=1073844764,
USBD_USBD_EPLINTSTS=1073844768,
USBD_USBD_EPLINTEN=1073844772,
USBD_USBD_EPLDATCNT=1073844776,
USBD_USBD_EPLRSPCTL=1073844780,
USBD_USBD_EPLMPS=1073844784,
USBD_USBD_EPLTXCNT=1073844788,
USBD_USBD_EPLCFG=1073844792,
USBD_USBD_EPLBUFSTART=1073844796,
USBD_USBD_EPLBUFEND=1073844800,
USBD_USBD_UVCHDAT0=1073844808,
USBD_USBD_UVCHDAT1=1073844812,
USBD_USBD_UVCHDAT2=1073844816,
USBD_USBD_UVCEPAHCNT=1073844820,
USBD_USBD_UVCEPBHCNT=1073844824,
USBD_USBD_UVCEPCHCNT=1073844828,
USBD_USBD_UVCEPDHCNT=1073844832,
USBD_USBD_UVCEPEHCNT=1073844836,
USBD_USBD_UVCEPFHCNT=1073844840,
USBD_USBD_UVCEPGHCNT=1073844844,
USBD_USBD_UVCEPHHCNT=1073844848,
USBD_USBD_UVCEPIHCNT=1073844852,
USBD_USBD_UVCEPJHCNT=1073844856,
USBD_USBD_UVCEPKHCNT=1073844860,
USBD_USBD_UVCEPLHCNT=1073844864,
USBD_USBD_DMAADDR=1073846016,
USBD_USBD_PHYCTL=1073846020,
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_HcRhPortStatus2=1073778776,
USBH_HcPhyControl=1073779200,
USBH_HcMiscControl=1073779204,
}
g_NUC505_regs=REG
function read_NUC505_Registers(e,e,e,e)
local e={}
e["CLK_CLK_PWRCTL"],
e["CLK_CLK_AHBCLK"],
e["CLK_CLK_APBCLK"]=ice:ReadMem32(g_NUC505_regs.CLK_CLK_PWRCTL,3)
e["CLK_CLK_CLKDIV0"],
e["CLK_CLK_CLKDIV1"],
e["CLK_CLK_CLKDIV2"],
e["CLK_CLK_CLKDIV3"],
e["CLK_CLK_UPLLCTL"]=ice:ReadMem32(g_NUC505_regs.CLK_CLK_CLKDIV0,5)
e["CLK_CLK_APLLCTL"],
e["CLK_CLK_CLKDIV4"],
e["CLK_CLK_CLKDIV5"]=ice:ReadMemMulti(g_NUC505_regs.CLK_CLK_APLLCTL,
g_NUC505_regs.CLK_CLK_CLKDIV4,
g_NUC505_regs.CLK_CLK_CLKDIV5)
e["GCR_SYS_GPA_MFPL"],
e["GCR_SYS_GPA_MFPH"],
e["GCR_SYS_GPB_MFPL"],
e["GCR_SYS_GPB_MFPH"],
e["GCR_SYS_GPC_MFPL"],
e["GCR_SYS_GPC_MFPH"],
e["GCR_SYS_GPD_MFPL"]=ice:ReadMem32(g_NUC505_regs.GCR_SYS_GPA_MFPL,7)
e["GPIO_PA_MODE"],
e["GPIO_PA_PUEN"],
e["GPIO_PA_DOUT"],
e["GPIO_PA_PIN"]=ice:ReadMem32(g_NUC505_regs.GPIO_PA_MODE,4)
e["GPIO_PB_MODE"],
e["GPIO_PB_PUEN"],
e["GPIO_PB_DOUT"],
e["GPIO_PB_PIN"]=ice:ReadMem32(g_NUC505_regs.GPIO_PB_MODE,4)
e["GPIO_PC_MODE"],
e["GPIO_PC_PUEN"],
e["GPIO_PC_DOUT"],
e["GPIO_PC_PIN"]=ice:ReadMem32(g_NUC505_regs.GPIO_PC_MODE,4)
e["GPIO_PD_MODE"],
e["GPIO_PD_PUEN"],
e["GPIO_PD_DOUT"],
e["GPIO_PD_PIN"]=ice:ReadMem32(g_NUC505_regs.GPIO_PD_MODE,4)
e["SPIM_SPIM_CTL0"],
e["SPIM_SPIM_CTL1"]=ice:ReadMemMulti(g_NUC505_regs.SPIM_SPIM_CTL0,
g_NUC505_regs.SPIM_SPIM_CTL1)
e["SPI0_SPI_CTL"],
e["SPI0_SPI_CLKDIV"],
e["SPI1_SPI_CTL"],
e["SPI1_SPI_CLKDIV"]=ice:ReadMemMulti(g_NUC505_regs.SPI0_SPI_CTL,
g_NUC505_regs.SPI0_SPI_CLKDIV,
g_NUC505_regs.SPI1_SPI_CTL,
g_NUC505_regs.SPI1_SPI_CLKDIV)
e["UART0_UART_BAUD"],
e["UART1_UART_BAUD"],
e["UART2_UART_BAUD"]=ice:ReadMemMulti(g_NUC505_regs.UART0_UART_BAUD,
g_NUC505_regs.UART1_UART_BAUD,
g_NUC505_regs.UART2_UART_BAUD)
e["I2C0_I2C_CTL"],
e["I2C0_I2C_CLKDIV"],
e["I2C1_I2C_CTL"],
e["I2C1_I2C_CLKDIV"]=ice:ReadMemMulti(g_NUC505_regs.I2C0_I2C_CTL,
g_NUC505_regs.I2C0_I2C_CLKDIV,
g_NUC505_regs.I2C1_I2C_CTL,
g_NUC505_regs.I2C1_I2C_CLKDIV)
e["PWM_PWM_CLKPSC"],
e["PWM_PWM_CLKDIV"]=ice:ReadMemMulti(g_NUC505_regs.PWM_PWM_CLKPSC,
g_NUC505_regs.PWM_PWM_CLKDIV)
e["TIMER01_TIMER0_CTL"],
e["TIMER01_TIMER1_CTL"],
e["TIMER23_TIMER2_CTL"],
e["TIMER23_TIMER3_CTL"]=ice:ReadMemMulti(g_NUC505_regs.TIMER01_TIMER0_CTL,
g_NUC505_regs.TIMER01_TIMER1_CTL,
g_NUC505_regs.TIMER23_TIMER2_CTL,
g_NUC505_regs.TIMER23_TIMER3_CTL)
e["I2S_I2S_CTL"],
e["I2S_I2S_CLKDIV"]=ice:ReadMemMulti(g_NUC505_regs.I2S_I2S_CTL,
g_NUC505_regs.I2S_I2S_CLKDIV)
return e
end
local h={
[0]=kPinDirection_In,
[1]=kPinDirection_PushPullOut,
}
local u={
[0]="INPUT",
[1]="OUTPUT",
}
function get_mfp_regs(o,a,t)
local e
if t>=0 and t<=7 then
e="L"
else
e="H"
end
local e={"GCR_SYS_GP"..a.."_MFP"..e}
return reg2str("Multi-Function register",g_NUC505_regs,o,e)
end
function get_clk_informnation(e,t)
return reg2str("Clock setting registers",g_NUC505_regs,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"],1)
if a==0 then
t=0
e="invalid external 4~24M high speed crystal clock (see CLK_PWRCTL[0].HXTEN)"
else
t=12000000
e="external 4~24M high speed crystal clock, when external input clock is 12M"
end
return t,e
end
function get_RTC32K_clock(e,e)
local t
local e
t=32768
e="RTC 32.768kHz clock"
return t,e
end
function get_UPLL_clock(a,o)
local t
local e
t,e=get_HXT_clock(a,o)
table.insert(o,"CLK_CLK_UPLLCTL")
local o=ext.band(a["CLK_CLK_UPLLCTL"],131072)
if o~=0 then
t=0
e="invalid UPLL clock, UPLL is in Power-down mode (see CLK_UPLLCTL[17].PD)"
else
local o=ext.band(a["CLK_CLK_UPLLCTL"],65536)
if o~=0 then
if t==0 then
e=""..name.." clock from "..e
else
e=string.format("UPLL clock (%sHz), bypassed from %s",val2str(t),e)
end
else
local o=ext.band(ext.rshift(a["CLK_CLK_UPLLCTL"],13),7)
local i=ext.band(ext.rshift(a["CLK_CLK_UPLLCTL"],7),63)
local a=ext.band(a["CLK_CLK_UPLLCTL"],127)
local i=i+1
local a=a+1
local o=o+1
t=(t/i)*a/o
e=string.format("UPLL clock (%sHz), from %s",val2str(t),e)
end
end
return t,e
end
function get_APLL_clock(t,o)
local e
local a
e,a=get_HXT_clock(t,o)
table.insert(o,"CLK_CLK_APLLCTL")
local i=ext.band(ext.rshift(t["CLK_CLK_APLLCTL"],18),1)
local h=ext.band(ext.rshift(t["CLK_CLK_APLLCTL"],16),1)
local s=ext.band(ext.rshift(t["CLK_CLK_APLLCTL"],13),7)
local n=ext.band(ext.rshift(t["CLK_CLK_APLLCTL"],6),127)
local o=ext.band(t["CLK_CLK_APLLCTL"],63)
local o=o+1
local n=n+1
local s=s+1
if h~=0 then
e=0
a="invalid APLL clock, APLL is in Power-down mode (see CLK_APLLCTL[16].PD)"
elseif i==0 then
e=(e/o)*n/s
a=string.format("APLL clock (%sHz), from %s",val2str(e),a)
elseif i==1 then
local t=ext.band(ext.rshift(t["CLK_CLK_APLLCTL"],20),4095)
local t=t/ext.lshift(1,12)
local t=n+t
e=(e/o)*t/s
a=string.format("APLL clock (%sHz), from %s",val2str(e),a)
end
return e,a
end
function get_sys_clock(a,o,i)
local t
local e
table.insert(o,"CLK_CLK_CLKDIV0")
local n=ext.rshift(ext.band(a["CLK_CLK_CLKDIV0"],128),7)
if n==0 then
t,e=get_HXT_clock(a,o)
else
t,e=get_UPLL_clock(a,o)
end
if t==0 then
e=""..i.." clock from "..e
else
local a=ext.band(a["CLK_CLK_CLKDIV0"],15)
t=t/(a+1)
e=string.format("%s clock (%sHz), from %s",i,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(a,o)
local t
local e
t,e=get_HCLK_clock(a,o)
if t==0 then
e="PCLK clock from "..e
else
table.insert(o,"CLK_CLK_CLKDIV0")
local a=ext.rshift(ext.band(a["CLK_CLK_CLKDIV0"],3840),8)
t=t/(a+1)
e=string.format("PCLK clock (%sHz), from %s",val2str(t),e)
end
return t,e
end
function fill_NUC505_GPIO(a,i,t,e,d)
if d==nil then d=string.format("P%s.%d",t,e)end
local o=i["GPIO_P"..t.."_MODE"]
local n=i["GPIO_P"..t.."_PUEN"]
local r=i["GPIO_P"..t.."_DOUT"]
local l=i["GPIO_P"..t.."_PIN"]
a["highlight_text"]=d
a["normal_color"]=kColor_Invalid
a["highlight_color"]=kColor_GPIO
a["pin_bg_color"]=kBgColor_GPIO
local s=ext.band(ext.rshift(o,e),1)
a["direction"]=h[s]
if h[s]==kPinDirection_In then
if ext.band(l,ext.lshift(1,e))==0 then
a["status"]=kPinStatus_Low
else
a["status"]=kPinStatus_High
end
else
if ext.band(r,ext.lshift(1,e))==0 then
a["status"]=kPinStatus_Low
else
a["status"]=kPinStatus_High
end
end
local o=string.format("P%s.%d is in %s mode
",t,e,u[s])
if h[s]==kPinDirection_In then
if ext.band(l,ext.lshift(1,e))==0 then
o=o.."Pin input low
"
else
o=o.."Pin input high
"
end
end
if h[s]==kPinDirection_PushPullOut then
if ext.band(r,ext.lshift(1,e))==0 then
o=o.."Pin output low
"
else
o=o.."Pin output high
"
end
end
local n=""
if h[s]==kPinDirection_PushPullOut then
if ext.band(r,ext.lshift(1,e))==0 and ext.band(l,ext.lshift(1,e))~=0 then
n=string.format("Leakage warning: GPIO_P%s_DOUT[%d] = 0, GPIO_P%s_PIN[%d] = 1
",t,e,t,e)
elseif ext.band(r,ext.lshift(1,e))~=0 and ext.band(l,ext.lshift(1,e))==0 then
n=string.format("Leakage warning: GPIO_P%s_DOUT[%d] = 1, GPIO_P%s_PIN[%d] = 0
",t,e,t,e)
end
end
if n~=""then
a["pin_no_color"]=kBgColor_Error
n=""..n..""
end
local s={
"GPIO_P"..t.."_MODE",
"GPIO_P"..t.."_PUEN",
"GPIO_P"..t.."_DOUT",
"GPIO_P"..t.."_PIN"}
local s=reg2str("GPIO setting registers",g_NUC505_regs,i,s)
a["information"]=string.format(
"%s
%s
"..
"%s%s"..
"Information
"..
"%s",
d,
n,
get_mfp_regs(i,t,e),
s,
o)
end
function fill_invalid_GPIO(e,o,a,t)
e["highlight_text"]=string.format("GP%s%d",a,t)
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_Invalid
e["pin_bg_color"]=kBgColor_Invalid
e["direction"]=kPinDirection_Unknown
e["status"]=kPinStatus_Unknown
e["pin_no_color"]=kBgColor_Error
local i="Undefined setting in Multi-Function registers for this pin.
"
e["information"]=string.format(
"GP%s%d
%s
"..
"%s",
a,t,
i,
get_mfp_regs(o,a,t))
end
function fill_NUC505_SPIM(t,a,h,r,s)
local e=""
local o=""
local i={}
t["highlight_text"]=s
t["normal_color"]=kColor_Invalid
t["highlight_color"]=kColor_SPI
t["pin_bg_color"]=kBgColor_SPI
t["direction"]=kPinDirection_Unknown
t["status"]=kPinStatus_Unknown
table.insert(i,"CLK_CLK_AHBCLK")
if ext.band(a["CLK_CLK_AHBCLK"],8)~=0 then
local t
local n
t,n=get_PCLK_clock(a,i)
if t~=0 then
table.insert(i,"SPIM_SPIM_CTL1")
local o=ext.band(ext.rshift(a["SPIM_SPIM_CTL1"],6),3)
if o==0 then
e=string.format("SPI interface from GPIO.
")
elseif o==1 then
e=string.format("SPI interface from MCP.
")
elseif o==2 then
e=string.format("SPI interface from MCP64.
")
end
table.insert(i,"SPIM_SPIM_CTL0")
local o=ext.band(ext.rshift(a["SPIM_SPIM_CTL0"],22),3)
if o==0 then
e=e..string.format("SPI is in I/O mode.
")
elseif o==1 then
e=e..string.format("SPI is in DMA Write mode.
")
elseif o==2 then
e=e..string.format("SPI is in DMA Read mode.
")
else
e=e..string.format("SPI is in Direct Memory Map mode.
")
end
local a=ext.band(ext.rshift(a["SPIM_SPIM_CTL1"],16),65535)
if a~=0 then
t=t/(a*2)
end
e=e..string.format("SPIM clock frequency: %sHz, from %s.
",val2str(t),n)
else
o=string.format("SPIM clock is not available, %s.
",n)
end
else
o=string.format("SPIM clock is not available (see CLK_AHBCLK[3].SPIMCKEN).
")
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",
s,
o,
get_mfp_regs(a,h,r),
get_clk_informnation(a,i),
e)
end
function fill_NUC505_SPI(o,a,r,d,h,e)
local t=""
local n=""
local i={}
o["highlight_text"]=h
o["normal_color"]=kColor_Invalid
o["highlight_color"]=kColor_SPI
o["pin_bg_color"]=kBgColor_SPI
o["direction"]=kPinDirection_Unknown
o["status"]=kPinStatus_Unknown
table.insert(i,"CLK_CLK_APBCLK")
if ext.band(a["CLK_CLK_APBCLK"],ext.lshift(512,e))~=0 then
local o
local s
table.insert(i,"CLK_CLK_CLKDIV2")
local h=ext.band(ext.rshift(a["CLK_CLK_CLKDIV2"],e+28),1)
if h==0 then
o,s=get_HXT_clock(a,i)
else
o,s=get_UPLL_clock(a,i)
end
if o~=0 then
local h=string.format("SPI%d_SPI_CTL",e)
local n=string.format("SPI%d_SPI_CLKDIV",e)
table.insert(i,h)
local h=ext.band(a[h],262144)
if h~=0 then
t=string.format("SPI%d is in slave mode.
",e)
else
t=string.format("SPI%d is in master mode.
",e)
table.insert(i,n)
local a=ext.band(a[n],255)
local a=o/(a+1)
t=t..string.format("SPI%d clock frequency: %sHz, from %s.
",
e,val2str(a),s)
end
else
n=string.format("SPI%d clock is not available, %s.
",e,s)
end
else
n=string.format("SPI%d clock is not available (see CLK_APBCLK[%d].SPI%dCKEN).
",
e,e+9,e)
end
if n~=""then
n=""..n..""
o["pin_no_color"]=kBgColor_Error
end
if t~=""then
t="Information
"..t
end
o["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
n,
get_mfp_regs(a,r,d),
get_clk_informnation(a,i),
t)
end
function fill_NUC505_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_NUC505_ADC(e,t,r,h,s)
local i=""
local a=""
local o={}
e["highlight_text"]=s
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_ADC
e["pin_bg_color"]=kBgColor_ADC
e["direction"]=kPinDirection_In
e["status"]=kPinStatus_Unknown
table.insert(o,"CLK_CLK_APBCLK")
if ext.band(t["CLK_CLK_APBCLK"],32768)~=0 then
local n
local e
table.insert(o,"CLK_CLK_CLKDIV1")
local s=ext.rshift(ext.band(t["CLK_CLK_CLKDIV1"],268435456),28)
if s==0 then
n,e=get_HXT_clock(t,o)
else
n,e=get_UPLL_clock(t,o)
end
local t=ext.band(t["CLK_CLK_CLKDIV1"],255)
local t=n/(t+1)
if t~=0 then
i=string.format("ADC clock frequency: %sHz, from %s.
",val2str(t),e)
else
a="ADC clock is not available, "..e..".
"
end
else
a="ADC clock is not available (see CLK_APBCLK[15].ADCCKEN).
"
end
if a~=""then
a=""..a..""
e["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
e["information"]=string.format(
"%s
%s
"..
"%s%s%s",
s,
a,
get_mfp_regs(t,r,h),
get_clk_informnation(t,o),
i)
end
function fill_NUC505_UART(o,e,l,d,r,t)
local i=""
local a=""
local n={}
local s=0
o["highlight_text"]=r
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(s)
local h=string.format("UART%d",t)
local t=string.format("UART%d_UART_BAUD",t)
table.insert(n,t)
local i=ext.band(e[t],536870912)
local o=ext.band(e[t],268435456)
local n=ext.rshift(ext.band(e[t],251658240),24)
local a=ext.band(e[t],65535)
local e=0
local t=""
if i==0 and o==0 then
e=s/(16*(a+2))
elseif i~=0 and o==0 then
if n>=8 then
e=s/((n+1)*(a+2))
else
t="invalid "..h.."'s UART_BAUD value, EDIVM1 must >= 8"
end
elseif i~=0 and o~=0 then
e=s/(a+2)
else
t="invalid "..h.."'s UART_BAUD value"
end
return e,t
end
table.insert(n,"CLK_CLK_APBCLK")
if ext.band(e["CLK_CLK_APBCLK"],ext.lshift(2048,t))~=0 then
local h
local o
table.insert(n,"CLK_CLK_CLKDIV3")
local r=ext.band(ext.rshift(e["CLK_CLK_CLKDIV3"],t*8+4),1)
if r==0 then
h,o=get_HXT_clock(e,n)
else
h,o=get_UPLL_clock(e,n)
end
local e=ext.band(ext.rshift(e["CLK_CLK_CLKDIV3"],t*8),15)
s=h/(e+1)
if s~=0 then
i=string.format("UART%d clock frequency: %sHz, from %s.
",t,val2str(s),o)
else
a=string.format("UART%d clock is not available, %s.
",t,o)
end
else
a=string.format("UART%d clock is not available (see CLK_APBCLK[%d].UART%dCKEN).
",
t,t+11,t)
end
if a==""then
local e,t=get_uart_baudate(s)
if e~=0 then
i=i..string.format("UART baudrate: %d
",e)
else
a=t..".
"
end
end
if a~=""then
a=""..a..""
o["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
o["information"]=string.format(
"%s
%s
"..
"%s%s%s",
r,
a,
get_mfp_regs(e,l,d),
get_clk_informnation(e,n),
i)
end
function fill_NUC505_I2C(a,i,d,r,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_APBCLK")
local s=ext.band(i["CLK_CLK_APBCLK"],ext.lshift(32,e))
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(i[a],64)
if a~=0 then
local s
local a
s,a=get_PCLK_clock(i,n)
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, DIVIDER 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%d_I2C_CTL[6].I2CEN).
",e,e)
end
else
t=string.format("I2C%d clock is not available (see CLK_APBCLK[%d].I2C%dCKEN).
",e,5+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,d,r),
get_clk_informnation(i,n),
o)
end
function fill_NUC505_PWM(a,t,l,u,d,e)
local s=""
local o=""
local i={}
a["highlight_text"]=d
a["normal_color"]=kColor_Invalid
a["highlight_color"]=kColor_PWM
a["pin_bg_color"]=kBgColor_PWM
a["direction"]=kPinDirection_Unknown
a["status"]=kPinStatus_Unknown
local n=ext.rshift(e,1)
table.insert(i,"CLK_CLK_APBCLK")
local h=ext.band(t["CLK_CLK_APBCLK"],256)
if h~=0 then
local a
local h
table.insert(i,"CLK_CLK_CLKDIV5")
local r=ext.band(t["CLK_CLK_CLKDIV5"],67108864)
if r==0 then
a,h=get_HXT_clock(t,i)
else
a,h=get_UPLL_clock(t,i)
end
table.insert(i,"PWM_PWM_CLKPSC")
table.insert(i,"PWM_PWM_CLKDIV")
local i=ext.band(ext.rshift(t["PWM_PWM_CLKPSC"],n*8),255)
local r=ext.band(ext.rshift(t["PWM_PWM_CLKDIV"],e*4),7)
local r=({2,4,8,16,1,0,0,0})[r+1]
if i==0 then
o=string.format("PWM%d counter will be stopped since PWM_CLKPSC[%d:%d].CLKPSC%d%d = 0
",
e,8*n+7,8*n,2*n,2*n+1)
elseif r==0 then
o=string.format("PWM%d counter clock is not available (see PWM_CLKDIV[%d:%d].CLKDIV%d).
",
e,4*e+2,4*e,e)
else
local t=ext.band(ext.rshift(t["CLK_CLK_CLKDIV5"],16),255)
local t=a/(t+1)/(i+1)
local a=t/r
s=string.format("PWM%d clock frequency: %sHz (Pre-Scaled), from %s.
"..
"PWM%d counter frequency: %sHz
",
e,val2str(t),h,
e,val2str(a))
end
else
o=string.format("PWM clock is not available (see CLK_APBCLK[8].PWMCKEN).
")
end
if o~=""then
o=""..o..""
a["pin_no_color"]=kBgColor_Error
end
if s~=""then
s="Information
"..s
end
a["information"]=string.format(
"%s
%s
"..
"%s%s%s",
d,
o,
get_mfp_regs(t,l,u),
get_clk_informnation(t,i),
s)
end
function fill_NUC505_TM(t,a,d,r,h,e)
local o=""
local n=""
local i={}
t["highlight_text"]=h
t["normal_color"]=kColor_Invalid
t["highlight_color"]=kColor_TM
t["pin_bg_color"]=kBgColor_TM
t["direction"]=kPinDirection_Unknown
t["status"]=kPinStatus_Unknown
table.insert(i,"CLK_CLK_APBCLK")
local s=ext.band(a["CLK_CLK_APBCLK"],ext.lshift(1,e))
if s~=0 then
local t=string.format("TIMER%d%d_TIMER%d_CTL",ext.rshift(e,1)*2,ext.rshift(e,1)*2+1,e)
table.insert(i,t)
local t=ext.band(a[t],16777216)
if t~=0 then
o=string.format("TMR%d external counting pin function enabled.
",e)
else
local s
local t
table.insert(i,"CLK_CLK_CLKDIV4")
local h=ext.band(ext.rshift(a["CLK_CLK_CLKDIV4"],24+e),1)
if h==1 then
s,t=get_HXT_clock(a,i)
else
s,t=get_RTC32K_clock(a,i)
end
if s~=0 then
local a=ext.band(ext.rshift(a["CLK_CLK_CLKDIV4"],8*e),255)
local a=s/(a+1)
o=string.format("TMR%d clock frequency: %sHz, from %s.
",e,val2str(a),t)
else
n=string.format("TMR%d clock is not available, %s.
",e,t)
end
end
else
n=string.format("TMR%d clock is not available (see CLK_APBCLK[%d].TMR%dCKEN).
",e,e,e)
end
if n~=""then
n=""..n..""
t["pin_no_color"]=kBgColor_Error
end
if o~=""then
o="Information
"..o
end
t["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
n,
get_mfp_regs(a,d,r),
get_clk_informnation(a,i),
o)
end
function fill_NUC505_I2S(i,t,d,r,h,e)
local e=""
local o=""
local n={}
i["highlight_text"]=h
i["normal_color"]=kColor_Invalid
i["highlight_color"]=kColor_I2S
i["pin_bg_color"]=kBgColor_I2S
i["direction"]=kPinDirection_Unknown
i["status"]=kPinStatus_Unknown
table.insert(n,"CLK_CLK_APBCLK")
if ext.band(t["CLK_CLK_APBCLK"],16384)~=0 then
local a
local i
table.insert(n,"CLK_CLK_CLKDIV2")
local s=ext.band(ext.rshift(t["CLK_CLK_CLKDIV2"],24),3)
if s==0 then
a,i=get_HXT_clock(t,n)
elseif s==1 then
a,i=get_UPLL_clock(t,n)
elseif s==3 then
a,i=get_APLL_clock(t,n)
else
o=string.format("I2S clock source is undefined (see CLK_CLKDIV2[25:24].I2SSEL).
")
end
if o==""then
if a~=0 then
table.insert(n,"I2S_I2S_CTL")
local o=ext.band(t["I2S_I2S_CTL"],1)
if o~=0 then
e=string.format("I2S controller enabled
")
else
e=string.format("I2S controller disabled, (see I2S_CTL[0].I2SEN).
")
end
local o=ext.band(t["CLK_CLK_CLKDIV2"],255)
local o=a/(o+1)
e=e..string.format("I2S clock frequency: %sHz, from %s.
",val2str(o),i)
table.insert(n,"I2S_I2S_CLKDIV")
local i=ext.band(ext.rshift(t["I2S_I2S_CLKDIV"],8),511)
local o=ext.band(t["I2S_I2S_CLKDIV"],63)
local i=a/(2*(i+1))
local t=a
if o~=0 then
t=a/(2*o)
end
e=e..string.format("I2S BCLK frequency: %sHz
",val2str(i))
e=e..string.format("I2S MCLK frequency: %sHz
",val2str(t))
else
o=string.format("I2S clock is not available, %s.
",i)
end
end
else
o=string.format("I2S clock is not available (see CLK_APBCLK[14].I2SCKEN).
")
end
if o~=""then
o=""..o..""
i["pin_no_color"]=kBgColor_Error
end
if e~=""then
e="Information
"..e
end
i["information"]=string.format(
"%s
%s
"..
"%s%s%s",
h,
o,
get_mfp_regs(t,d,r),
get_clk_informnation(t,n),
e)
end
function fill_NUC505_SD(e,t,r,h,s)
local i=""
local a=""
local o={}
e["highlight_text"]=s
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_SD
e["pin_bg_color"]=kBgColor_SD
e["direction"]=kPinDirection_Unknown
e["status"]=kPinStatus_Unknown
table.insert(o,"CLK_CLK_AHBCLK")
if ext.band(t["CLK_CLK_AHBCLK"],32)~=0 then
local n
local e
table.insert(o,"CLK_CLK_CLKDIV1")
local s=ext.band(ext.rshift(t["CLK_CLK_CLKDIV1"],30),1)
if s==0 then
n,e=get_HXT_clock(t,o)
else
n,e=get_UPLL_clock(t,o)
end
if n~=0 then
local t=ext.band(ext.rshift(t["CLK_CLK_CLKDIV1"],16),2047)
local t=n/(t+1)
i=string.format("SDHOST clock frequency: %sHz, from %s.
",val2str(t),e)
else
a="SDHOST clock is not available, "..e..".
"
end
else
a="SDHOST clock is not available (see CLK_AHBCLK[5].SDHCKEN).
"
end
if a~=""then
a=""..a..""
e["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
e["information"]=string.format(
"%s
%s
"..
"%s%s%s",
s,
a,
get_mfp_regs(t,r,h),
get_clk_informnation(t,o),
i)
end
function fill_NUC505_USBD(e,t,r,h,s)
local o=""
local a=""
local i={}
e["highlight_text"]=s
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_USB
e["pin_bg_color"]=kBgColor_USB
e["direction"]=kPinDirection_Unknown
e["status"]=kPinStatus_Unknown
table.insert(i,"CLK_CLK_AHBCLK")
if ext.band(t["CLK_CLK_AHBCLK"],64)~=0 then
local n
local e
table.insert(i,"CLK_CLK_CLKDIV0")
local s=ext.band(ext.rshift(t["CLK_CLK_CLKDIV0"],23),1)
if s==0 then
n,e=get_HXT_clock(t,i)
else
n,e=get_UPLL_clock(t,i)
end
if n~=0 then
local t=ext.band(ext.rshift(t["CLK_CLK_CLKDIV0"],16),31)
local t=n/(t+1)
o=string.format("USBD clock frequency: %sHz, from %s.
",val2str(t),e)
else
a="USBD clock is not available, "..e..".
"
end
else
a="USBD clock is not available (see CLK_AHBCLK[6].USBDCKEN).
"
end
if a~=""then
a=""..a..""
e["pin_no_color"]=kBgColor_Error
end
if o~=""then
o="Information
"..o
end
if r==nil or h==nil then
e["information"]=string.format(
"%s
%s
"..
"%s%s",
s,
a,
get_clk_informnation(t,i),
o)
else
e["information"]=string.format(
"%s
%s
"..
"%s%s%s",
s,
a,
get_mfp_regs(t,r,h),
get_clk_informnation(t,i),
o)
end
end
function fill_NUC505_USBH(e,t,h,r,s)
local i=""
local a=""
local o={}
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(o,"CLK_CLK_AHBCLK")
if ext.band(t["CLK_CLK_AHBCLK"],512)~=0 then
local e
local n
table.insert(o,"CLK_CLK_CLKDIV0")
local s=ext.band(ext.rshift(t["CLK_CLK_CLKDIV0"],31),1)
if s==0 then
e,n=get_HXT_clock(t,o)
else
e,n=get_UPLL_clock(t,o)
end
if e~=0 then
local t=ext.band(ext.rshift(t["CLK_CLK_CLKDIV0"],24),15)
local e=e/(t+1)
i=string.format("USBH clock frequency: %sHz, from %s.
",val2str(e),n)
else
a="USBH clock is not available, "..n..".
"
end
else
a="USBH clock is not available (see CLK_AHBCLK[9].USBHCKEN).
"
end
if a~=""then
a=""..a..""
e["pin_no_color"]=kBgColor_Error
end
if i~=""then
i="Information
"..i
end
if h==nil or r==nil then
e["information"]=string.format(
"%s
%s
"..
"%s%s",
s,
a,
get_clk_informnation(t,o),
i)
else
e["information"]=string.format(
"%s
%s
"..
"%s%s%s",
s,
a,
get_mfp_regs(t,h,r),
get_clk_informnation(t,o),
i)
end
end
function fill_NUC505_RTC(e,o,s,h,i)
local a=""
local t=""
local n={}
e["highlight_text"]=i
e["normal_color"]=kColor_Invalid
e["highlight_color"]=kColor_RTC
e["pin_bg_color"]=kBgColor_RTC
e["direction"]=kPinDirection_Unknown
e["status"]=kPinStatus_Unknown
table.insert(n,"CLK_CLK_APBCLK")
if ext.band(o["CLK_CLK_APBCLK"],128)==0 then
t="RTC clock is not available (see CLK_APBCLK[7].RTCCKEN).
"
t=""..t..""
e["pin_no_color"]=kBgColor_Error
end
if t~=""then
t=""..t..""
e["pin_no_color"]=kBgColor_Error
end
if a~=""then
a="Information
"..a
end
if s==nil or h==nil then
e["information"]=string.format(
"%s
%s
"..
"%s%s",
i,
t,
get_clk_informnation(o,n),
a)
else
e["information"]=string.format(
"%s
%s
"..
"%s%s%s",
i,
t,
get_mfp_regs(o,s,h),
get_clk_informnation(o,n),
a)
end
end
function fill_NUC505_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