Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F4Discovery + VS1011e
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
hd44780
Решил наваять аппаратный MP3 плеер sm.gif

VS1011k в корпусе SOIC-28 (паять легче), его обвяз взят отсюда - http://fun4diy.com/CCS_MP3.htm ибо в доке http://www.vlsi.fi/datasheets/vs1011.pdf обломились дать схему подключения для корпуса SOIC-28.
Единственное отличие - я припаял MISO, дабы иметь двунаправленный канал с микросхемой.
И кварц у меня 24МГц.

В итоге подключение такое:
1 - DREQ - PA2
13 - MOSI - PC12 (SPI3)
12 - CLK - PC10 (SPI3)
4 - BSYNC - PA4
11 - nCS - PA3
14 - MISO - PC11 (SPI3)
26 - nRESET - PA5

Ноги 2 и 3 у меня висят в воздухе, я не въеду, куда их цеплять. Иногда их вешают на 12, 13 соответственно, иногда - нет.
MP3 пихать в него я не пытался, пока читал статус и decode time. Оба нули, хотя по доке при включении статус д.б. 0x2C.

Библиотеку для работы с ним брал отсюда - http://www.rlocman.ru/shem/schematics.html?di=33468 (мега128) за неимением ничего другого.

Кто может - посмотрите, пожалуйста, где я ошибся?
Может сама микросхема не стартует? Но когда я nReset дёргаю, в наушниках щёлкает sm.gif .

Спасибо.
DASM
Не смотрели кстати, программно сколько ЦПУ откушает? Мне кажется что немного.
hd44780
Программный я отсюда - http://electronix.ru/forum/index.php?showt...t&p=1182077 взял. Правда, пока переносил себе, где-то исказил работу с ЦАПом. MP3 вроде декодируется, а из наушников ни звука.

A VS1011e - потому, что для STM32F4 есть много других интересных дел sm.gif
Как при этом CPU load мерять - не знаю sad.gif .
controller_m30
Ноги 2,3 нужно посадить на землю, через 100к резисторы.
После перевода сигнала Reset# =1 выждать некоторое время - дождаться сигнала на DREQ# который сигнализирует о завершении инициализации. И только потом отсылать команды. Или подольше сделать паузу перед первой командой.
Также все дополнительные подтягивающие резисторы приведённые в схеме (на ножках TESTx) - нужно установить.
Ещё частота SPI CLK должна быть по даташиту (стр 9): для чтения не более CLKI/6, для записи не более CLKI/4.
hd44780
Спасибо.

Резюки завтра припаяю, там ещё косяк нашёл - 15 ногу в землю черелз 100к запаял, а надо в лоб в Vcc.
DREQ после сброса проверяю, ещё и осциллографом смотрел.
SPI проверю, хрен знает, что у меня на AHB1 творится sm.gif . Всё, что сейчас знаю, что делитель SPI - максимальный - 256.
hd44780
Ноги перепаял:
2 - 100k - GND
3 - 100k - GND
15 TEST1 - +Vcc
16 TEST2 - 100k - GND
17 TEST3 - 100k - GND

изменений не заметил sad.gif .
Прозвоню ещё раз всё, если не изменится, хрен знает, может новый vs покупать придётся ... может он за 6 лет пребывания в ящике сдох от горя ...
controller_m30
А кварц у VS1011 запускается?
У меня на STM32F2 (совместим с STM32F4) работающему с частотой по дефаулту (кажется 16 мгц), регистр контроля SPI содержал такое значение:
SPI_CR1 = 0x034C
В вашем случае в SPI_CR1 должно быть 0x037C

Нашёл свою инициализацию VS1011E. Она на асме для IAR, потому переведу словами:
1. RES#=1
2. Пауза. Примерно 0,5 сек.
3. Запись в регистр 0 числа 0x0004 - soft.reset
4. Пауза. (такая же как и после хардварного ресета) 0,5 сек
5. Чтение регистра 0 и проверка на обнуление бита 2 - установленного прошлой командой (повторять этот шаг по кругу, пока бит не обнулится).
6. Запись в рег. 0 числа 0x0800 - включение режима "VS1002 native SPI modes"
7. Запись в рег. 3 числа 0x2EE0 - частота кварца/2 кГц; 24.000/2=12.000=2EE0 (HEX)
8. Чтение регистра 0 и проверка считанного слова на значение 0x0800 записанного на шаге [6]. Если нет, то ошибка (я не помню, нужно это или нет, но зачем-то делал проверку).

После этого можно писать данные музыки пакетами по 32 байта, по SPI с использованием сигнала XDCS, и контролируя перед посылкой пакета уровень DRQ.
Также и менять на ходу значения регистров с использованием сигнала XCS.

Ещё в VS1011 есть режим тестового вывода синусоиды описанный на стр. 36,37 даташита.
hd44780
Спасибо.
Кварц у меня 24 МГц
На одной из двух ног кварца осц показывает что-то с частотой 15МГц. Но мой осц по доке 8 МГц понимает, может из-за этого и несопадение.


Железка чихнула sm.gif
Поменял вот на это:
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

Decode Time считался не ноль. Расшифровать его пока не пытался.
Статус после аппаратного сброса равен 20h = 0010 0000 - биты 6..4 = 010 - VS1002/VS1011e - то бишь нормально.
Звука пока никакого sad.gif
Сейчас буду тестовую синусоиду курить.
controller_m30
Цитата(hd44780 @ Sep 19 2013, 20:44) *
Статус после аппаратного сброса равен 20h = 0010 0000 - биты 6..4 = 010 - VS1002/VS1011e - то бишь нормально.
В примечании к этому регистру сказано, что после сброса он равен 2Ch, прошивка сразу меняет его на 28h, и через 100ms уже меняет на 20h
"Firmware changes the value of this register immediately to 0x28, and in less than 100 ms to 0x20"
Так что с этим всё нормально.

Синусоиду делать было так:
1. После сброса установить бит TEST (бит 5) в регистре 0
2. Записать 8 байт используя XDCS вместо XCS. Байты можно брать из примера: 0x53, 0xEF, 0x6E, 0x7E, 0, 0, 0, 0.
Вместо 0x7E годятся и другие значения.

PS. Вспомнил ещё. Чтоб использовать сигнал XDCS, нужно чтоб бит 11 в регистре 0 был тоже установлен. Т.е. в регистр 0 нужно записать число 0x0820, а потом уже записывать 8 байт. (если ничего не напутал cool.gif )
hd44780
controller_m30, спасибо большое. Тестовая синусоида пошла. Приступаю непосредственно к MP3.

ЗЫ. Оказалось, я накосячил с XDCS. Он инверсный, также как обычный CS. А я с какой-то радости решил, что он прямой wacko.gif ....
kan35
Цитата(hd44780 @ Sep 21 2013, 13:34) *
controller_m30, спасибо большое. Тестовая синусоида пошла. Приступаю непосредственно к MP3.

ЗЫ. Оказалось, я накосячил с XDCS. Он инверсный, также как обычный CS. А я с какой-то радости решил, что он прямой wacko.gif ....

Зачем вообще это, F4 прекрасно программно декодирует mp3, и если 12 битных цапов достаточно, то совсем все просто, и декодеров в открытом доступе полно
hd44780
kan35, я знаю. У меня есть рабочий проект с Helix, проигрывающий через аудиочип платы Discovery.
Но. Из-за не очень удачной схемы платы дискавери он по ногам конфликтует с FSMC, на которой у меня висит дисплей. Даже простое подключение дисплея (разъём) напрочь вырубает этот аудиочип, даже если ничего не делать с FSMC и дисплеем. Проверял.
Имитировать FSMC ногодрыгом ой как не хочется.

Можно играть через ЦАП контроллера, но туда тоже надо допаивать усилители, управление громкостью и пр. вещи. А VS у меня уже лет 7 в ящике валяется. Покупал ещё для AVR, но руки так и не дошли, да и уровни надо было согласовывать, Т.к. авры в те годы на 3в со скрипом работали...
Прекрасный повод был с нею разобраться.

MP3 играет!

Добавлю управление громкостью и прочим и выложу. Мож кому понадобится...
И вывод WAV сделаю.

Теперь ещё вопросец - можно ли из VS1011e вытаскивать декодированные данные? Или надо декодер покруче, например, VS1053? Хочу FFT прикрутить. Пока заведу выход на АЦП ...
kan35
Людям давал послушать STM32, и ни один не сказал, что играет 12 битный цап, всем казалось что это обычный консьюмерский плеер.
Кстати, пример на VS1002 уже давно среди примеров в пакете IAR присутствует.
Jury093
Цитата(hd44780 @ Sep 22 2013, 11:46) *
Теперь ещё вопросец - можно ли из VS1011e вытаскивать декодированные данные? Или надо декодер покруче, например, VS1053? Хочу FFT прикрутить. Пока заведу выход на АЦП ...

не знаю, как в 1011, но в 1001 стоял DSP с памятью, куда можно было забрасывать свои куски коды на выполнение..
если в 1011 ядро схожее, то в теории можно доцарапаться до места, куда складываются декодированные данные в RAM перед отправкой в ЦАП, но тут будет очевидная засада - через какой интерфейс их выгружать из чипа?

/offtop_on - я в свое время мастырил два варианта плейера на vs1001 и Atmega
- m128-8l - мега считывала файл с sd и сливала в декодер, попутно сканируя кнопки и делая вывод на экран от сотового
- m8515-16 - мега считывала файл с винчестера/cdrom и сливала в декодер, вторая мега8 рулила первой, а также дешифровала команды от ПДУ(Sony), сканировала кнопки и занималась экраном
hd44780
Громкость управляется, всё ок.

Всплыл ещё один вопрос. Как проиграть обычный WAV PCM файл?

Из чтения доки понял, что можно просто пулять в него WAV файл.

Цитата
9.6 Feeding PCM data
VS1011e can be used as a PCM decoder by sending to it a WAV file header. If the length sent
in the WAV file is 0 or 0xFFFFFFF, VS1011e will stay in PCM mode indefinitely. 8-bit linear and
16-bit linear audio is supported in mono or stereo.


когда файл закончится, включить бит SM_OUTOFWAV.

Пытался это делать - ни хрена не играет, в наушниках только какой-то треск слышен.
Когда пуляю MP3 файл - всё идеально. Проект один и тот же, инициализация одна и та же.

Или надо как-то переключить его в "WAV mode"?

WAV - PCM, 44100Hz, stereo.

Спасибо.

Цитата(kan35 @ Sep 22 2013, 20:52) *
Кстати, пример на VS1002 уже давно среди примеров в пакете IAR присутствует.

Стоят 2 IAR-а - ARM и AVR.
Не нашёл ни в одном. Можете сказать, где именно оно лежит или кинуть сюда его?
hd44780
Вот тут - http://www.vsdsp-forum.com/phpbb/viewtopic...?f=10&t=261 народ тоже на проблемы с WAV жалуется, внятных решений я там не заметил.
hd44780
Где-то на ихнем сайте надыбал документ (прилагаю, т.к. ссылку не сохранил, а найти с ходу не удалось), где говорится, что чипы VS1003e и VS1011e имеет проблемы с парсингом WAV файла и дают лекарство.
Пока ещё не попробовал это лекарство.

Кто-то сталкивался с этим?

К вопросу вытягивания из микрухи декодированных данных - на страничке http://www.vlsi.fi/en/support/software/vs1...plications.html нашёл приблуду, называется "DAC Mode Application". Только чего оно делает пока не понял. Вдумчиво ещё не читал. Привлекло её описание:
- Provides low-delay 16-bit mono or stereo PCM sample output.
- SDI FIFO and audio FIFO fill states can be monitored.
kan35
Цитата(hd44780 @ Oct 2 2013, 14:04) *
Стоят 2 IAR-а - ARM и AVR.
Не нашёл ни в одном. Можете сказать, где именно оно лежит или кинуть сюда его?

C:\Program Files\IAR Systems\Embedded Workbench 6.0\arm\examples\ST\STM32F10x\IAR-STM32-SK\MP3_player\MP3_Player.eww
hd44780
Спасибо. Нашёл. Смотрю.
hd44780
Ничего интересного там нету.
MP3 у меня и так играет нормально, а wav тот пример похоже не умеет.
alexandermas
Вопрос ребром: А зачем их вообще дружить. У этого камня с лихвой хватает мощи декодировать mp3. У меня например правда на lpcc4357 мп3 идет с загрузом камня 15-20% при этом еще оссь крутиться и сетевой стек.
hd44780
Я знаю sm.gif . У меня есть работающие примеры программного декодирования MP3.
Может и слабый аргумент, но на дискавери аудиокодек по ногам пересекается с FSMC. В результате FSMC постоянно сбрасывает его и оно не пашет ...
Да и VS1003 умеет ещё и WMA играть ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.