int main(void) { cpuClockInit(); /* CPU Clock is now 104 MHz */ ssp_clock_init(); systickInit(); SETUPgout(EN_VDD); SETUPgout(MIXER_EN); SETUPgout(MIC_AMP_DIS); SETUPgout(LED1); SETUPgout(LED2); SETUPgout(LED3); SETUPgout(LED4); inputInit(); lcdInit(); lcdFill(0xff); lcdPrintln("Flash-App"); lcdNl(); lcdDisplay(); cpld_flash(); cpu_clock_set(50); full_msc(); while(1) { delayNop(2000000); ON(LED4); delayNop(2000000); OFF(LED4); } return 0; }
//# MENU cpld void cpld_flash(){ SETUPgout(EN_1V8); ON(EN_1V8); delayNop(1000000); /* wait until cpld boot */ cpu_clock_set(204); lcdPrintln("Program CPLD"); bytes=0; lcdPrint(IntToStr(bytes,5,F_LONG)); lcdPrint(" bytes..."); lcdNl(); #define WAIT_LOOP_DELAY (6000000) #define ALL_LEDS (PIN_LED1|PIN_LED2|PIN_LED3) int i; int error; refill_cpld_buffer_fs(); error = cpld_jtag_program(sizeof(cpld_xsvf_buffer), cpld_xsvf_buffer, refill_cpld_buffer_fs); if(error){ lcdPrintln("Programming failed!"); lcdPrintln(IntToStr(error,5,0)); lcdDisplay(); /* LED3 (Red) steady on error */ ON(LED4); while (1); }; lcdPrintln("Success."); lcdDisplay(); OFF(EN_1V8); };
//# MENU cpld void cpld_menu(){ getInputWaitRelease(); SETUPgout(EN_1V8); ON(EN_1V8); delayNop(1000000); /* wait until cpld boot */ cpu_clock_set(204); lcdClear(); lcdPrintln("CPLD"); lcdNl(); lcdNl(); bytes=0; lcdPrint(IntToStr(bytes,5,F_LONG)); lcdPrint(" bytes..."); lcdNl(); #define WAIT_LOOP_DELAY (6000000) #define ALL_LEDS (PIN_LED1|PIN_LED2|PIN_LED3) int i; int error; FRESULT res; res=f_open(&file, "cpld.xsv", FA_OPEN_EXISTING|FA_READ); if(res!=FR_OK){ lcdPrintln("FOPEN ERROR"); lcdPrintln(f_get_rc_string(res)); lcdDisplay(); getInputWait(); return; }; refill_cpld_buffer_fs(); error = cpld_jtag_program(sizeof(cpld_xsvf_buffer), cpld_xsvf_buffer, refill_cpld_buffer_fs); if(error){ lcdPrintln("Programming failed!"); lcdPrintln(IntToStr(error,5,0)); lcdDisplay(); /* LED3 (Red) steady on error */ ON(LED3); while (1); }; lcdPrintln("Success."); lcdDisplay(); for (res=0;res<10;res++){ /* blink LED1, LED2, and LED3 on success */ TOGGLE(LED1); TOGGLE(LED2); TOGGLE(LED3); for (i = 0; i < WAIT_LOOP_DELAY; i++) /* Wait a bit. */ __asm__("nop"); }; /* XXX: Maybe power toggle needed to start CPLD? */ OFF(EN_1V8); };
void doLCD(){ uint8_t pwm=50; lcdClear(0xff); lcdPrintln("LCD-Test v1"); lcdDisplay(); // #define LCD_BL_EN P1_1, SCU_CONF_FUNCTION1, GPIO0, GPIOPIN8 // LCD Backlight: PWM while(1){ OFF(LCD_BL_EN); delayNop(10000+pwm*100); ON(LCD_BL_EN); delayNop(10000-pwm*100); switch(getInput()){ case BTN_NONE: continue; case BTN_UP: break; case BTN_DOWN: break; case BTN_LEFT: pwm--; break; case BTN_RIGHT: pwm++; break; case BTN_ENTER: return; break; }; lcdClear(0xff); lcdPrintln("LCD-Test v1"); lcdPrintln(""); lcdPrint("pwm=");lcdPrint(IntToStr(pwm,3,0));lcdNl(); lcdDisplay(); }; };
void doFeld(){ char tu=0,td=0,tl=0,tr=0; char tuN=0,tdN=0,tlN=0,trN=0; char page=0; char tu2=0,td2=0,td2N=0,tl2=0,tr2=0; uint16_t sf=3500; char tu3=0,td3=0,tl3=0,tr3=0; int ctr=0; /* Blink LED1 on the board. */ while (1) { lcdClear(0xff); lcdPrintln("Feld-Test v11"); lcdPrintln(""); lcdPrint("Page ");lcdPrintln(IntToStr(page,2,0)); if (page==0){ tu=GET(BY_MIX); tuN=GET(BY_MIX_N); lcdPrint(IntToStr(tu,1,F_HEX)); lcdPrint(IntToStr(tuN,1,F_HEX)); lcdPrintln(" Up BY_MIX/_N"); td=GET(BY_AMP); tdN=GET(BY_AMP_N); lcdPrint(IntToStr(td,1,F_HEX)); lcdPrint(IntToStr(tdN,1,F_HEX)); lcdPrintln(" Dn BY_AMP/_N"); tl=GET(TX_RX);tlN=GET(TX_RX_N); lcdPrint(IntToStr(tl,1,F_HEX)); lcdPrint(IntToStr(tlN,1,F_HEX)); lcdPrintln(" Lt TX_RX/_N"); tr=GET(LOW_HIGH_FILT); trN=GET(LOW_HIGH_FILT_N); lcdPrint(IntToStr(tr,1,F_HEX)); lcdPrint(IntToStr(trN,1,F_HEX)); lcdPrintln(" Rt LOW_HIGH_FILT/_N"); lcdPrintln("Enter for next page"); lcdDisplay(); switch(getInput()){ case BTN_UP: tu=1-tu; if (tu){ OFF(BY_MIX_N); ON(BY_MIX); }else{ OFF(BY_MIX); ON(BY_MIX_N); }; break; case BTN_DOWN: td=1-td; if (td){ OFF(BY_AMP_N); ON(BY_AMP); }else{ OFF(BY_AMP); ON(BY_AMP_N); }; break; case BTN_LEFT: tl=1-tl; if (tl){ OFF(TX_RX_N); ON(TX_RX); }else{ OFF(TX_RX); ON(TX_RX_N); }; break; case BTN_RIGHT: tr=1-tr; if (tr){ OFF(LOW_HIGH_FILT_N); ON(LOW_HIGH_FILT); }else{ OFF(LOW_HIGH_FILT); ON(LOW_HIGH_FILT_N); }; break; case BTN_ENTER: page++; break; }; }else if (page==1){ lcdPrint(" "); lcdPrintln(" Up "); td2=GET(RX_LNA);td2N=GET(TX_AMP); lcdPrint(IntToStr(td2,1,F_HEX)); lcdPrint(IntToStr(td2N,1,F_HEX)); lcdPrintln(" Dn RX/TX"); lcdPrint(IntToStr(tl2,1,F_HEX)); lcdPrint(" "); lcdPrintln(" Lt MIXER_EN"); lcdPrint(IntToStr(tr2,2,F_HEX)); lcdPrintln(" Rt SI-clkdis"); lcdPrintln("Enter for next page"); lcdDisplay(); switch(getInput()){ case BTN_UP: tu2=1-tu2; if (tu2){ ; }else{ ; }; break; case BTN_DOWN: td2=td2+2*td2N; td2++; td2=td2%3; switch (td2){ case(0): OFF(RX_LNA); OFF(TX_AMP); break; case(1): ON(RX_LNA); OFF(TX_AMP); break; case(2): OFF(RX_LNA); ON(TX_AMP); break; }; break; case BTN_LEFT: tl2=1-tl2; if (tl2){ ON(MIXER_EN); }else{ OFF(MIXER_EN); }; break; case BTN_RIGHT: tr2=1-tr2; if (tr2){ si5351c_power_down_all_clocks(); }else{ si5351c_set_clock_source(PLL_SOURCE_XTAL); }; break; case BTN_ENTER: page++; break; }; }else if (page==2){ lcdPrint("SF: ");lcdPrint(IntToStr(sf,4,F_ZEROS)); lcdPrintln(" MHz"); tl3=GET(CE_VCO); lcdPrint(IntToStr(tl3,1,F_HEX)); lcdPrint(" "); lcdPrintln(" Lt CE_VCO"); lcdPrint(" "); lcdPrintln(" Rt "); lcdPrintln("Enter for next page"); lcdDisplay(); switch(getInput()){ case BTN_UP: sf+=100; mixer_set_frequency(sf); break; case BTN_DOWN: sf-=100; mixer_set_frequency(sf); break; case BTN_LEFT: tl3=1-tl3; if (tl3){ ON(CE_VCO); mixer_setup(); mixer_set_frequency(sf); }else{ OFF(CE_VCO); }; break; case BTN_RIGHT: tr3=1-tr3; if (tr3){ ; }else{ ; }; break; case BTN_ENTER: page++; break; }; }; if (page>2){page=0;} ON(LED1); delayNop(200000); OFF(LED1); delayNop(200000); ctr++; lcdNl(); lcdPrint(IntToStr(ctr,4,F_HEX)); } };
void doSpeed(){ SETUPgout(LCD_BL_EN); SETUPgout(EN_1V8); SETUPgout(LED4); int mhz=102; while(1){ TOGGLE(LED1); lcdClear(0xff); lcdPrint("speed: "); lcdPrint(IntToStr(mhz,3,0));lcdNl(); lcdDisplay(); switch(getInput()){ case BTN_UP: // mhz=204; // cpu_clock_set(mhz); #define PD0_SLEEP0_HW_ENA MMIO32(0x40042000) #define PD0_SLEEP0_MODE MMIO32(0x4004201C) PD0_SLEEP0_HW_ENA = 1; PD0_SLEEP0_MODE = 0x003000AA; SCB_SCR|=SCB_SCR_SLEEPDEEP; ON(LED1); CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_IRC) | CGU_BASE_M4_CLK_AUTOBLOCK(1)); CGU_PLL1_CTRL= CGU_PLL1_CTRL_PD(1); CGU_PLL0USB_CTRL= CGU_PLL1_CTRL_PD(1); CGU_PLL0AUDIO_CTRL= CGU_PLL1_CTRL_PD(1); CGU_XTAL_OSC_CTRL &= ~(CGU_XTAL_OSC_CTRL_ENABLE_MASK); #define __WFI() __asm__("wfi") while(1){ TOGGLE(LED1); __WFI(); }; break; case BTN_DOWN: mhz=12; cpu_clock_set(mhz); break; case BTN_LEFT: while(1){ cpu_clock_set(102); TOGGLE(LED1); delayNop(1000); cpu_clock_set(12); TOGGLE(LED1); delayNop(1000); }; break; case BTN_RIGHT: TOGGLE(LCD_BL_EN); OFF(BY_MIX_N); OFF(BY_MIX); OFF(BY_AMP_N); OFF(BY_AMP); OFF(TX_RX_N); OFF(TX_RX); OFF(LOW_HIGH_FILT_N); OFF(LOW_HIGH_FILT); OFF(TX_AMP); OFF(RX_LNA); OFF(MIXER_EN); OFF(CE_VCO); // cpu_clock_set(mhz); break; case BTN_ENTER: // turnoff(&CCU1_CLK_APB3_BUS_CFG); turnoff(&CCU1_CLK_APB3_I2C1_CFG); turnoff(&CCU1_CLK_APB3_DAC_CFG); turnoff(&CCU1_CLK_APB3_ADC0_CFG); turnoff(&CCU1_CLK_APB3_ADC1_CFG); turnoff(&CCU1_CLK_APB3_CAN0_CFG); // turnoff(&CCU1_CLK_APB1_BUS_CFG); turnoff(&CCU1_CLK_APB1_MOTOCONPWM_CFG); turnoff(&CCU1_CLK_APB1_I2C0_CFG); turnoff(&CCU1_CLK_APB1_I2S_CFG); turnoff(&CCU1_CLK_APB1_CAN1_CFG); turnoff(&CCU1_CLK_SPIFI_CFG); // turnoff(&CCU1_CLK_M4_BUS_CFG); turnoff(&CCU1_CLK_M4_SPIFI_CFG); // turnoff(&CCU1_CLK_M4_GPIO_CFG); turnoff(&CCU1_CLK_M4_LCD_CFG); turnoff(&CCU1_CLK_M4_ETHERNET_CFG); turnoff(&CCU1_CLK_M4_USB0_CFG); turnoff(&CCU1_CLK_M4_EMC_CFG); turnoff(&CCU1_CLK_M4_SDIO_CFG); turnoff(&CCU1_CLK_M4_DMA_CFG); // turnoff(&CCU1_CLK_M4_M4CORE_CFG); turnoff(&CCU1_CLK_M4_SCT_CFG); turnoff(&CCU1_CLK_M4_USB1_CFG); turnoff(&CCU1_CLK_M4_EMCDIV_CFG); turnoff(&CCU1_CLK_M4_M0APP_CFG); turnoff(&CCU1_CLK_M4_VADC_CFG); turnoff(&CCU1_CLK_M4_WWDT_CFG); turnoff(&CCU1_CLK_M4_USART0_CFG); turnoff(&CCU1_CLK_M4_UART1_CFG); turnoff(&CCU1_CLK_M4_SSP0_CFG); turnoff(&CCU1_CLK_M4_TIMER0_CFG); turnoff(&CCU1_CLK_M4_TIMER1_CFG); // turnoff(&CCU1_CLK_M4_SCU_CFG); // turnoff(&CCU1_CLK_M4_CREG_CFG); turnoff(&CCU1_CLK_M4_RITIMER_CFG); turnoff(&CCU1_CLK_M4_USART2_CFG); turnoff(&CCU1_CLK_M4_USART3_CFG); turnoff(&CCU1_CLK_M4_TIMER2_CFG); turnoff(&CCU1_CLK_M4_TIMER3_CFG); // turnoff(&CCU1_CLK_M4_SSP1_CFG); turnoff(&CCU1_CLK_M4_QEI_CFG); // turnoff(&CCU1_CLK_PERIPH_BUS_CFG); turnoff(&CCU1_CLK_PERIPH_CORE_CFG); turnoff(&CCU1_CLK_PERIPH_SGPIO_CFG); turnoff(&CCU1_CLK_USB0_CFG); turnoff(&CCU1_CLK_USB1_CFG); // turnoff(&CCU1_CLK_SPI_CFG); turnoff(&CCU1_CLK_VADC_CFG); turnoff(&CCU2_CLK_APLL_CFG); turnoff(&CCU2_CLK_APB2_USART3_CFG); turnoff(&CCU2_CLK_APB2_USART2_CFG); turnoff(&CCU2_CLK_APB0_UART1_CFG); turnoff(&CCU2_CLK_APB0_USART0_CFG); // turnoff(&CCU2_CLK_APB2_SSP1_CFG); turnoff(&CCU2_CLK_APB0_SSP0_CFG); turnoff(&CCU2_CLK_SDIO_CFG); // clkoff(& CGU_BASE_SAFE_CLK); clkoff(& CGU_BASE_USB0_CLK); clkoff(& CGU_BASE_PERIPH_CLK); clkoff(& CGU_BASE_USB1_CLK); // clkoff(& CGU_BASE_M4_CLK); clkoff(& CGU_BASE_SPIFI_CLK); clkoff(& CGU_BASE_SPI_CLK); clkoff(& CGU_BASE_PHY_RX_CLK); clkoff(& CGU_BASE_PHY_TX_CLK); clkoff(& CGU_BASE_APB1_CLK); clkoff(& CGU_BASE_APB3_CLK); clkoff(& CGU_BASE_LCD_CLK); clkoff(& CGU_BASE_VADC_CLK); clkoff(& CGU_BASE_SDIO_CLK); clkoff(& CGU_BASE_SSP0_CLK); clkoff(& CGU_BASE_SSP1_CLK); clkoff(& CGU_BASE_UART0_CLK); clkoff(& CGU_BASE_UART1_CLK); clkoff(& CGU_BASE_UART2_CLK); clkoff(& CGU_BASE_UART3_CLK); clkoff(& CGU_BASE_AUDIO_CLK); clkoff(& CGU_BASE_CGU_OUT0_CLK); clkoff(& CGU_BASE_CGU_OUT1_CLK); // return; break; }; }; };