elchupanibrei (elchupanibrei) wrote,
elchupanibrei
elchupanibrei

Category:

Продолжаем ковырять VS1053 Audio Codec

Потихоньку пилю вебморду к VS1053 и ловлю баги в драйвере. Пока все получается и даже играет не хуже KaRadio. После прикручивания сервера пришлось распрощаться с 320Kbps - иногда подлагивает. Есть пару идей как ускорить заполнение кольцевого буфера, но времени катастрофический не хватает.


страница Codec Settings


страница Codec Info

UDP: Поднял мощность передатчика с +10dBm/10mW до +13dBm/20mW и 320Kbps заиграло лучше. Видно из-за загруженного эфира терялись пакеты.

UDP: Just for fun разогнал VS1053 с 55MHz до 61.44MHz и оно заработало. Частота SPI шины на передачу аудио потока увеличилась с 10MHz до 15MHz. Можно дальше говонокодить и пока забить на оптимизацию.

UDP: Добавил графики кольцевого буфера в ESP8266 против VS1053. Типичная картина приема 320kbps mp3 при хорошем WiFi - у VS1053 небольшие провалы до 990 байт. Потом что-то случается на стороне ESP8266 и оба буфера опустошаются меньше чем за секунду. Разгон ESP8266 с 80MHz до 160MHz проблему не решают. Имхо затык на стороне web станции, но это не точно. Может буфер мал? Я и так отгрыз у ESP8266 все что можно (ESP8266 плющит если heap меньше 12KB). С 250kbps mp3 такого пока не наблюдается. Если отключить сон радио модема, который в Arduino включен по умолчанию, ситуация улучшается. Провалы в 990 байт случаются реже. Ничего не понимаю.


VS1053 FIFO vs ESP8266 ring buffer

UDP: Кажется понял почему ESP8266 буфер резко опустошался. Все машинное время было занято на передачу в VS1053 и второму SDK/WIFI стеку (который у Arduino крутится в фоне) не хватало время заполнить IwIP TCP MSS/TCP WND буфера.

UDP: Пообщался с умными людьми. Подсказали использовать IwIP v1.4. С ним действительно стабильнее на 320kbps и больше свободного heap. Перенес весь код драйвера VS1053 отвечающий за наполнение буфера в IRAM. В место digitalRead() и digitalWrite() стал писать в регистры ESP8266 на прямую. Можно пробовать прикрутить экран. Пока на 320kbps получилось вот так:


Tags: #arduino, #esp8266, arduino, diy, esp8266
Subscribe

  • Контроллер фена на STM32

    Собрал фен на китайском контроллере с STM32 на борту. Корпус выдержан в стиле паяла на STM32. Контроллер брал за $35. Ручка $12. Разъем GX16-8…

  • Зарядное устройство ISDT Q6 Nano

    Поменял свой iMax-B6 на ISDT Q6 Nano. Помещается на ладонь руки. Способен отдавать до 8A/200W. ISDT Q6 Nano Нормально заряжает Ni-Ca и Ni-Mh…

  • Зажим на автомобильный насос

    Поменял на автомобильном насосе зажим. Офигительная штука. Прощай втыкание с 100500 попытки. Всегда с первого раза и без утечек. Брал за $1.8.…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments