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