Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 mp3 playback
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2, 3
zksystem
Потянет ли STM32 декодирование mp3 хотябы 192кбит моно?
blackfin
Смотря сколько в нем MIPS'ов: MP3_Decoder
zksystem
Цитата(blackfin @ Jan 24 2009, 14:30) *
Смотря сколько в нем MIPS'ов: MP3_Decoder


Core: ARM 32-bit Cortex™-M3 CPU
– 72 MHz maximum frequency,
1.25 DMIPS/MHz (Dhrystone 2.1)

я так понял 72 * 1.25 = 90 MIPS ?

Где бы еще скачать понимаемый исходник плеера mp3, чтоб не с поллитрой разбираться...
Dron_Gus
AT91SAM7S** тянет и 320. Например libmad.
sonycman
Цитата(Dron_Gus @ Jan 24 2009, 15:42) *
AT91SAM7S** тянет и 320. Например libmad.

Тогда Кортекс потянет тем более.
Только есть ли в этом смысл? Или вы хотите воспользоваться встроенным ЦАП?

Почему бы не заюзать декодер VLSI?
blackfin
Цитата(sonycman @ Jan 24 2009, 14:52) *
Только есть ли в этом смысл?
Может, автору надо декодировать три файла одновременно.. И такое бывает.. laughing.gif
zksystem
Цитата(sonycman @ Jan 24 2009, 14:52) *
Тогда Кортекс потянет тем более.
Только есть ли в этом смысл? Или вы хотите воспользоваться встроенным ЦАП?

Почему бы не заюзать декодер VLSI?

задача стоит сделать на одном чипе STM32, на VLSI уже делал (PIC18F4585+VS1001K) много места и дорого.

исходник нашел, только там ужос скока файлов.... буду пытаться вникнуть
http://www.mikrocontroller.net/articles/ARM_MP3/AAC_Player
sonycman
Цитата(zksystem @ Jan 24 2009, 16:08) *
задача стоит сделать на одном чипе STM32, на VLSI уже делал (PIC18F4585+VS1001K) много места и дорого.

исходник нашел, только там ужос скока файлов.... буду пытаться вникнуть
http://www.mikrocontroller.net/articles/ARM_MP3/AAC_Player

Я вот тоже планирую в будущем сделать вариант воспроизводящей системы.
Поэтому эта тема интересна.

Значит, ЦАПы будут встроенные в STM? 12-ти битные? А качество не пугает?
zksystem
Цитата(Dron_Gus @ Jan 24 2009, 14:42) *
AT91SAM7S** тянет и 320. Например libmad.

libmad вроде более понятный, спасибо.

Цитата(sonycman @ Jan 24 2009, 15:14) *
Я вот тоже планирую в будущем сделать вариант воспроизводящей системы.
Поэтому эта тема интересна.

Значит, ЦАПы будут встроенные в STM? 12-ти битные? А качество не пугает?

попробую для начала ШИМ, параллельно ищу i2s DAC, только нужен дешевый, а не по цене VS1033 smile.gif
sonycman
Цитата(zksystem @ Jan 24 2009, 16:19) *
попробую для начала ШИМ, параллельно ищу i2s DAC, только нужен дешевый, а не по цене VS1033 smile.gif

Было бы неплохо при этом получить качество сигнала, не уступающее VSxxxx.
А как насчёт регулировок громкости/тембра/баланса? Тоже софтово?

ЗЫ: по ШИМ - разве реально получить на выходе STM32 44 килогерц 16 бит?
zksystem
Цитата(sonycman @ Jan 24 2009, 15:27) *
Было бы неплохо при этом получить качество сигнала, не уступающее VSxxxx.
А как насчёт регулировок громкости/тембра/баланса? Тоже софтово?

ЗЫ: по ШИМ - разве реально получить на выходе STM32 44 килогерц 16 бит?

Да, вы правы, ШИМ отпадает, что-то я не подумал.
Тембр и баланс не нужен, только громкость... вот присмотрел один DAC - TLV320AIC23B вроде недорогой, порядка 70 рублей.
вот еще один хороший UDA1330ATS, правда дороже
Dron_Gus
TLV320AIC23 в свое время цеплял к at91sam7s - звук отличный. Его же цепляю сейчас к at91sam9260. ШИМом делал на STR912 усреднял несколько соседних выборок и гнал 8 КГц. Звук ужасный, но может я что-то не учел.
zksystem
Забыл о VLSI добавить - раньше использовал VS1001K, самый просто и дешевый в использовании декодер, только вот производитель (vlsi.fi) обрадовал, что снял ее в производства, а более старшие модели дорогие и требуют 2 разных источника притания
sonycman
Цитата(zksystem @ Jan 24 2009, 18:17) *
Забыл о VLSI добавить - раньше использовал VS1001K, самый просто и дешевый в использовании декодер, только вот производитель (vlsi.fi) обрадовал, что снял ее в производства, а более старшие модели дорогие и требуют 2 разных источника притания

Ну, есть 1011е, дороговатая, конечно - около 9 баксов.
Что касается питания - источник на самом деле один, просто развести его на плате надо отдельно для аналога и цифры. ИМХО.
A. Fig Lee
Цитата(sonycman @ Jan 24 2009, 10:15) *
Ну, есть 1011е, дороговатая, конечно - около 9 баксов.
Что касается питания - источник на самом деле один, просто развести его на плате надо отдельно для аналога и цифры. ИМХО.



тоже такую ваяю. Только на LPC2148.
VLSi i STA013 оффициально - недешевы изза лицензий.
Плюс в АРМ можно и другие декодеры вогнать плюс загрузить чемто.
лучшийдекодер судя по отзывам:
https://datatype.helixcommunity.org/Mp3dec
подзаточен под АРм.

Хорошо бы иметь миниплатку - вставил туда microSDCard, а на выходе - звук.
чтоб понимала FAT32, VLSI - не хватит.
sonycman
Цитата(A. Fig Lee @ Jan 24 2009, 21:22) *
Хорошо бы иметь миниплатку - вставил туда microSDCard, а на выходе - звук.
чтоб понимала FAT32, VLSI - не хватит.

Один декодер, без контроллера, конечно-же ничего воспроизвести не сможет.
Я тоже буду юзать STM32.
Однако думаю взять именно VS1011e в качестве декодера и аналогового процессора.
Всё равно без доп. чипа не обойтись, так пусть это будет не просто ЦАП.
Для любительской поделки самое то smile.gif
Ну а проц будет выполнять управление всей системой (чтение с карточки, вывод на ЖКИ и т.д) - в общем-то стандартная модель.

Хотя интересно было-бы возложить задачи декодирования на проц - всё равно должно остаться время и для обслуживания остального...
Rst7
Цитата
Хорошо бы иметь миниплатку - вставил туда microSDCard, а на выходе - звук.
чтоб понимала FAT32, VLSI - не хватит.


Я думаю в VS1053 вполне войдет легенькая имплементация FAT32. Там же больше 1К инструкций и 0.5 килослов ОЗУ данных есть для пользовательского софта, вполне должно войти. Софт для разработки, мануал по камню и т.д. - все есть на сайте VLSI.
A. Fig Lee
Цитата(Rst7 @ Jan 24 2009, 15:39) *
Я думаю в VS1053 вполне войдет легенькая имплементация FAT32. Там же больше 1К инструкций и 0.5 килослов ОЗУ данных есть для пользовательского софта, вполне должно войти. Софт для разработки, мануал по камню и т.д. - все есть на сайте VLSI.

elm-chan например файл-систем занимает как минимум несколько килобайт.
http://elm-chan.org/fsw/ff/en/appnote.html

маловероятно что в VLSI чето влезет.
опять же - не знаю где ее в России берут, официально VS1053 со товарищи - 16 евро за штуку.
проще пожалуй один DAc 3-х долларовй взять в довесок.

CS4344 etc..
sonycman
Цитата(Rst7 @ Jan 25 2009, 00:39) *
Я думаю в VS1053 вполне войдет легенькая имплементация FAT32. Там же больше 1К инструкций и 0.5 килослов ОЗУ данных есть для пользовательского софта, вполне должно войти. Софт для разработки, мануал по камню и т.д. - все есть на сайте VLSI.

Это было-бы круто. Если удастся забацать такое - у меня реально шары на лоб вылезут laughing.gif
Rst7
Цитата
elm-chan например файл-систем занимает как минимум несколько килобайт.


А зачем там полновесный ФС? Достаточно реализовать последовательное чтение файла (с учетом цепочки в фате, конечно). Этого хватит и для обработки каталогов, и для собственно чтения MP3.
zksystem
Цитата(A. Fig Lee @ Jan 24 2009, 20:22) *
тоже такую ваяю. Только на LPC2148.
VLSi i STA013 оффициально - недешевы изза лицензий.
Плюс в АРМ можно и другие декодеры вогнать плюс загрузить чемто.
лучшийдекодер судя по отзывам:
https://datatype.helixcommunity.org/Mp3dec
подзаточен под АРм.

Что-то не понял где там исходники скачать, или он платный?
P.S. в последнюю VLSI много что влезет, там плагины даже загружать можно...
bloodden
Если б ещё Ethernet к sam7x , то получится классное интернет-радио. Я думаю, что для людей с безлимитным интернетом будет актуально.
A. Fig Lee
Цитата(zksystem @ Jan 25 2009, 07:02) *
Что-то не понял где там исходники скачать, или он платный?
P.S. в последнюю VLSI много что влезет, там плагины даже загружать можно...


внутри там, в проекте.

вот оттуда:

ftp://ftp.circuitcellar.com/pub/Circuit_C...ymanski-194.zip

плагины загружать можно? и что они могут на 1 килобайт?
не, один только сектор занимает 512 байт.
чтоб доступится до второго, надо будет опять найти аллокейшн таблицу и сначала допрыгать до нужного сектора.
в реалтайм - не верю,что получится.
zksystem
Цитата(A. Fig Lee @ Jan 26 2009, 03:31) *
внутри там, в проекте.

вот оттуда:

ftp://ftp.circuitcellar.com/pub/Circuit_C...ymanski-194.zip

плагины загружать можно? и что они могут на 1 килобайт?
не, один только сектор занимает 512 байт.
чтоб доступится до второго, надо будет опять найти аллокейшн таблицу и сначала допрыгать до нужного сектора.
в реалтайм - не верю,что получится.


VS1053 - Ogg Vorbis/MP3/AAC/WMA/MIDI audio codec

Decodes multiple formats
Ogg Vorbis
MPEG 1 & 2 audio layer III (CBR+VBR+ABR), 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)
WAV (PCM + IMA ADPCM)
General MIDI 1 / SP-MIDI format 0
Encodes two different formats from mic/line in mono or stereo
Ogg Vorbis with software plugin
IMA ADPCM

энкодер с линейного входа или микрофона в OGG Vorbis загружается как плагин
Rst7
Цитата
чтоб доступится до второго, надо будет опять найти аллокейшн таблицу и сначала допрыгать до нужного сектора.


Что значит "найти"? Последовательное чтение файла предполагает следующие переменные:

var1 - Смещение в текущем секторе
var2 - Номер сектора в кластере (может быть склеено вместе с п.1)
var3 - Номер текущего кластера

Собственно алгоритм последовательного чтения представляет из себя:
1. Чтение текущего сектора, определяемого как var2+clust_base+var3*количество_секторов_в_кластере. Или части сектора, тогда надо использовать еще и var1.
2. Проверка на невыход за пределы текущего кластера переменных 1 и 2, если произошел выход, то var3=FAT(var3) и var1=0, var2=0. И опять сначала. Процедура, реализующая получение содержимого таблицы FAT по номеру текущего кластера для FAT16/FAT31 суть всего-лишь чтение одного сектора FAT.

Какие же проблемы?
zksystem
А флешку можно и форматнуть перед записью, тогда кластеры будут идти стык-в-стык smile.gif Как вариант. Хотя проблем с цепочкой FAT не вижу, было бы желание... Писал FAT16 на PIC18, использовал всего один буфер под сектор (512байт), и успевал гнать в VS1001K
Rst7
Цитата
Как вариант.


Хреновый вариант. Он добавит столько гемороя, что мама негорюй.

Цитата
Писал FAT16 на PIC18, использовал всего один буфер под сектор (512байт)


Немудрено.

И вообще, накладных расходов всего плюс одно лишнее чтение сектора на чтение одного кластера. Тем более, это же флеш, а не винт, голову смыкать не надо.
sonycman
Цитата(Rst7 @ Jan 26 2009, 12:37) *
Процедура, реализующая получение содержимого таблицы FAT по номеру текущего кластера для FAT16/FAT31 суть всего-лишь чтение одного сектора FAT.

А для FAT32 всё иначе?

Мне вот интересно, можно ли сделать файловую систему с поддержкой длинных имён (не хочу видеть уродливые 8.3 имена на своём диске), чтобы она влезла в небольшую флеш контроллера? Говорят, там требуются таблицы весом в сотни килобайт...
Хотя в сети есть примеры таких реализаций даже для AVR. Как они это делают?

Я пока ещё не работал с FAT. Но думаю, что длинные имена - это работа с юникодом. В теории, нужно ведь только понимать юникод для кириллицы и латиницы? А остальное исключить?
Rst7
Цитата
А для FAT32 всё иначе?


Простите, я описался. Конечно, FAT32 smile.gif Все точно так-же.

Цитата
Говорят, там требуются таблицы весом в сотни килобайт...


Врут.

Цитата
В теории, нужно ведь только понимать юникод для кириллицы и латиницы? А остальное исключить?


Ну если Вам не нужны всякие нанайские символы, то да.

Длинные имена там вообще через одно место сделаны. Но все вопросы преодолимы.
sonycman
Цитата(Rst7 @ Jan 26 2009, 15:50) *
Длинные имена там вообще через одно место сделаны. Но все вопросы преодолимы.

Спасибо! Буду разбираться smile.gif
A. Fig Lee
Цитата(Rst7 @ Jan 26 2009, 03:37) *
Что значит "найти"? Последовательное чтение файла предполагает следующие переменные:

var1 - Смещение в текущем секторе
var2 - Номер сектора в кластере (может быть склеено вместе с п.1)
var3 - Номер текущего кластера

Собственно алгоритм последовательного чтения представляет из себя:
1. Чтение текущего сектора, определяемого как var2+clust_base+var3*количество_секторов_в_кластере. Или части сектора, тогда надо использовать еще и var1.
2. Проверка на невыход за пределы текущего кластера переменных 1 и 2, если произошел выход, то var3=FAT(var3) и var1=0, var2=0. И опять сначала. Процедура, реализующая получение содержимого таблицы FAT по номеру текущего кластера для FAT16/FAT31 суть всего-лишь чтение одного сектора FAT.

Какие же проблемы?


сектор сам по себе 512 байт.
надо и себе озу оставить. если там длинные имена - байт 100 под имя. в опчем разве что полсектора читать.
соответственно, возрастает сложность кода.
и все влезет в 1 Килобайт?
sonycman
Цитата(A. Fig Lee @ Jan 27 2009, 05:16) *
сектор сам по себе 512 байт.
надо и себе озу оставить. если там длинные имена - байт 100 под имя. в опчем разве что полсектора читать.
соответственно, возрастает сложность кода.
и все влезет в 1 Килобайт?

100 байт под LFN не маловато будет? smile.gif

А вообще RST7 вёл речь про чтение секторов без поддержки LFN...
blackfin
Цитата(sonycman @ Jan 27 2009, 11:37) *
100 байт под LFN не маловато будет? smile.gif

Конечно "маловато".. Нужно 2*260.
zksystem
Цитата(sonycman @ Jan 27 2009, 11:37) *
100 байт под LFN не маловато будет? smile.gif

А вообще RST7 вёл речь про чтение секторов без поддержки LFN...

Вообще топик не про файловую систему, а про STM32 MP3 rolleyes.gif
sonycman
Цитата(blackfin @ Jan 27 2009, 12:44) *
Конечно "маловато".. Нужно 2*260.

Точно, там же юникод ещё... smile.gif

Цитата(zksystem @ Jan 27 2009, 12:44) *
Вообще топик не про файловую систему, а про STM32 MP3 rolleyes.gif

Вот такие вот мы флудеры... cool.gif
A. Fig Lee
Цитата(blackfin @ Jan 27 2009, 03:44) *
Конечно "маловато".. Нужно 2*260.


ну маловато, но идея была - сделать кастрированную читалку ФАТ.
Если там всего 512 байт в VLSI - че делать?

все - каюк.
zksystem
Цитата(A. Fig Lee @ Jan 27 2009, 18:21) *
ну маловато, но идея была - сделать кастрированную читалку ФАТ.
Если там всего 512 байт в VLSI - че делать?

все - каюк.

Для чего длинные имена в mp3 плеере на VLSI?
Я думаю чтение ID3 тэгов сделать куда разумнее.
blackfin
Цитата(zksystem @ Jan 27 2009, 19:49) *
Я думаю чтение ID3 тэгов сделать куда разумнее.
А есть по ним инфа?
Rst7
Цитата
Если там всего 512 байт в VLSI - че делать?
все - каюк.


Блин, да курните вы поглубже про внутренности VLSI. Во-первых, там есть еще входная очередь размером в 2К. Пока не играем - она, понятное дело, пуста. Раскладывайте там свои причиндалы для разбора LFN. А когда плей - прямо читайте сектора в очередь да и все.

Так уж и быть. Я тут скоро один проектик с этой VLSI буду делать, слеплю вам маленький плейер.



Цитата
А есть по ним инфа?


CODE

/*

This is an example program that shows how to extract MP3 ID3v1 tags.
It is written in standard ANSI C and can be compiled with any working
C compiler.

Usage: "id3tag file1.mp3 [file2.mp3 [...]]"

Author: Henrik Herranen, VLSI Solution, 2000-07-21

*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>



/*

Different genres are described below. If it is felt that these take
too much space from a microcontroller, the whole list may be thrown
away since the genre information is used wrong most of the time anyway.

*/
#define GENRES 148

char *genres[GENRES] = {
"Blues", "Classic Rock", "Country", "Dance",
"Disco", "Funk", "Grunge", "Hip-Hop",
"Jazz", "Metal", "New Age", "Oldies",
"Other", "Pop", "R&B", "Rap",
"Reggae", "Rock", "Techno", "Industrial",
"Alternative", "Ska", "Death Metal", "Pranks",
"Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop",
"Vocal", "Jazz+Funk", "Fusion", "Trance",
"Classical", "Instrumental", "Acid", "House",
"Game", "Sound Clip", "Gospel", "Noise",
"AlternRock", "Bass", "Soul", "Punk",
"Space", "Meditative", "Instrumental Pop", "Instrumental Rock",
"Ethnic", "Gothic", "Darkwave", "Techno-Industrial",
"Electronic", "Pop-Folk", "Eurodance", "Dream",
"Southern Rock", "Comedy", "Cult", "Gangsta",
"Top 40", "Christian Rap", "Pop/Funk", "Jungle",
"Native American", "Cabaret", "New Wave", "Psychadelic",
"Rave", "Showtunes", "Trailer", "Lo-Fi",
"Tribal", "Acid Punk", "Acid Jazz", "Polka",
"Retro", "Musical", "Rock & Roll", "Hard Rock",
"Folk", "Folk/Rock", "National folk", "Swing",
"Fast-fusion", "Bebob", "Latin", "Revival",
"Celtic", "Bluegrass", "Avantgarde", "Gothic Rock",
"Progressive Rock", "Psychedelic Rock", "Symphonic Rock", "Slow Rock",
"Big Band", "Chorus", "Easy Listening", "Acoustic",
"Humour", "Speech", "Chanson", "Opera",
"Chamber Music", "Sonata", "Symphony", "Booty Bass",
"Primus", "Porn Groove", "Satire", "Slow Jam",
"Club", "Tango", "Samba", "Folklore",
"Ballad", "Powder Ballad", "Rhythmic Soul", "Freestyle",
"Duet", "Punk Rock", "Drum Solo", "A Capella",
"Euro-House", "Dance Hall", "Goa", "Drum & Bass",
"Club House", "Hardcore", "Terror", "Indie",
"BritPop", "NegerPunk", "Polsk Punk", "Beat",
"Christian Gangsta", "Heavy Metal", "Black Metal", "Crossover",
"Contemporary C", "Christian Rock", "Merengue", "Salsa",
"Thrash Metal", "Anime", "JPop", "SynthPop"
};



/*

Here is the main program. The program is called by giving 1 or more
MP3 files as command line arguments.

Example:
mp3tag mysong.mp3 othersong.mp3

*/


int main(int argc, char **argv) {
int i;
/* 128 bytes needed for raw ID3 data */
char id3[128];

for (i=1; i<argc; i++) {
if (!strcmp(argv[i], "-h")) {
printf("Usage: %s file1.mp3 [file2.mp3 [...]]\n", argv[0]);
exit(EXIT_SUCCESS);
} else {
FILE *fp = fopen(argv[i], "rb");

if (!fp) {
printf("Couldn't open file %s\n", argv[i]);
exit(EXIT_FAILURE);
}

/* Read last 128 bytes of the file, if we can */

if (fseek(fp, -128, SEEK_END) || fread(id3, 128, 1, fp) != 1) {
printf("Couldn't jump/read in file %s\n", argv[i]);
exit(EXIT_FAILURE);
}
fclose(fp);

/* Now we have read the last 128 bytes and it's time to see if we
have some ID3 there or not. A valid ID3 tag has the characters
'T', 'A', and 'G' as its 3 identifying characters. */

if (strncmp(id3, "TAG", 3)) {
printf("File \"%s\" doesn't have an ID3 tag\n\n", argv[i]);
} else {
unsigned char *s = id3+3;
char title[31];
char artist[31];
char album[31];
char year[5];
char comment[31];
char genre[31];

/* Id3 tag elements don't necessarily end in a '\0' if they
occupy the full 30 character space. Thus, we'll have to
nul-terminate all strings just to be sure. */
strncpy(title, s, 30);
title[30] = '\0';
s += 30;

strncpy(artist, s, 30);
artist[30] = '\0';
s += 30;

strncpy(album, s, 30);
album[30] = '\0';
s += 30;

strncpy(year, s, 4);
year[4] = '\0';
s += 4;

strncpy(comment, s, 30);
comment[30] = '\0';
s += 30;

/* The genre field is not encoded as a string, but just one byte
that indexes the decoding table. If memory is too expensive,
the whole field may be ignored or just shown as a number. */
if (*s >= GENRES)
strcpy(genre, "Unknown");
else
strcpy(genre, genres[*s]);

/* And now the final printing */
printf("File \"%s\":\n", argv[i]);
printf("Title : %-30s Artist: %s\n", title, artist);
printf("Album : %-30s Year : %4s\n", album, year);
printf("Comment: %-30s Genre : %s\n\n", comment, genre);
}
}
}

return EXIT_SUCCESS;
}


И вообще, горячие финские парни все придумали за нас

http://www.vlsi.fi/en/support/evaluationbo...protoboard.html
blackfin
To Rst7: Спасибо!
sergvks
А кто-нить пробовал отлаживать проги для vs-ок ? Нормальный отладчик там за бабки, а сидеть в командной строке после того же Кейла как-то ломает. ИМХО для этих целей прямо просится str911fam44 - стоит недорого, памяти и производительности выше крыши для этой задачи, I2S легко реализуется на таймере и ssp.
sonycman
Цитата(zksystem @ Jan 27 2009, 20:49) *
Для чего длинные имена в mp3 плеере на VLSI?
Я думаю чтение ID3 тэгов сделать куда разумнее.

