Вопрос Декодирование MP3

Arthur

Active member
Привет.

Пришли по почте TDA1543 (Dual 16-bit DAC (economy version) (I2S input format), http://www.lampizator.eu/lampizator/LINKS AND DOWNLOADS/DATAMINING/tda 1543.pdf ) и усилки 6 Ваттные.

Изначально хотел поиграться с GitHub - bbx10/SFX-I2S-web-trigger: ESP8266 Sound F/X I2S web trigger и с GitHub - espressif/ESP8266_MP3_DECODER: A demo that should be run with ESP8266 Non-OS SDK .

С ними буду баловаться в ближайшее время.

На будущее (чтобы не особо скучно было :) ) составляю план, с чем Я буду ковыряться :)...

Потом наткнулся на Wiieva: esp8266 + stm32 в формфакторе Arduino , от него копнул сырцы, наткнулся на то, что там данные буфферами отдаются с еспшки на STM32F. Стало интересно про STM32 (говорил мне дядя Саша - займись стмками!, да Я не послушался тогда, сославшись на то, что контора медным тазом накрывалась :( ), увидел STM32-MP3NL/COD - Audio Engine MP3 Codec and Utilities - STMicroelectronics - STMicroelectronics и http://www.st.com/content/ccc/resou...df/jcr:content/translations/en.DM00024441.pdf .

Возникли вопросы:
1) Вышеуказанный MP3 кодек, как Я понимаю, платный и бесплатно его не скачать? Или всё-таки в чем-то типа SDK его можно раздобыть забесплатно?
2) Как паять LQFP в домашних условиях - только паяльной станцией, феном и паяльной пастой?
3) С каких ресурсов проще стартануть новичку в STM32? - понять, как прошить :), чем прошить, есть ли для STM32 IDE / SDK, как подёргать ножками...
4) Если кто подскажет дешёвые отладочные платы на STM32F - был бы благодарен. Я нашёл шибко дорогие платы - за 2300 - 5000 рублей ( Совет ПО Развитию STM32 STM32F429IGT6 STM32F429ARM Cortex M4 Различные Интерфейсы STM32F Серии Доска = Open429I C Стандарт купить на AliExpress ) - Я не готов столько денег выбрасывать на своё хобби, мне бы дешевее найти.

P.S. Так, что-то нашёл по dev tools - STM32F105RB - Mainstream Connectivity line, ARM Cortex-M3 MCU with 128 Kbytes Flash, 72 MHz CPU, CAN, USB 2.0 OTG - STMicroelectronics
 
Последнее редактирование:

pvvx

Активный участник сообщества
В конфигурации по умолчанию, этот код будет выводить 16-битный моно звук. Стерео аудио возможно, но еще не был реализован.
Моно до 48 кГц 16 бит + требуется микросхема внешней памяти.
Потом наткнулся на Wiieva: esp8266 + stm32 в формфакторе Arduino , от него копнул сырцы, наткнулся на то, что там данные буфферами отдаются с еспшки на STM32F.
....
Внешний буфер в STM32F1xx - это несколько килобайт. Больному ESP8266 не поможет.
На том-же коде давно реализован буфер более 16 килобайт на ESP8266. Но толку никакого - стерео нема. Из-за загрузки проца обслуживанием I2S и использования в данной версии RTOS, ESP8266 ничего не успевает и требует большого буфера - работает рывками... Если взять 320 кбит, как описано к тесту "bitrates up to 320KBit/s and sample rates of up to 48KHz - mono", то это ~32 килобайта в секунду. Значит, что входной буфер кончится через 0.5 секунды. Пинг на 500 ms...
Сделайте поиск по форуму MP3. Зачем новая тема?
 

Arthur

Active member
В конфигурации по умолчанию, этот код будет выводить 16-битный моно звук. Стерео аудио возможно, но еще не был реализован.
Моно до 48 кГц 16 бит + требуется микросхема внешней памяти.
Внешний буфер в STM32F1xx - это несколько килобайт. Больному ESP8266 не поможет.
На том-же коде давно реализован буфер более 16 килобайт на ESP8266. Но толку никакого - стерео нема. Из-за загрузки проца обслуживанием I2S и использования в данной версии RTOS, ESP8266 ничего не успевает и требует большого буфера - работает рывками... Если взять 320 кбит, как описано к тесту "bitrates up to 320KBit/s and sample rates of up to 48KHz - mono", то это ~32 килобайта в секунду. Значит, что входной буфер кончится через 0.5 секунды. Пинг на 500 ms...
Сделайте поиск по форуму MP3. Зачем новая тема?
Потому, что возникли вопросы именно по STM32, на котором Я хотел бы побаловаться с MP3 :)

1) Вышеуказанный MP3 кодек, как Я понимаю, платный и бесплатно его не скачать? Или всё-таки в чем-то типа SDK его можно раздобыть забесплатно?
2) Как паять LQFP в домашних условиях - только паяльной станцией, феном и паяльной пастой?
3) С каких ресурсов проще стартануть новичку в STM32? - понять, как прошить :), чем прошить, есть ли для STM32 IDE / SDK, как подёргать ножками...
4) Если кто подскажет дешёвые отладочные платы на STM32F - был бы благодарен. Я нашёл шибко дорогие платы - за 2300 - 5000 рублей ( Совет ПО Развитию STM32 STM32F429IGT6 STM32F429ARM Cortex M4 Различные Интерфейсы STM32F Серии Доска = Open429I C Стандарт купить на AliExpress ) - Я не готов столько денег выбрасывать на своё хобби, мне бы дешевее найти.
 

Юрий Ботов

Moderator
Команда форума
Отладочные платы: уточни потребности. А так из самых дешевых полно stm32f030, stm32c103f8t6. Как вариант можно рассмотреть клоны Arduino M0, там atmel arm. Дороже но привычнее.
Программируется вот такими свистками: Горячие Продажи ST LINK Stlink ST Link V2 Мини STM8 STM32 Симулятор Скачать Программист Программирование С Крышкой купить на AliExpress их полно на ali
Самая нормально собранная среда для младших stm32 ИМХО EmBlocks (EmBitz) STM32 + EmBlocks - мигаем светодиодами - Ravenium
Встает без проблем, сразу распознает программатор, настроен gdb так что можно отлаживать прямо в устройстве.
 

Юрий Ботов

Moderator
Команда форума
Память в stm статическая. Быстрая но дорогая, с ее увеличением чипы резко дорожают. Поскольку тебе скорость рам не так важна может лучше заняться например Rtl а то и вовсе на Orange Pi Zero перебраться? Дешевле выйдет.
 

Arthur

Active member
Память в stm статическая. Быстрая но дорогая, с ее увеличением чипы резко дорожают. Поскольку тебе скорость рам не так важна может лучше заняться например Rtl а то и вовсе на Orange Pi Zero перебраться? Дешевле выйдет.
Реально дешевле? Апельсинка стоит около 2500 р... А СТМка стоит около 3 баксов за чип... Отладочная плата для СТМки - дело исключительное, стоит почему-то дорого...
 

Arthur

Active member
Вот это гораздо более интересная платка! Я про СТМку.
А про Пи - хочу взять с 2 ГБ оперативы - 2016 Горячая Orange Pi Плюс 2E H3 Quad Core 1.6 ГГЦ 2 ГБ RAM 4 К развития с Открытым исходным кодом плата за raspberry pi 2 купить на AliExpress - что уж мелочиться...

Правда, под это деньги будут чутка позже, не до платок сейчас...
 

goodwin

Member
Декодер Helix (приложил). Подшаманенен мной для Keil под статические буферы. Требуется порядка 30 кб RAM . В сети можно найти оригинал для GCC. Прекрасно работает в LPC17xx при тактовой 72 МГц, поддерживает все битрейты, стерео. Использует примерно 60-70%. ресурсов контроллера. А вот младшие STM32 (пробовал на STM32F105) жидковаты для MP3. "Скорострельности" не хватает (битрейт 320, стерео) при 72 МГц тактовой даже при исполнении кода из RAM.
 

Вложения

Arthur

Active member
Декодер Helix (приложил). Требуется порядка 30 кб RAM для статических буферов. Прекрасно работает в LPC17xx при тактовой 72 МГц, поддерживает все битрейты, стерео. Использует примерно 60-70%. ресурсов контроллера. А вот младшие STM32 (пробовал на STM32F105) жидковаты для MP3. "Скорострельности" не хватает (битрейт 320, стерео) при 72 МГц тактовой даже при исполнении кода из RAM.
STM32F407VET6 тоже считается "младшей серией"?
 

pvvx

Активный участник сообщества
Нет :) это уже 4-й кортекс с аппаратным плавающим умножением и делением, его за это даже зовут dsp
Но у него мало SRAM. Для сетевых приложений MP3. Давно существуют замены - PIC32, младший из RTL871x и т.д. с 512 килобайт SRAM.

У STM32F407 настолько хилый SDIOH? У RTL стандартный SDIOH (т.е. не требует сильного участия CPU - описывается таблица в RAM для блоков DMA хоть на всю память на сектора до 4-х кило и дается команда контролеру), по умолчанию драйвер читает по 1 сектору, но даже при memcpy() (типа больший буфер :)) на больший блок выходит за 8 мегабайт в сек на картах. Теор-hard максимум не достижим для простых SD карт - они все значительно тормознее контроллера...
Выходит STM32F4 уже устарел совсем.
STM32H7 выглядит более подходящим со своим 1 Mег RAM для простого проигрывателя MP3 с интернет сети, но не имеет WiFi или BLE(BT)
Мегагерцы CPU для MP3 роли не играют. ~160MHz достаточно за глаза.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Вот как раз DMA у stm32 на редкость нормальный. Не надо путать проблему процессора и проблему программиста...
Вы о чем? О SDIOH? Тыркаться с командами и заряжать через HAL DMA?
Ну это не надо, если есть нормальный SDIOH контроллер. Он работает с ADMA. Это немного другой DMA в чипах ARM. Имеет доступ ко всем типам памяти и работает по таблицам - сам грузит куда и что залить.... При этом остальные штатные каналы DMA у ARM остаются. Это реализовано и в RTL8710.
Предположим, вам надо считать дцать секторов из SD. Создаете табличку (из 16 байт на сегмент с указателями в них на цепочку следующего описателя) и даете команды контролеру залить эти N секторов хоть в шахматном порядке в RAM или наоборот (если запись в SD). Потом проверяете состояние исполнения (лучше по прерыванию).
Какая тут проблема у программиста? :confused: В правильном выборе режимов работы SD на 1.2В и установке 50MHz клока? Может в количестве повторов команд чтения и записи для контроллера? Или в чем?
Я думаю, что проблема одна - в правильном выборе контроллера. Зачем брать более дорогой чип, если он не соответствует задаче и не годиться для неё. Для спортивного интереса можно попробовать спаять и на 74-ой логике :)
Не зря называется ADMA - Advanced DMA. У STM не нашел. Может в новых сериях?
 
Последнее редактирование:
Сверху Снизу