реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> mp3 acc wma декодеры под cortex-m3
Dron_Gus
сообщение Nov 14 2009, 14:19
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Начал мучить железяку на LPC1768. Захотелось мне сделать плеер. Чтобы с периферией разобраться да и производительность оценить. Столкнулся с тем, что все основные декодеры того же mp3 имеют достаточно объемные вставки на асме. Все что нашел имеют порты пока что только под ARM7 (ARMv4) в режиме ARM. Естественно оно не собирается под ARMv7. Кто-нить знает, какой открытый проект уже портанулл свое произведение на Cortex?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Doka
сообщение Nov 14 2009, 18:24
Сообщение #2


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



а какая производительность декодирования у вас получается без портирования asm в thumb2, используя функциональные си-заглушки?


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 14 2009, 19:48
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Написать бы эти заглушки. Я не настолько силен в алгоритмах и/или армовском ассемблере, чтобы их написать.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Doka
сообщение Nov 14 2009, 20:21
Сообщение #4


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



я так полагаю что под "основные декодеры того же mp3" понимается как - минимум libMAD - для РС-реализации разве в нём нету этих си-функций?


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 14 2009, 20:44
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Спасибо. smile.gif Что-то я не подумал.
Пока нашел real-network'вский декодер, у него всего пара инлайн-функций. Они нормально компилятся и под cortex.

А вообще я нашел следующие декодеры: libmad, mpg123, ffmpeg, RealNetworks'овский.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Doka
сообщение Nov 15 2009, 10:55
Сообщение #6


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



так вроде у RealNetworkово тоже всё складненько:

Код
* polyphase.c - final stage of subband transform (polyphase synthesis filter)
* Look in the appropriate subdirectories for optimized asm implementations
*   (e.g. arm/asmpoly.s)

там же тоже можно собрать консольное Win32 приложение изпод ВижалСтудио

В любом случае, результат мне тоже интересен rolleyes.gif


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 15 2009, 11:13
Сообщение #7


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Doka @ Nov 15 2009, 15:55) *
В любом случае, результат мне тоже интересен rolleyes.gif


+1. Ждём отчёта smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sadat
сообщение Nov 20 2009, 19:10
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 117
Регистрация: 6-07-05
Из: Белгород
Пользователь №: 6 575



Есть на stm32 проектик, может, поможет....
http://www.stm32circle.com/projects/project.php?id=82
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 20 2009, 20:28
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Спасибо!

Не хотят они меня регистрировать. А иначе файл не скачать. Он у Вас есть. На мыло не вышлете? dron_gusсобакамэилру


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 20 2009, 21:25
Сообщение #10


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Dron_Gus @ Nov 21 2009, 01:28) *
файл не скачать


Нажмите на ссылку правой мышой и выберите "сохранить как" :-)


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 20 2009, 21:27
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



спасибо!

Однако. Давно я такой защиты не встречал. smile.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Nov 20 2009, 22:50
Сообщение #12


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(sadat @ Nov 20 2009, 23:10) *
Есть на stm32 проектик, может, поможет....
http://www.stm32circle.com/projects/project.php?id=82

Написано, что есть проблемы с битрейтом 320 kbps.
Чёрт, STMка не справляется.
Может, у LPC получится без "заиканий"?
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 20 2009, 23:57
Сообщение #13


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(AHTOXA @ Nov 20 2009, 23:25) *
Нажмите на ссылку правой мышой и выберите "сохранить как" :-)

Чёй-то оно не того. сохраняет download.htm если так сделать. браузер - IE-7.
или уже прикрыли лавочку..
Может кто-нить зальет на ftp?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 21 2009, 00:56
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(sonycman @ Nov 21 2009, 01:50) *
Написано, что есть проблемы с битрейтом 320 kbps.
Чёрт, STMка не справляется.
Может, у LPC получится без "заиканий"?

Странно это. SAM7 справлялся с 320 кбит. А тут и попугаев больше и частота выше. Мне все никак не победить CrossStudio и не проверить толком.

Цитата(defunct @ Nov 21 2009, 02:57) *
Может кто-нить зальет на ftp?

Залил /upload/MCs/ARM/stm32/mp3/


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Nov 21 2009, 09:45
Сообщение #15


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Nov 21 2009, 04:56) *
Странно это. SAM7 справлялся с 320 кбит. А тут и попугаев больше и частота выше. Мне все никак не победить CrossStudio и не проверить толком.

Значит, оптимизация кода плохая.

Вообще удивляет стремление людей во всякую мало мальскую поделку всовывать OS.
Чтобы потом возиться с её проблемами... sad.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 23 2009, 04:24
Сообщение #16


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Dron_Gus @ Nov 21 2009, 02:56) *
Залил

спасибо beer.gif
Go to the top of the page
 
+Quote Post
VslavX
сообщение Nov 24 2009, 18:54
Сообщение #17


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(sonycman @ Nov 21 2009, 11:45) *
Значит, оптимизация кода плохая.

Гм, похоже, что Cortex-M3 не имеет нормального аппаратного умножения - 32x32 возвращает только младший 32-битный огрызок. В MP3 самая ресурсоемкая часть - это выходное преобразование, а там умножений - "мама не горюй", и сейчас специально посмотрел - MAD старшими битами результата пользуется, также "в работе" умножение с накоплением. Поэтому добиться скорости сравнимой с ARM7 будет сложновато, ИМХО. Или я ошибаюсь и нормальное умножение есть и я его просто не нашел?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 24 2009, 20:20
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Судя по этому http://infocenter.arm.com/help/topic/com.a...QRC0001_UAL.pdf есть.
И по этому http://infocenter.arm.com/help/index.jsp?t...e/Chdbhfja.html .
Код
Multiply with 64-bit result    32    UMULL, SMULL, UMLAL, and SMLAL.
unsigned accumulate long UMLAL{S} RdLo, RdHi, Rm, Rs N Z C* V* RdHi,RdLo := unsigned(RdHi,RdLo + Rm * Rs)

Но это Thumb-2. CrossWork 1.* такой не умеет генерить. sad.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Nov 25 2009, 05:57
Сообщение #19


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(Dron_Gus @ Nov 24 2009, 22:20) *
Код
Multiply with 64-bit result    32    UMULL, SMULL, UMLAL, and SMLAL.
unsigned accumulate long UMLAL{S} RdLo, RdHi, Rm, Rs N Z C* V* RdHi,RdLo := unsigned(RdHi,RdLo + Rm * Rs)

Но это Thumb-2. CrossWork 1.* такой не умеет генерить. sad.gif

О, спасибо, а то я чего-то сразу в описании ARMv7 этого не нашел. Помню, что в обычном thumb-е нормального умножения не было, и расстроился что и на Cortex будет грустно, но как оказалось - все OK.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Nov 25 2009, 08:07
Сообщение #20


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



А вообще какой смысл делать декодер силами контроллера?
Того же кортекса, к примеру?

Всё равно все ставят внешний чип - ЦАП?
В чём экономия по сравнению с внешним декодером?

А если воспользоваться родными ЦАПами кортекса?

Но всё равно было бы интересно запустить рабочий софтовый декодер. Правда, только если он ничем не будет уступать тому же VS1011 в плане поддержки битрейтов и качества звука...

ЗЫ: эх, вот если бы контроллеры класса кортексов имели на борту хоть какой нибудь DSP smile.gif
Go to the top of the page
 
+Quote Post
blackfin
сообщение Nov 25 2009, 08:17
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(sonycman @ Nov 25 2009, 11:07) *
ЗЫ: эх, вот если бы контроллеры класса кортексов имели на борту хоть какой нибудь DSP smile.gif

"Какой-нибудь DSP": bf527c.. biggrin.gif
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 25 2009, 08:28
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(sonycman @ Nov 25 2009, 11:07) *
А вообще какой смысл делать декодер силами контроллера?
Того же кортекса, к примеру?

Всё равно все ставят внешний чип - ЦАП?
В чём экономия по сравнению с внешним декодером?

А если воспользоваться родными ЦАПами кортекса?

Но всё равно было бы интересно запустить рабочий софтовый декодер. Правда, только если он ничем не будет уступать тому же VS1011 в плане поддержки битрейтов и качества звука...

Много вопросов. smile.gif

Свою цель я обозначил в начале топика. В сравнении с готовыми декодерами - большая гибкость и апгрейдо-пригодность. Я, например, хочу добавить flac. ЦАПы у этого Cortex'а, боюсь, отдыхают в сравнении с тем же tlv320aic23


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Nov 25 2009, 08:33
Сообщение #23


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(blackfin @ Nov 25 2009, 12:17) *
"Какой-нибудь DSP": bf527c.. biggrin.gif

Ага, в 289 mini-BGA. Нафиг, нафиг biggrin.gif

Цитата(Dron_Gus @ Nov 25 2009, 12:28) *
Свою цель я обозначил в начале топика.

Ну и как, есть какие нибудь успехи в портировании софта?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 25 2009, 10:03
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Угу. Декодеры AAC и MP3 cобираются без проблем. ФС работает. Но вот при декодировании и того и того вылет в HardFault. Грешу на инициализацию дополнительных блоков памяти.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Nov 25 2009, 10:52
Сообщение #25


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Nov 25 2009, 14:03) *
Угу. Декодеры AAC и MP3 cобираются без проблем. ФС работает. Но вот при декодировании и того и того вылет в HardFault. Грешу на инициализацию дополнительных блоков памяти.

А декодер взяли от проекта на основе STM32?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 25 2009, 11:10
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



И да и нет. smile.gif Декодер там RealNetworks'овский. Его еще немцы в своем плеере на sam7 использовали. Обертку я взял от немцев - удобная она.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Nov 25 2009, 11:24
Сообщение #27


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Nov 25 2009, 15:10) *
И да и нет. smile.gif Декодер там RealNetworks'овский. Его еще немцы в своем плеере на sam7 использовали. Обертку я взял от немцев - удобная она.

Ну а вставки в Thumb2 присутствуют?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 25 2009, 16:11
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Присутствуют, но не компилятся, кажется. Проект дома. Не помню уже. Кажется я заменил большуший исходник на асме аналогом на Си. smile.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 25 2009, 19:54
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Посмотрел. Компилятся. Надо бы проверить как они компилятся.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Nov 25 2009, 20:00
Сообщение #30


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



То есть нормальных вставок в родном THUMB2 не получилось найти, или руки пока не дошли собрать?

Тоже интересно, что получится в результате.

А ось в проекте не присутствует случайно, как у немцев?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Nov 26 2009, 06:20
Сообщение #31


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(sonycman @ Nov 25 2009, 23:00) *
То есть нормальных вставок в родном THUMB2 не получилось найти, или руки пока не дошли собрать?

Тоже интересно, что получится в результате.

А ось в проекте не присутствует случайно, как у немцев?

Вставки заменены сишными аналогами. Но самая ресурсоемкая процедура как раз в thimb2 - asmpoly_thumb2.s, взята из проекта от stm32. Вот ее надо проверить. Т.к. CS 1.7 вроде как не умеет thumb-2 и что там в итоге выходит - х.з., может он arm код генерирует.

Я пока не могу уделять этому занятию много времени, поэтому не знаю, когда будут результаты. Всем желающим могу отдать проект в его текущем состоянии (нерабочем smile.gif ).

Про ось запутался, про какой проект вы говорите. У stm'шников какая-то CircleOS. У немцев с sam7 (http://embdev.net/articles/ARM_MP3/AAC_Player) оси нет. Я вначале прикрутил freertos, потом открутил нафиг. smile.gif

З.Ы. а для CrossStudio 2.* клизмы еще нет?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
zksystem
сообщение Nov 27 2009, 08:04
Сообщение #32


embedder
***

Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911



Цитата(Dron_Gus @ Nov 25 2009, 11:28) *
Свою цель я обозначил в начале топика. В сравнении с готовыми декодерами - большая гибкость и апгрейдо-пригодность. Я, например, хочу добавить flac. ЦАПы у этого Cortex'а, боюсь, отдыхают в сравнении с тем же tlv320aic23


Посмотрите на VS1053B:

Decodes multiple formats
Ogg Vorbis
MP3 = MPEG 1 & 2 audio layer III (CBR+VBR+ABR)
MP1 & MP2 = MPEG 1 & 2 audio layers I & II optional
MPEG4 / 2 AAC-LC(+PNS), HE-AAC v2 (Level 3) (SBR + PS)
WMA4.0/4.1/7/8/9 all profiles (5-384 kbps)
FLAC lossless audio with software plugin (upto 24 bits, 48 kHz)
WAV (PCM + IMA ADPCM)
General MIDI 1 / SP-MIDI format 0

Encodes three different formats from mic/line in mono or stereo
Ogg Vorbis with software plugin
IMA ADPCM
16-bit PCM


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 23 2009, 14:31
Сообщение #33


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Пока сделал декодер на чипе VLSI, но потом хочется собрать софтовый декодер.

Какие ЦАПы посоветуете использовать, кроме tlv320aic23?
Требования к качеству звука не шибко высокие, тем более, раз речь идёт об mp3.

Нет ли в природе буферизованных ЦАПов или кодеков, которые бы сами генерировали нужную частоту сэмплирования?

И что-то я не особо впечатлён возможностями генератора клока для I2S в STM32 (кроме новых чипов с отдельным PLL).
Тупой целочисленный делитель, необходимо подгонять кварц для более менее точного Fs.
Не сравнить с дробным делителем LPC17хх smile.gif
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 23 2009, 19:55
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



По второму вопросу tlv320aic23 умеет быть мастером. Думаю, Вы в курсе smile.gif Самый популярный вариант. Все остальные, которые знаю, клок генерировать не умеют.

Про I2C у STM'ов, а Вы их SPI пробовали? Тоже то еще. Видно захотели сильно универсальный модуль сделать да не вышло SPI master/SPI slave/I2S/и еще что-то однопроводное.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 23 2009, 20:43
Сообщение #35


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Dec 23 2009, 23:55) *
По второму вопросу tlv320aic23 умеет быть мастером. Думаю, Вы в курсе smile.gif Самый популярный вариант. Все остальные, которые знаю, клок генерировать не умеют.

Про I2C у STM'ов, а Вы их SPI пробовали? Тоже то еще. Видно захотели сильно универсальный модуль сделать да не вышло SPI master/SPI slave/I2S/и еще что-то однопроводное.

Думаю поработать с tlv320dac23, он без ненужного мне АЦП, но мастером быть тоже умеет (есть у TI и более простые ЦАПы с таким режимом).

Но что-то особой пользы от мастера я не увидел. Внешний-то клок - MCLK - всё равно надо подавать снаружи, и подавать разный для разных частот сэмплирования (например, для Fs = 44.1 кГц- 11.289 МГц, а для Fs = 48 кГц - уже 12.288 МГц).
Имхо, проще будет сразу все частоты формировать контроллером... sad.gif

К SPI у меня претензий нет. Ну, кроме такого же "тупого" делителя (2^x) для SCLK. Но это и у конкурентов так.

А вот I2C у STM отвратительный. Громоздкий, да ещё и еррата кусается...
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 24 2009, 08:11
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(sonycman @ Dec 23 2009, 23:43) *
Но что-то особой пользы от мастера я не увидел. Внешний-то клок - MCLK - всё равно надо подавать снаружи, и подавать разный для разных частот сэмплирования (например, для Fs = 44.1 кГц- 11.289 МГц, а для Fs = 48 кГц - уже 12.288 МГц).
Имхо, проще будет сразу все частоты формировать контроллером... sad.gif

К SPI у меня претензий нет. Ну, кроме такого же "тупого" делителя (2^x) для SCLK. Но это и у конкурентов так.

А вот I2C у STM отвратительный. Громоздкий, да ещё и еррата кусается...


А погрешности при 12 МГц кварце (usb mode) не устраивают?

SPI мне не понравился тем, что не умеет дергать CS (SS) после каждого байта. Да и после окончания передачи блока не дергает. Короче, как на sam7 приходится дергать руками.

На I2C я вообще забил. Проще ногами дергать, чем адекватно управлять их модулем.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
adnega
сообщение Dec 24 2009, 12:27
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Хм..
По I2C подключил дисплей TIC-154, на SPI SD/MMC-карта (правда, CS ручками дергаю), делал и развертку VGA-сигнала (640x480) через SPI на stm32f103t4 - из-за недостатка памяти только текстовый режим (а ля, просмотр отладочных сообщение через RS232/TTL).
Во всех реализациях проблем не имел - хотелось бы узнать какие есть проблемы (страшно ведь...)?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 24 2009, 13:24
Сообщение #38


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(adnega @ Dec 24 2009, 15:27) *
Хм..
По I2C подключил дисплей TIC-154, на SPI SD/MMC-карта (правда, CS ручками дергаю), делал и развертку VGA-сигнала (640x480) через SPI на stm32f103t4 - из-за недостатка памяти только текстовый режим (а ля, просмотр отладочных сообщение через RS232/TTL).
Во всех реализациях проблем не имел - хотелось бы узнать какие есть проблемы (страшно ведь...)?


Читайте еррату и апноты. По I2C нельзя послать 1 байт. Достатоно криво реализуется обработка исключительных ситуаций. У меня устройство с возможностью горячего подключения/отключения, так что для меня было критично.
По СПИ, кроме перечисленного, только 8/16 бит. ИМХО неудобно иногда.

З.Ы. раз у Вас все работает, переживать не стоит. smile.gif
З.З.Ы. мне все же привычней реализации этих модулей от Atmel & NXP.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 25 2009, 05:28
Сообщение #39


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Dec 24 2009, 17:24) *
По I2C нельзя послать 1 байт.

Можно всё, по крайней мере на medium density девайсах.
Просто для 100% надёжности необходима реализация I2C через прерывания или DMA.

Цитата(Dron_Gus @ Nov 26 2009, 10:20) *
Я пока не могу уделять этому занятию много времени, поэтому не знаю, когда будут результаты. Всем желающим могу отдать проект в его текущем состоянии (нерабочем smile.gif ).

Ну а как прогресс с софтовым декодером? Есть результаты? wink.gif
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Dec 25 2009, 06:10
Сообщение #40


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(sonycman @ Dec 25 2009, 08:28) *
Ну а как прогресс с софтовым декодером? Есть результаты? wink.gif


Нет пока. Меня в командировку на севера на НГ хотят отправить, не до того. smile.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sergvks
сообщение Dec 25 2009, 19:52
Сообщение #41


Местный
***

Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117



Цитата(Dron_Gus @ Nov 25 2009, 14:10) *
Декодер там RealNetworks'овский. Его еще немцы в своем плеере на sam7 использовали.


Собирал этот декодер в кейле, для нормального декодирования на stm32 больших битрейтов приходилось разгонять проц до 96МГц ибо у STM32 дюже флеш тормознутый.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 25 2009, 22:20
Сообщение #42


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(sergvks @ Dec 25 2009, 23:52) *
Собирал этот декодер в кейле, для нормального декодирования на stm32 больших битрейтов приходилось разгонять проц до 96МГц ибо у STM32 дюже флеш тормознутый.

Больших битрейтов - это каких?
А в декодере вставки на асме есть?
Наиболее юзабельные функции располагать в RAM пробовали?

Просто, после сообщений о том, что даже на тормозном SAM7S 320 kbps не лагает - слышать о проблемах на STM странновато...
Go to the top of the page
 
+Quote Post
sergvks
сообщение Dec 26 2009, 06:59
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117



После кое-какой правки исходников я пришёл к тому, что находится во вложении.
Прикрепленные файлы
Прикрепленный файл  mp3.zip ( 72.52 килобайт ) Кол-во скачиваний: 198
 
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 26 2009, 12:30
Сообщение #44


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Спасибо!
Разбираться буду, когда начну след. проект, уже на LPC1768 smile.gif
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jan 1 2010, 23:16
Сообщение #45


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Добил. Декодирование mp3 @ 256 на lpc1768 @ 100 MHz - 74..78%. CrossStudio 1.7, без оптимизации, thumb. Данные грузятся с sd-карты результат выпихивается через dma на tlv320.

Оптимизация O3 - mp3 @ 320 на lpc1768 @ 100 MHz - 28..30%. Либо я что-то не правильно мерю. Но underun'ов точно нет. Приведу проект в порядок - выложу.

Всех с наступившим Новым Годом. smile.gif Пусть у всех в Новом Году будет хватать времени заниматься хобби.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 2 2010, 09:35
Сообщение #46


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Jan 2 2010, 03:16) *
Добил. Декодирование mp3 @ 256 на lpc1768 @ 100 MHz - 74..78%. CrossStudio 1.7, без оптимизации, thumb. Данные грузятся с sd-карты результат выпихивается через dma на tlv320.

Оптимизация O3 - mp3 @ 320 на lpc1768 @ 100 MHz - 28..30%. Либо я что-то не правильно мерю. Но underun'ов точно нет. Приведу проект в порядок - выложу.

Интересные результаты smile.gif
Имхо - без оптимизации не стоит компилировать вообще.

Не подскажете, какую методику можно использовать для замера занятости процессора?
Вот у вас - 70%... 30%... как это точно измерить?

Цитата
Пусть у всех в Новом Году будет хватать времени заниматься хобби.

И ещё бы не переводились деньги на любимое занятие.
Иногда это бывает весьма затратно biggrin.gif
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jan 2 2010, 09:43
Сообщение #47


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Цитата(sonycman @ Jan 2 2010, 12:35) *
Не подскажете, какую методику можно использовать для замера занятости процессора?
Вот у вас - 70%... 30%... как это точно измерить?


Я использовал Repetitive Interrupt Timer. Перед началом воспроизведения сбрасываю и запускаю. Перед каждым вызовом декодирования запоминаю текущее значение таймера, после выхода из декодирования считаю количество затраченных тактов. Всё это суммирую и в конце делю на текущее значение таймера. Да, собсно, что рассказывать:
Код
void decode_start(void)
{
   d_start = RIT->RICOUNTER;
}

void decode_end(void)
{
   d_tot += RIT->RICOUNTER - d_start;
}

void play_start(void)
{
   //reset tottal decode time counter
   d_tot = 0;
   //reset
   RIT->RICOUNTER = 0;
   //start
   RIT->RICTRL = (1 << 0) |  //clear int flag
                 (0 << 1) |  //don't clear timer on equal
                 (1 << 2) |  //debug mode - halted on cpu halt
                 (1 << 3) |  //enable
                 (0);
}

void play_stop(void)
{
   unsigned int tot;
   //
   tot = RIT->RICOUNTER;
   //
   RIT->RICTRL &= ~(1 << 3); //stop counter
   //
   printf("Total ticks  = %d\r\n", tot);
   printf("Decode ticks = %d\r\n", d_tot);
   printf("Average load = %d %%\r\n", ((long long)d_tot * 100) / (long long)tot);
}

и
Код
    decode_start();
     err = MP3Decode(hMP3Decoder, &read_ptr, &bytes_left, dac_buffer[writeable_buffer], 0);
     decode_end();


Единственное, таймер лопатит на CCLK, поэтому болье 42 сек им считать нельзя. smile.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 2 2010, 10:31
Сообщение #48


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Понятно, спасибо.

Лишь бы такая схема не считала "холостые" заходы в функцию, когда тратятся всего десятки тактов, но так как вызовы идут подряд из главного цикла, то суммирование этих тактов даст весомую погрешность, имхо...

А чем вы прошиваете/дебажите 1768?

Тоже вот заказал отладку с ним, и вот думаю, не поменять ли устаревший МТ-Линк v5 на что-либо получше.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jan 2 2010, 10:53
Сообщение #49


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Все эти измерения примерные. Но ложных входов быть не должно, т.к. данные готовятся до того и функция вызывается только когда есть место в выходном буфере.

Я дебажу МТ-Линком. Вполне устраивает. На работе с stm32 работаю u-link'ом для кортексов. Никаких преимуществ не заметил. Разве что второй умеет работать по 2 проводам, но пока дефицита ног не ощущаю. smile.gif Если отладка от отечественного производителя - то там точно полный j-tag разведен.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Jan 5 2010, 00:00
Сообщение #50


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Выкладываю текущее состояние моей поделки.

Возникла непреодолимая проблема. Два кодека (mp3 и aac) не хотят компилироваться вместе. Ругаются на кучу redefine'ов. Может кто умный глянет? В текущем варианте включен mp3, чтобы добавить AAC надо глобально задефайнить ADD_AAC и включить в сборку ветку real-aac.

Заранее спасибо. smile.gif

Разобрался. Объектники от разных декодеров пересекались именами.
Прикрепленные файлы
Прикрепленный файл  Player_.rar ( 911.33 килобайт ) Кол-во скачиваний: 399
 


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jul 26 2010, 07:09
Сообщение #51


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290



Цитата(sergvks @ Dec 26 2009, 08:59) *
После кое-какой правки исходников я пришёл к тому, что находится во вложении.


Попробовал впихнуть данный декодер (RealNetworks) в свой STM32f103RB (RAM 20 KB), просто так не лезет, попробовал указать #define MAX_NCHAN 1 (для моей задачи подходит моно), всё влезло, но при декоде 6 фрейма вылетает в HardFault_Handler из PolyphaseMono(). Заметил, что как-то странно изменяется sbi->vindex. Вопрос, собственно, в следующем: Как заставить работать данный декодер с моно МП3?
Go to the top of the page
 
+Quote Post
goodwin
сообщение Jul 26 2010, 19:13
Сообщение #52


Местный
***

Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267



Цитата(OVladimir @ Jul 26 2010, 11:09) *
Попробовал впихнуть данный декодер (RealNetworks) в свой STM32f103RB (RAM 20 KB), просто так не лезет, попробовал указать #define MAX_NCHAN 1 (для моей задачи подходит моно), всё влезло, но при декоде 6 фрейма вылетает в HardFault_Handler из PolyphaseMono(). Заметил, что как-то странно изменяется sbi->vindex. Вопрос, собственно, в следующем: Как заставить работать данный декодер с моно МП3?


Возникает резонный вопрос: А на кой ляд для МОНО MP3? Это явно не проигрыватель для прослушивания аудио. А для "рупора" хватит всяческих ADPCM.
Да и лицензионные ограничения не заботят...
Go to the top of the page
 
+Quote Post
zksystem
сообщение Jul 27 2010, 04:48
Сообщение #53


embedder
***

Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911



Цитата(goodwin @ Jul 26 2010, 23:13) *
Возникает резонный вопрос: А на кой ляд для МОНО MP3? Это явно не проигрыватель для прослушивания аудио. А для "рупора" хватит всяческих ADPCM.
Да и лицензионные ограничения не заботят...

Может человеку необходимо качество звука высокое и большое сжатие файлов.


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jul 27 2010, 05:05
Сообщение #54


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290



Цитата(goodwin @ Jul 26 2010, 21:13) *
Возникает резонный вопрос: А на кой ляд для МОНО MP3? Это явно не проигрыватель для прослушивания аудио. А для "рупора" хватит всяческих ADPCM.
Да и лицензионные ограничения не заботят...

Действительно, задача состоит в том, чтобы проигрывать голосовые сообщения, которые может записывать сам пользователь при помощи компъютера и нехитрых действий. Так же ограничена память для хранения голосовой информации (несколько мегабит флэш, никаких СД). Опыта в аудио кодеках у меня нет, поэтому, сразу подумал про МП3.
Может, посоветуете конкретный ADPCM декодер (заодно и кодер, хотя, это было бы лучше вынести в отдельную тему)?
И всё-таки хотелось бы прочитать ответ о моно МП3.
Go to the top of the page
 
+Quote Post
zksystem
сообщение Jul 27 2010, 06:04
Сообщение #55


embedder
***

Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911



Цитата(OVladimir @ Jul 27 2010, 09:05) *
Действительно, задача состоит в том, чтобы проигрывать голосовые сообщения, которые может записывать сам пользователь при помощи компъютера и нехитрых действий. Так же ограничена память для хранения голосовой информации (несколько мегабит флэш, никаких СД). Опыта в аудио кодеках у меня нет, поэтому, сразу подумал про МП3.
Может, посоветуете конкретный ADPCM декодер (заодно и кодер, хотя, это было бы лучше вынести в отдельную тему)?
И всё-таки хотелось бы прочитать ответ о моно МП3.

Если Вы собираетесь изготавливать коммерческое устройство, то за mp3 придется платить лицензию. Лично я, в своих подобных устройствах, а именно, транспортных автоинформаторах использовал внешний декодер mp3, такой как VS1001K фирмы vlsi. Флеш память сейчас очень подешевела, поэтому, имхо проще сделать ADPCM или какой-нибудь SPEEX или FLAC


--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
Go to the top of the page
 
+Quote Post
OVladimir
сообщение Jul 27 2010, 07:29
Сообщение #56


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-01-07
Из: Вильнюс
Пользователь №: 24 290



Цитата(zksystem @ Jul 27 2010, 08:04) *
Если Вы собираетесь изготавливать коммерческое устройство, то за mp3 придется платить лицензию. Лично я, в своих подобных устройствах, а именно, транспортных автоинформаторах использовал внешний декодер mp3, такой как VS1001K фирмы vlsi. Флеш память сейчас очень подешевела, поэтому, имхо проще сделать ADPCM или какой-нибудь SPEEX или FLAC


С лицензией разберёмся, VS1001K ставить не хочется (дополнительные деньги и место на плате, которая, к слову сказать, уже спроектирована и собрана), хочется оставить всё как есть и впихнуть МП3 в 20 КБ посредством настройки декодера. Покачто мысль дошла только до того, чтобы уменьшить максимальное число каналов с 2 до 1, тогда всё помещается, но не работает. Отсюда и вопрос, стоит ли возиться с уменьшением требуемого кол-ва РАМ и вообще, реально ли это сделать и каким образом? В конце концов есть вариант поставить процессор из той же линейки с большим РАМ, но этого делать тоже не хочется пока, бо STM32F103RB и STM32F103R8 уже закуплены.
Go to the top of the page
 
+Quote Post
Axel
сообщение Jul 28 2010, 08:43
Сообщение #57


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(OVladimir @ Jul 27 2010, 09:05) *
...Может, посоветуете конкретный ADPCM декодер...


Их навалом в Инете... Я один такой прикрутил к проекту на LPC23, выход - через АЦП. Вроде ничего звучит. Памяти требует - 4kB на секунду звука, RAMa - совсем немного.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Sep 5 2010, 11:55
Сообщение #58


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Jan 5 2010, 04:00) *
Выкладываю текущее состояние моей поделки.

Глубоко пока в исходниках не копался, вот думаю - какие буферы в памяти для воспроизведения MP3 нужны?

Надумал вот что.
Нужны два сэмпловых буфера по 1152 сэмпла на канал - один для распаковки текущего фрейма декодером, второй - для вывода из него звука по DMA на ЦАП.

Какой ширины сэмплы формирует декодер в Вашем проекте?

Контроллер у меня будет LPC1768, его I2S не может работать с 24 битными словами.
Тут или 16 бит - но тогда в одном 32 битном слове должны быть сразу оба канала.
Или 32 бита на сэмпл для каждого канала.

Ну и один буфер для подгрузки текущего файла. Размер нужен такой, чтобы в него (желательно) помещался один фрейм целиком.
Для 320 килобит это приблизительно 1100 байт.

Так ли это?

Ну и пока что не смотрел, сколько ОЗУ хочет непосредственно декодер уже кроме упомянутых выше буферов?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 5 2010, 14:19
Сообщение #59


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Декодеры выделяют себе память динамически. Мне хватило 28 Кб и для aac и для mp3 (естественно поочередно. кажется, mp3 потребляет больше). Буферы для ЦАПа - 2 буфера по 2400 по 16 бит. Это для стерео. Буфер для чтения файла - 4 КБ.

З.Ы. контроллер, кстати, тот же. smile.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Sep 5 2010, 15:10
Сообщение #60


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Sep 5 2010, 18:19) *
З.Ы. контроллер, кстати, тот же. smile.gif

Спасибо!

То есть декодер "выдаёт" сэмплы в 16 битах?
И I2S у Вас работает в 16 битном режиме, на входе 32 битные слова - 16 бит левый канал в старшем полуслове, и 16 бит правый в младшем?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 5 2010, 16:18
Сообщение #61


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Да. 16 бит на канал. I2S и DMA пересылают тоже 16-битные слова.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Sep 5 2010, 17:11
Сообщение #62


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Sep 5 2010, 20:18) *
Да. 16 бит на канал. I2S и DMA пересылают тоже 16-битные слова.

Дело в том, что, насколько я понял, FIFO I2S у LPC17xx 32 битное, и не может работать с 16 битными данными напрямую.

То есть, чтобы выводить на ЦАП 16+16 бит стерео сигнал, нужно в FIFO записывать 32 битные слова с предварительно перемешанными каналами.

Или не так?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 5 2010, 17:29
Сообщение #63


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



FIFO 8 32-разрядных слов. Но не обязательно писать все 32 бита, ИМХО. Выставляете размер данных 16 бит, стерео режим и все. При отправке каждого сэмпла из FIFO будет вычитываться одно значение.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Sep 5 2010, 18:10
Сообщение #64


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Sep 5 2010, 21:29) *
FIFO 8 32-разрядных слов. Но не обязательно писать все 32 бита, ИМХО. Выставляете размер данных 16 бит, стерео режим и все. При отправке каждого сэмпла из FIFO будет вычитываться одно значение.

Хм, вот содержимое ФИФО для разных режимов:
Прикрепленное изображение

То есть, если задать размер данных в 16 бит, то, как видно, одна 32 битная ячейка ФИФО будет содержать два 16 битных сэмпла.
Но никак не один сэмпл.

Что-то я Вас немного не пойму smile.gif

Вот меня и смущает такая организация ФИФО - как бы не пришлось делать лишнюю работу по склеиванию ручками двух сэмплов (16 бит) в один (32 бита) sad.gif

ЗЫ: в принципе, в случае, если выход декодера в памяти выглядит как чередующиеся 16 битные полуслова, проблемы нет - DMA будет копировать сразу 32 битное слово (два сэмпла) в каждую ячейку ФИФО.

Единственное, могут попутаться местами каналы, но DAC23 имеет специальную для этого фичу, кажется smile.gif
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 5 2010, 19:40
Сообщение #65


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Хм. Вы мне глаза открыли. smile.gif Значит у меня в проекте ошибка. Интересно, как же оно работало. Надо будет разобраться.

А декодер действительно выдает "смешанный" поток.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Sep 8 2010, 20:52
Сообщение #66


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Смонтировал на отладочной платке ЦАП TLV320DAC23, рядом работает ЖКИ дисплей по 8 битной параллельной шине.
ЦАП висит на I2C вместе с AT24C01B на проводах длиной около 20 см.

Так вот, если с EEPROM проблем никаких нет, то DAC23 меня уже запарил ошибками на I2C - то NACK сразу после выдачи адреса даёт, то NACK после записи одного байта, а то вообще шину подвесит.

Происходит это только если одновременно во время передачи по I2C в ЦАП идёт запись в ЖКИ.
Причём, если отвести провода I2C от проводов ЖКИ - ошибок становится много меньше...

Что за проблемы у этого цапа? Какой-то корявый у него интерфейс, слишком уж чувствительный к наводкам\пульсациям.

По осциллографу ничего критичного не видно, епромка пашет как часы, а эта какашка запарила уже sad.gif

У кого есть опыт с DAC23\AIC23 - ничего подобного не наблюдали?
Go to the top of the page
 
+Quote Post
sasamy
сообщение Sep 8 2010, 21:22
Сообщение #67


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(sonycman @ Sep 8 2010, 23:52) *
По осциллографу ничего критичного не видно, епромка пашет как часы, а эта какашка запарила уже sad.gif

У кого есть опыт с DAC23\AIC23 - ничего подобного не наблюдали?


В linux работает отлично smile.gif
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 9 2010, 05:41
Сообщение #68


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Попробуйте уменьшить сопротивления подтяжек и поставьте их ближе к кодеку. Либо вообще на SPI перевесьте.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Sep 9 2010, 09:57
Сообщение #69


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Sep 9 2010, 09:41) *
Попробуйте уменьшить сопротивления подтяжек и поставьте их ближе к кодеку. Либо вообще на SPI перевесьте.

Поставил резисторы подтяжек вплотную к ЦАПу - стало ещё хуже, кол-во ошибок увеличилось.

Сейчас стоят резисторы 3к3, ставил и 1к5 - без результата.

Вероятно, всё дело в разводке, не разделены земли ЖКИ и ЦАПа.
Go to the top of the page
 
+Quote Post
skripach
сообщение Sep 9 2010, 11:25
Сообщение #70


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
Сейчас стоят резисторы 3к3

Почему 3к3?


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Sep 9 2010, 12:27
Сообщение #71


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(skripach @ Sep 9 2010, 15:25) *
Почему 3к3?

А сколько нужно?
Номиналы пуллапов зависят от суммарной ёмкости линий и частоты.
Частота интерфейса 400 кГц, чем меньше подтягивающие резисторы - тем круче фронты - тем выше достигаемая скорость передачи.

Плюс, по спецификации на ЦАП rise time не должен превышать 300 наносекунд.
По осциллографу видно, что это время значительно больше.

Поэтому, имхо, чем меньше пуллапы - тем лучше.

Подключение к ЦАПу отдельной земли не дало никакого результата.
Вроде решил проблему с DAC23 установкой на пины I2C микросхемы керамики по 150 пикофарад.
Дурдом, конечно, но вероятно причиной сбоев являлись наведённые с параллельной шины ЖКИ помехи, которые давали ложные срабатывания логики интерфейса внутри ЦАПа.

Причём епромка оказалась к этим наводкам совершенно нечувствительной, что делает ей честь.

В ЦАПе предусмотрен фильтр коротких импульсов в 50 нс, который оказался совсем неэффективным.
Если переключить щупы осциллографа на входной делитель х10, то на сигналах становятся видна модуляция логических уровней, с частотой в несколько мегагерц и амплитудой до 500 милливольт (если верить китайскому осциллографу smile.gif).
Очевидно, что ЦАП принимает эти помехи за полезный сигнал.

Неужели величина в 500 милливольт достаточна для уровня логической 1 для I2C?
Да и могут ли электромагнитные наводки достигать таких величин, интерфейс-то вроде не высокоомный?

Теперь придётся разводить сигналы I2C на платах аккуратнее, вдали от быстрых сигнальных проводников или под надёжным прикрытием замляных полигонов.

Почитаешь форумы, так народ тянет провода на метры и проблем вроде нет.
А тут всего 20 см и уже не хорошо sad.gif
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 9 2010, 13:37
Сообщение #72


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Хм. Странно. 500 мВ при статических уровнях влиять не должны. А если наложить эту наводку на фронт? smile.gif


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Sep 9 2010, 13:44
Сообщение #73


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dron_Gus @ Sep 9 2010, 17:37) *
Хм. Странно. 500 мВ при статических уровнях влиять не должны. А если наложить эту наводку на фронт? smile.gif

Наводка видна только на 3.3в или 0в, а фронты чистые.

Опять же, с подключенными щупами осциллографа х1 (без делителя) - модуляция очень незначительная, но ЦАП продолжал глючить.

Ещё не подавал звуковой сигнал по I2S, надеюсь, эти выводы будут не так восприимчивы к помехам.
Go to the top of the page
 
+Quote Post
Halfback
сообщение Jan 19 2011, 07:52
Сообщение #74


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 28-05-05
Пользователь №: 5 512



если уж пошла такая пьянка на счет I2C то вот что скажу: надо было выставлять байт на экспандере портов PCA9555, причем на максимальной частоте 400КГц. В итоге I2C заработал без ошибок только при пуллапах 750 Ом. При этом фронты стали выглядеть более прямоугольными в отличие от 5.1кОм кот были в начале пути. Длина линиий SDA SCK между контроллером и экспандером было около 5 см. Вот такие пироги.
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.02382 секунд с 7
ELECTRONIX ©2004-2016