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;
    }
}
Exemple #2
0
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;
}