Впаял кварц 24.578. Функцию писка немного переписал:
CODE
void vs1011_sinewave_beep ( )
{
// n =
const uint8_t sine_on [ 8 ] = { 0x53, 0xEF, 0x6E, 0x04, 0x00, 0x00, 0x00, 0x00 };
const uint8_t sine_off [ 8 ] = { 0x45, 0x78, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00 };
uint8_t i;
VS1011_RESET_RES ( ); // nRESET = 0
delay_ms ( 1 );
VS1011_SET_RES ( ); // nRESET = 1
delay_ms ( 500 );
// Ждать, пока DREQ == 0
while ( VS1011_DREQ != SET );
vs1011_writeCommand ( VS1011_MODE, SM_SDINEW | SM_TESTS | SM_CLK_RANGE );
for ( i = 0; i < 8; i ++ )
vs1011_writeData ( sine_on [ i ] );
delay_ms ( 250 );
for ( i = 0; i < 8; i ++ )
vs1011_writeData ( sine_off [ i ] );
delay_ms ( 250 );
} // vs1011_sinewave_beep
вызываю в цикле. Пищит нормально в оба уха, no problem, как говорят. Частоту на выходе, правда, не мерял. Текущий драйвер прилагаю.
А вот с проигрыванием беда - mp3 проигрываются буквально как на магнитофоне с завышенной скоростью движения ленты. Другие форматы не пробовал.
функция проигрывания файла самая примитивная, без наворотов:
CODE
uint8_t readBuf [ READBUF_SIZE ];
// Проигрываемый файл
FIL file;
// Проиграть файл
bool Play_file ( char *fName )
{
FRESULT res;
UINT nRead;
// открыть файл
res = f_open ( &file, fName, FA_OPEN_EXISTING | FA_READ );
if ( res != FR_OK )
return false;
// цикл проигрывания
while ( 1 )
{
// Ждать запроса данных от VS
// DREQ == 1 - посылать
// DREQ == 0 - ждать
while ( vs1011_isDataReq ( ) == false );
res = f_read ( &file, readBuf, 32, &nRead );
if ( res != FR_OK || nRead != 32 )
{
break;
} // if
vs1011_send32 ( readBuf );
} // while
// закрыть файл
f_close ( &file );
// послать 2к нулей для очистки внутренних буферов VS
for ( nRead = 0; nRead < 2048; nRead ++ )
vs1011_writeData ( 0 );
// Сброс VS
vs1011_reset ( );
return true;
} // Play_file
Размер буфера 2 кила (там был кеш с опережающим чтением, я его пока выкинул), но то пофиг, ни на что не влияют.
В чём ещё могут быть траблы?
PS.
начинаю думать, что этот модуль - вообще брак полный

.
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда