hd44780 0 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба Впаял кварц 24.578. Функцию писка немного переписал: 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 проигрываются буквально как на магнитофоне с завышенной скоростью движения ленты. Другие форматы не пробовал. функция проигрывания файла самая примитивная, без наворотов: 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. начинаю думать, что этот модуль - вообще брак полный :crying: . vs10xx.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 20 июля, 2017 Опубликовано 20 июля, 2017 · Жалоба вызываю в цикле. Пищит нормально в оба уха, no problem, как говорят. Частоту на выходе, правда, не мерял. Текущий драйвер прилагаю. В чём ещё могут быть траблы? PS. начинаю думать, что этот модуль - вообще брак полный :crying: . брак может быть запросто, начиная от экономии на комплектующих до отбраковки на тестах запаянных плат.. если заморочиться, то просто сдуть чип, разработать и запаять свою плату.. у вас очевидный прогресс - плата раньше "му" не говорила, теперь уже пищит синусом.. измерить надо обязательно - так вы поймете правильность частоты для эталонного синуса по буратинному мп3 - настройки проверили, вот тут всё правильно: В CLOCK_F пишу 0xE430. и нет ли случайно записи в этот регистр? playSpeed makes it possible to fast forward songs. Decoding of the bitstream is performed, but only each playSpeed frames are played. For example by writing 4 to playSpeed will play the song four times as fast as normal, if you are able to feed the data with that speed. Write 0 or 1 to return to normal speed. SCI DECODE TIME will also count faster. All current codecs support the playSpeed configuration. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 21 июля, 2017 Опубликовано 21 июля, 2017 · Жалоба и нет ли случайно записи в этот регистр? playSpeed makes it possible to fast forward songs. Decoding of the bitstream is performed, but only each playSpeed frames are played. For example by writing 4 to playSpeed will play the song four times as fast as normal, if you are able to feed the data with that speed. Write 0 or 1 to return to normal speed. SCI DECODE TIME will also count faster. All current codecs support the playSpeed configuration. не, я таким тюнингом вообще никогда не занимался. Но пойду раскурю эту тему, может там мусор какой валяется ... У китайцев схема несколько упрощена в сравнении с тем, что нарисовано в ДШ :( . ЗЫ купил модуль, чтобы не делать самому плату, а тут такая хрень. Чип у меня и свой уже 3 года в коробке где-то валяется .. у вас очевидный прогресс - плата раньше "му" не говорила, теперь уже пищит синусом.. измерить надо обязательно - так вы поймете правильность частоты для эталонного синуса Угу. Поленились ребяты эти GPIO0 и GPIO1 вместе спаять ... Потому и молчала. Там ещё куча ног в воздухе у них висит - GPIO2...GPIO7. Там I2S для внешнего ЦАПа и ещё один SPI какой-то что-ли. Синус померю осциллом, отпишусь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 21 июля, 2017 Опубликовано 21 июля, 2017 · Жалоба Синус померю осциллом, отпишусь. на всякий случай - в моем предыдущем сообщение было не утверждение а вопрос вот по этой настройке в исходниках: * F = 24576/2 = 12288кГц = 12288000 Гц * SC_FREQ = (12288000-8000000)/4000 = 1072 = 0x0430 = 100 0011 0000 - 12 бит * * CLOCK_F = 0xE000 | 0x0000 | 0x0430 = 0xE430 * * SC_MULT = 5, SC_ADD = 7 * F = 12.288 * (5+2) = 86,016 MHz */ // vs1011_writeCommand ( VS1011_CLOCKF, 0xE430 | 0x1800 ); // 0xFC30 vs1011_writeCommand ( VS1011_CLOCKF, 0xE430 ); явно расчет делался на 12.288МГц, а т.к. сейчас у вас кварц 24.576МГц, то частота для фирвари будет в 2 раза выше, возможно ей это не нравится отсюда и фальцет на мп3.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 21 июля, 2017 Опубликовано 21 июля, 2017 (изменено) · Жалоба Сорри, я не понял, что это был вопрос. Да, расчёты все на 12.288, т.к. кварц 24.576, то везде задаётся vs1011_writeCommand ( VS1011_MODE, SM_SDINEW | SM_CLK_RANGE ); // 0x8800 SM_CLK_RANGE - 15 бит в 1 - кварц 24..26. А в расчётах магического числа для CLOCK_F в доке вообще ни звука об этом. Я для интереса пытался рассчитывать для 24.576 - результат не влез в отведённые 10 бит. Изменено 21 июля, 2017 пользователем IgorKossak бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 21 июля, 2017 Опубликовано 21 июля, 2017 · Жалоба Сорри, я не понял, что это был вопрос. Да, расчёты все на 12.288, т.к. кварц 24.576, то везде задаётся vs1011_writeCommand ( VS1011_MODE, SM_SDINEW | SM_CLK_RANGE ); // 0x8800 SM_CLK_RANGE - 15 бит в 1 - кварц 24..26. А в расчётах магического числа для CLOCK_F в доке вообще ни звука об этом. Я для интереса пытался рассчитывать для 24.576 - результат не влез в отведённые 10 бит. да, в документации явно не хватает четких определений.. все же попробуйте загрузить вместо 0xe430 допустим 0x4430 и послушать (на всякий случай битрейт пониже сделайте) и хорошей проверкой будет генерация эталонного файла с синусом известной частоты, прогоном через кодек и измерением осциллом.. я так ловил искажения при подключение аудиокодека к АРМу, кстати с кварцем на 24.576 пело явно выше, вылечил переключением на тактирование от АРМа Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 21 июля, 2017 Опубликовано 21 июля, 2017 · Жалоба все же попробуйте загрузить вместо 0xe430 допустим 0x4430 и послушать (на всякий случай битрейт пониже сделайте) и хорошей проверкой будет генерация эталонного файла с синусом известной частоты, прогоном через кодек и измерением осциллом.. Да, сделаю, спасибо. Есть файл - звучит 440 Hz. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 21 июля, 2017 Опубликовано 21 июля, 2017 · Жалоба Значит так. 1. Проверил осциллом/частотомером - синус свистит идеально. Частотомер показал ровно столько, сколько я заказал. 2. Перекодировал тот файлик со звучение 440Hz в MP3 44.1kHz 32 KBps - частотомер показал ну так 880Hz в среднем, немного прыгает +-50..100Hz. Более высокие битрейты чуть позже проверю. Чё с этим делать? Крутить CLOCK_F? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 21 июля, 2017 Опубликовано 21 июля, 2017 (изменено) · Жалоба Чё с этим делать? Крутить CLOCK_F? покрутите, но осторожно - в доке пишут что превышать частоту не стоит.. посмотрел в той же доке пример: Example: If SCI CLOCKF is 0x9BE8, SC MULT = 4, SC ADD = 3 and SC FREQ = 0x3E8 = 1000. This means that XTALI = 1000×4000+8000000 = 12 MHz. The clock multiplier is set to 3.5×XTALI = 42 MHz, and the maximum allowed multiplier that the firmware may automatically choose to use is (3.5 + 2.0)×XTALI = 66 MHz у вас кварц 24.576 и взводится бит включения делителя, тогда XTALI=12288000 отсюда SC_FREQ=0x430, что похоже на ваше значение, а вот с умножителем я бы прописал х3 (читать не ХэЗэ, а умножить на три), тогда с частотой 12.288 вы попадаете четко в середину вилки частот. SC_ADD=1.0х , т.е. 0x800 итоговое значение 0x6000+0x800+0x430=0x6c30 update и вообще, для таких экспериментов проще дописать консоль в процессор и иметь отладку и вывод инфы прямо на экран Изменено 22 июля, 2017 пользователем Jury093 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 22 июля, 2017 Опубликовано 22 июля, 2017 · Жалоба Дисплей и отладка есть, Слава Богу. В общем после правок множителей всё завелось. WAV и FLAC немного подвывали, решилось увеличением частоты SPI. Получившиеся настройки таковы: SC_MULT = x4.5 SC_ADD = x2.0 Соответственно, CLOCKF = 0xC000 | 0x1800 | 0x0430. Единственное, что не пошло, это WMA. Тишина полная, хотя файл проверенный. Ну да фиг с ним, я ими не пользуюсь, сделал пару штук исключительно для проверки этих чипов. Jury093, спасибо Вам огромное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 22 июля, 2017 Опубликовано 22 июля, 2017 · Жалоба В общем после правок множителей всё завелось. WAV и FLAC немного подвывали, решилось увеличением частоты SPI. Jury093, спасибо Вам огромное. поздравляю! ЗЫ мне особо не за что - вы и сами нашли верные решения.. насчет "молчания" wma - хоть ваши и проверенные, но видимо надо убедится, что формат подходит в оговоренные в доке стандарты 8.6 Supported WMA Formats Windows Media Audio codec versions 2, 7, 8, and 9 are supported. All WMA profiles (L1, L2, and L3) are supported. Previously streams were separated into Classes 1, 2a, 2b, and 3. The decoder has passed Microsoft’s conformance testing program. Windows Media Audio Professional is a different codec and is not supported там еще расписаны в таблице допустимые комбинации ну и для очистки совести посмотреть в структуру заголовка для wma 10.11.2 WMA Parameter Address Usage curPacketSize 0x1e2a/2b The size of the packet being processed packetSize 0x1e2c/2d The packet size in ASF header The ASF header packet size is available in packetSize. With this information and a packet start offset from jumpPoints you can parse the packet headers and skip packets in ASF files. WMA decoder can also increase the internal clock automatically when it detects that a file can not be decoded correctly with the current clock. The maximum allowed clock is configured with the SCI_CLOCKF register. как вариант - еще пошаманить со скоростью spi и регистром SCI_CLOCKF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 22 июля, 2017 Опубликовано 22 июля, 2017 · Жалоба Да, как-нибудь гляну ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться