Argon (25.02.2009 19:52, просмотров: 271) ответил yakuzaa на ну тогда фрагмент софтверной инициализации можно посмотреть?
Ну если это поможет...
void VS1033_Init(void)
{
SPI_Enable(0); //0 указывает на инициализацию медленного SPI
FIOMASK &= ~(BIT10 | BIT12 | BIT15 | BIT22);
FIODIR |= BIT22; //XDS
FIODIR |= BIT10; //xRESET
FIODIR |= BIT12; //xDCS/XDCS
FIODIR &= ~BIT15; //DREQ
VS1033_Reset();
VS_XDCS_HIGH(); //Устанавливаем и больше нигде не трогаем, т.к. будет SM_SDISHARED = 1
VS1033_XCS_HIGH();
General_Delay.Wait(2); //по докам после сброса д.б. 20000 клоков (для худшего случая, 12 Мгц это вроде 1.(6) мсек)
SCI_Write(SCI_VOL, 0xffff); //аналоговый шатдаун
//SCI_Write(SCI_VOL, 0x0000); //аналоговый антишатдаун (чтобы быстрее зарядились кондеры для минимальногов времени щелчка)
/*
if(VS1033_ClockF&0x7ff >= 4000) //говорит о том, что частота кварца > 24 МГц
SCI_MODE_Content = SM_CLK_RANGE | SM_SDINEW | SM_SDISHARE | SM_LAYER12;
else
SCI_MODE_Content = SM_SDINEW | SM_SDISHARE | SM_LAYER12;
*/
//SCI_MODE_Content = SM_SDINEW | SM_SDISHARE | SM_LAYER12; // это только для кварца <= 13 МГц
//SCI_Write(SCI_MODE, SCI_MODE_Content); // это только для кварца <= 13 МГц
SCI_Write(SCI_MODE, SM_SDINEW | SM_SDISHARE | SM_LAYER12); // это только для кварца <= 13 МГц
SCI_Write(SCI_CLOCKF, VS1033_ClockF);
General_Delay.Wait(2); //по докам после установки д.б. 11000 клоков
SCI_Write(SCI_BASS, 0x7a00);
SPI_Enable(VS1033_ClockF); //инициализация с требуемой частотой SCK
return;
}