void system_sf_reset(UartProtocolPacket *pPacket) { if ((pPacket->Length == sizeof(SOFTWARE_UPDATE_ASK)) \ && (0 == memcmp(&pPacket->DataAndCRC[0], &SOFTWARE_UPDATE_ASK[0], pPacket->Length))) { asm("nop;"); //u32 bfrom_SysControl(u32 dActionFlags, ADI_SYSCTRL_VALUES *pSysCtrlSettings, void *reserved); //bfrom_SysControl(SYSCTRL_SYSRESET, NULL, NULL); /* either */ bfrom_SysControl(SYSCTRL_SOFTRESET, NULL, NULL); /* or */ return; } }
void initDSP() { // Clock // 158.0544MHz int ssel = 8; int csel = 0; ADI_SYSCTRL_VALUES pll; pll.uwPllCtl = SET_MSEL(14); pll.uwPllDiv = ssel + (csel << 4); pll.uwVrCtl = 0x7000; bfrom_SysControl(SYSCTRL_WRITE | SYSCTRL_PLLCTL | SYSCTRL_PLLDIV, &pll, NULL); while ((*pPLL_STAT & PLL_LOCKED) == 0); // GPIO G *pPORTG_FER = 0; *pPORTGIO_DIR = CODEC_RESET | CODEC_CS; *pPORTGIO_SET = CODEC_CS; *pPORTGIO_CLEAR = CODEC_RESET; // GPIO F *pPORTF_FER = 0; *pPORTFIO_DIR = TEST_PIN; *pPORTFIO_SET = TEST_PIN; // I2C *pTWI_CLKDIV = CLKLOW(I2C_CLK_LOHI) | CLKHI(I2C_CLK_LOHI); ssync(); *pTWI_CONTROL = TWI_ENA | 10; // I2S *pPORTG_FER |= PG1 | PG5 | PG6 | PG7; // SPI *pPORTF_FER |= PF15 | PF14 | PF13; *pSPI0_FLG = 0b00000000000010; *pSPI0_BAUD = SPI_BAUD; ssync(); *pSPI0_CTL = 0b0101000000001101; }