|
STM32F4Discovery + VS1011e, Как подружить? |
|
|
|
Sep 16 2013, 14:16
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Решил наваять аппаратный MP3 плеер  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 дёргаю, в наушниках щёлкает  . Спасибо.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Sep 16 2013, 16:07
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Программный я отсюда - http://electronix.ru/forum/index.php?showt...t&p=1182077 взял. Правда, пока переносил себе, где-то исказил работу с ЦАПом. MP3 вроде декодируется, а из наушников ни звука. A VS1011e - потому, что для STM32F4 есть много других интересных дел  Как при этом CPU load мерять - не знаю  .
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Sep 16 2013, 18:19
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Спасибо. Резюки завтра припаяю, там ещё косяк нашёл - 15 ногу в землю черелз 100к запаял, а надо в лоб в Vcc. DREQ после сброса проверяю, ещё и осциллографом смотрел. SPI проверю, хрен знает, что у меня на AHB1 творится  . Всё, что сейчас знаю, что делитель SPI - максимальный - 256.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Sep 19 2013, 11:58
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Ноги перепаял: 2 - 100k - GND 3 - 100k - GND 15 TEST1 - +Vcc 16 TEST2 - 100k - GND 17 TEST3 - 100k - GND изменений не заметил  . Прозвоню ещё раз всё, если не изменится, хрен знает, может новый vs покупать придётся ... может он за 6 лет пребывания в ящике сдох от горя ...
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Sep 19 2013, 15:12
|
Местный
  
Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309

|
А кварц у 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 даташита.
Сообщение отредактировал controller_m30 - Sep 19 2013, 15:17
|
|
|
|
|
Sep 19 2013, 17:44
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Спасибо. Кварц у меня 24 МГц На одной из двух ног кварца осц показывает что-то с частотой 15МГц. Но мой осц по доке 8 МГц понимает, может из-за этого и несопадение. Железка чихнула  Поменял вот на это: SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; Decode Time считался не ноль. Расшифровать его пока не пытался. Статус после аппаратного сброса равен 20h = 0010 0000 - биты 6..4 = 010 - VS1002/VS1011e - то бишь нормально. Звука пока никакого  Сейчас буду тестовую синусоиду курить.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Sep 19 2013, 18:50
|
Местный
  
Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309

|
Цитата(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 байт. (если ничего не напутал  )
Сообщение отредактировал controller_m30 - Sep 19 2013, 19:10
|
|
|
|
|
Sep 21 2013, 17:31
|
Знающий
   
Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594

|
Цитата(hd44780 @ Sep 21 2013, 13:34)  controller_m30, спасибо большое. Тестовая синусоида пошла. Приступаю непосредственно к MP3. ЗЫ. Оказалось, я накосячил с XDCS. Он инверсный, также как обычный CS. А я с какой-то радости решил, что он прямой  .... Зачем вообще это, F4 прекрасно программно декодирует mp3, и если 12 битных цапов достаточно, то совсем все просто, и декодеров в открытом доступе полно
|
|
|
|
|
Sep 22 2013, 07:46
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
kan35, я знаю. У меня есть рабочий проект с Helix, проигрывающий через аудиочип платы Discovery. Но. Из-за не очень удачной схемы платы дискавери он по ногам конфликтует с FSMC, на которой у меня висит дисплей. Даже простое подключение дисплея (разъём) напрочь вырубает этот аудиочип, даже если ничего не делать с FSMC и дисплеем. Проверял. Имитировать FSMC ногодрыгом ой как не хочется.
Можно играть через ЦАП контроллера, но туда тоже надо допаивать усилители, управление громкостью и пр. вещи. А VS у меня уже лет 7 в ящике валяется. Покупал ещё для AVR, но руки так и не дошли, да и уровни надо было согласовывать, Т.к. авры в те годы на 3в со скрипом работали... Прекрасный повод был с нею разобраться.
MP3 играет!
Добавлю управление громкостью и прочим и выложу. Мож кому понадобится... И вывод WAV сделаю.
Теперь ещё вопросец - можно ли из VS1011e вытаскивать декодированные данные? Или надо декодер покруче, например, VS1053? Хочу FFT прикрутить. Пока заведу выход на АЦП ...
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Sep 22 2013, 18:18
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(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), сканировала кнопки и занималась экраном
|
|
|
|
|
Oct 2 2013, 10:04
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Громкость управляется, всё ок. Всплыл ещё один вопрос. Как проиграть обычный 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. Не нашёл ни в одном. Можете сказать, где именно оно лежит или кинуть сюда его?
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|