Для плеера LFN нафиг не нужны.
Мне для универсального диска на карточке это понадобится.

Цитата(sergvks @ Jan 27 2009, 21:55) *
А кто-нить пробовал отлаживать проги для vs-ок ? Нормальный отладчик там за бабки, а сидеть в командной строке после того же Кейла как-то ломает. ИМХО для этих целей прямо просится str911fam44 - стоит недорого, памяти и производительности выше крыши для этой задачи, I2S легко реализуется на таймере и ssp.

Что, прямо таки девятый арм необходим? А седьмые не подходят?
sergvks
Цитата(sonycman @ Jan 27 2009, 21:05) *
Что, прямо таки девятый арм необходим? А седьмые не подходят?

Так цена почти одинаковая, а запас по памяти и производительности всегда приятно иметь.
Сейчас mp3, а завтра flac захочется и т.д.

Кстати, требования для Helix MP3 Decoder 320 Kbps:
ARM7TDMI - 30 MHz
ARM9E - 20 MHz
sonycman
Цитата(sergvks @ Jan 27 2009, 22:11) *
Кстати, требования для Helix MP3 Decoder 320 Kbps:
ARM7TDMI - 30 MHz
ARM9E - 20 MHz

Ну так девятый арм, всё таки. Наверное, декодер DSP инструкции юзает.

Кстати, если софтово регулировать громкость - как это в общем происходит?
Простым делением не прокатит?
Извиняюсь за такие вопросы, но в DSP не шарю sad.gif
zksystem
Цитата(sonycman @ Jan 27 2009, 22:22) *
Ну так девятый арм, всё таки. Наверное, декодер DSP инструкции юзает.

Кстати, если софтово регулировать громкость - как это в общем происходит?
Простым делением не прокатит?
Извиняюсь за такие вопросы, но в DSP не шарю sad.gif

Громкость лучше регулировать логарифмическими табличками или это при понижении разрядности используется?
cebotor
Цитата(sonycman @ Jan 24 2009, 15:14) *
Я вот тоже планирую в будущем сделать вариант воспроизводящей системы.
Поэтому эта тема интересна.

ST-шники выложили код портированного SPEEX- a, для воспроизводящей системы типа оповещения или еще чего сказать имхо оптимальнее.
на кортекс пытался перекладывать и либмад и хеликс очень давно - почти год назад, как только начал возиться с ним - все вобщем то легло smile.gif но двадцать кило памяти не хватило в доступных мне на тот момент моделях 103го
sonycman
Цитата(cebotor @ Jan 28 2009, 00:16) *
ST-шники выложили код портированного SPEEX- a, для воспроизводящей системы типа оповещения или еще чего сказать имхо оптимальнее.
на кортекс пытался перекладывать и либмад и хеликс очень давно - почти год назад, как только начал возиться с ним - все вобщем то легло smile.gif но двадцать кило памяти не хватило в доступных мне на тот момент моделях 103го

Хотелось бы, чтобы оно и музычку качественно воспроизводило rolleyes.gif
Поэтому всё-же сначала mp3. А потом видно будет.

А что с памятью не получилось? Оперативы не хватило? Флешки-то вроде мало надо - 20-30 килобайт?
Я заказал уже STM32 с 512к флеша, авось влезет smile.gif всё, что надумаю со временем реализовать...
Alex B._
Цитата(sonycman @ Jan 28 2009, 00:14) *
Хотелось бы, чтобы оно и музычку качественно воспроизводило rolleyes.gif

надо только не забыть, что 30 MIPS Helix приведено для zero wait-state flash. Так что делайте поправку
sonycman
Цитата(Alex B._ @ Jan 28 2009, 01:20) *
надо только не забыть, что 30 MIPS Helix приведено для zero wait-state flash. Так что делайте поправку

Ну и что? Рамы что-ли мало? Да и неужели STM32 на 48 МГц (один wait state) прямо из флеш не осилит?
Rst7
Подумайте лучше насчет вменяемого декодера AAC. Все же заметно меньше требуемый битрейт.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.