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

 
 
9 страниц V  « < 6 7 8 9 >  
Reply to this topicStart new topic
> STM32 mp3 playback
Ivan Kuznetzov
сообщение Dec 2 2010, 06:15
Сообщение #106


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



kan35, какой максимальный битрейт Вам удалось воспроизвести с помощью этого кодека?


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
kan35
сообщение Dec 2 2010, 09:52
Сообщение #107


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Цитата(Ivan Kuznetzov @ Dec 2 2010, 09:15) *
kan35, какой максимальный битрейт Вам удалось воспроизвести с помощью этого кодека?

В общем я только проверил на том кусочке, который в виде таблицы находится в файле mp3.h (там чуть более секунды). На сколько я помню (смотрел JTAG-ом) у него был 128кбит (не точно), и точно: частота 44100, стерео. На 72МГц процесс отъедал около 40% CPU.
Спрашивали как инициализировал таймер, код. То что относится к RTOS, LCD я думаю выбросить не составить труда:
CODE
void TIM1_CC_IRQHandler(void)
{
TIM1_ClearITPendingBit(TIM1_IT_CC1);
extern void TIM1_CC_Handler(void);
TIM1_CC_Handler();
}



void Task_Extra(void)
{
// Timer1 Init
// Enable Timer1 clock and release reset
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM1, DISABLE);

// Set timer period 0.5 sec
TIM1_TimeBaseInitTypeDef TIM1_TimeBaseInitStruct;
TIM1_TimeBaseInitStruct.TIM1_Prescaler = 0;
TIM1_TimeBaseInitStruct.TIM1_CounterMode = TIM1_CounterMode_Up;
TIM1_TimeBaseInitStruct.TIM1_Period = 1632;//
TIM1_TimeBaseInitStruct.TIM1_ClockDivision = TIM1_CKD_DIV1;
TIM1_TimeBaseInitStruct.TIM1_RepetitionCounter = 0;
TIM1_TimeBaseInit(&TIM1_TimeBaseInitStruct);

// Clear update interrupt bit
//TIM1_ClearITPendingBit(TIM1_FLAG_Update);
// Enable update interrupt
//TIM1_ITConfig(TIM1_FLAG_Update,ENABLE);

//PWM SETUP
TIM1_OCInitTypeDef ocr_str;
TIM1_OCStructInit( &ocr_str );
ocr_str.TIM1_OCMode = TIM1_OCMode_PWM1;
ocr_str.TIM1_OutputState = TIM1_OutputState_Enable;
ocr_str.TIM1_Pulse = 800;
ocr_str.TIM1_OCPolarity = TIM1_OCPolarity_High;
TIM1_OC1Init(&ocr_str);
TIM1_OC1PreloadConfig(TIM1_OCPreload_Enable);

// TIM1 Main Output Enable
TIM1_CtrlPWMOutputs(ENABLE);

// Compare interrupt enable
TIM1_ITConfig(TIM1_IT_CC1, ENABLE);

/*GPIOA Configuration: TIM1 channel 1 as alternate function push-pull */
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);




NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 12;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
// Enable timer counting


TIM1_Cmd(ENABLE);

HD44780_PowerUpInit();
HD44780_ReturnToHome();

OS_TIMER TIMERTEST;
OS_CreateTimer(&TIMERTEST, NULL, 100000);
unsigned int j = 0;
while (1)
{
OS_RetriggerTimer(&TIMERTEST);
void decoder( void );
decoder( );
OS_StopTimer(&TIMERTEST);
char buf[50];
unsigned int data = 100000 - OS_GetTimerValue(&TIMERTEST);
//data /= 1.28;
sprintf(buf, "%d %d ", data, j++);//
HD44780_ReturnToHome();
for (int i = 0; buf[i]!=0 && i<20; i++)
{
OS_Delay(1);
HD44780WrData(buf[i]);
}
}
}

И по старую периферийную библиотеку все сделано, я думаю, тоже не составить труда перевести под новую.

Сообщение отредактировал IgorKossak - Jul 15 2011, 07:38
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Jul 14 2011, 19:20
Сообщение #108


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Кто-нибудь пробовал 12и битный DAC на STM32? Сильно звук паршивый?

Сообщение отредактировал Ivan Kuznetzov - Jul 14 2011, 19:28


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
=F8=
сообщение Jul 15 2011, 08:19
Сообщение #109


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Цитата(Ivan Kuznetzov @ Jul 14 2011, 22:20) *
Кто-нибудь пробовал 12и битный DAC на STM32? Сильно звук паршивый?

Для телефонии вполне даже ничего. Сильно зависит от аналогового питания. Чтоб шумело поменьше пришлось запититывать от отдельного линейного стабилизатора.
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Jul 17 2011, 12:15
Сообщение #110


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Запустил пример, компилятор IAR. Все время выходит из функции MP3Decode в самом начале:
Код
    if (!mp3DecInfo)
        return ERR_MP3_NULL_POINTER;


Проблема была в маленьком HEAP - указал побольше (0x5000) и стало играть.
Теперь надо как-то декодированный буфер через DMA гнать в I2S. А то на 192кбит/с немножко затыкается. Интерфейс с картой SPI. На SDIO будет получше конечно.

Сообщение отредактировал Ivan Kuznetzov - Jul 17 2011, 15:28


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jul 18 2011, 09:25
Сообщение #111


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

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



Цитата(Ivan Kuznetzov @ Jul 17 2011, 16:15) *
А то на 192кбит/с немножко затыкается. Интерфейс с картой SPI. На SDIO будет получше конечно.

Дык там даже при 320 kbps поток с карточки не превышает 40 кб\сек, а это смешная скорость даже для 1 битного интерфейса.
Думаю, затыки в самом декодере или где то ещё.
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Nov 19 2011, 14:11
Сообщение #112


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



С декодером разобрался! Юзаю Helix через два встроенных DAC STM32F103VET6. Вопрс теперь по кодированию в MP3. Могу писать WAV c АЦП-шника, хочется его после записи закодировать в mp3 и wav удалить. Есть для этого подходящие либы?


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Dec 13 2011, 12:05
Сообщение #113


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Сделал вывод стерео через ШИМ. ШИМ 70кГц. Качество примерно как у аудиокассеты, но вполне слушабельно...


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
kan35
сообщение Dec 13 2011, 18:36
Сообщение #114


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Цитата(Ivan Kuznetzov @ Dec 13 2011, 16:05) *
Сделал вывод стерео через ШИМ. ШИМ 70кГц. Качество примерно как у аудиокассеты, но вполне слушабельно...

не вполне ясно откуда берется 70кГц???
все же DAC существенно лучше: во первых битность больше на тех же 44кГц, во вторых - проще фильтровать.
На моем образце большинство людей разницу с фабричными плеерами не замечают, так что я бы сказал качество выше аудиокассетного существенно.
И в обоих случаях требуется выдавать звук через DMA.
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Dec 14 2011, 17:49
Сообщение #115


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(kan35 @ Dec 14 2011, 00:36) *
не вполне ясно откуда берется 70кГц???
все же DAC существенно лучше: во первых битность больше на тех же 44кГц, во вторых - проще фильтровать.
На моем образце большинство людей разницу с фабричными плеерами не замечают, так что я бы сказал качество выше аудиокассетного существенно.
И в обоих случаях требуется выдавать звук через DMA.

С DAC у меня тоже работает (STM32F103VET6), согласен, качество существенно лучше.
ШИМ приделывал c целью возможности использования на проце, где ДАКа нету...


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 14 2011, 19:36
Сообщение #116


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

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



Позвольте поинтересоваться, удалось ли добиться нормального воспроизведения 320 kbps mp3 на STM32F1xx? Вроде были сообщения, что не тянут они?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
kan35
сообщение Dec 15 2011, 15:59
Сообщение #117


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Цитата(AHTOXA @ Dec 14 2011, 23:36) *
Позвольте поинтересоваться, удалось ли добиться нормального воспроизведения 320 kbps mp3 на STM32F1xx? Вроде были сообщения, что не тянут они?

на скомпилированном в иаре 320 кбит грузит проц на 40-45%
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Dec 16 2011, 06:02
Сообщение #118


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(AHTOXA @ Dec 15 2011, 01:36) *
Позвольте поинтересоваться, удалось ли добиться нормального воспроизведения 320 kbps mp3 на STM32F1xx? Вроде были сообщения, что не тянут они?

подтверждаю, прекрасно тянет! работаю на helix mp3dec. сорцы полностью сявые.


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 16 2011, 07:20
Сообщение #119


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

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



Цитата(kan35 @ Dec 15 2011, 19:59) *
на скомпилированном в иаре 320 кбит грузит проц на 40-45%

Выше на этой же странице Ваш пост про 40% загрузку процессора уже на 128 килобитах.
А теперь тоже самое на 320?

Другой декодер?
Go to the top of the page
 
+Quote Post
kan35
сообщение Dec 17 2011, 12:23
Сообщение #120


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Цитата(sonycman @ Dec 16 2011, 11:20) *
Выше на этой же странице Ваш пост про 40% загрузку процессора уже на 128 килобитах.
А теперь тоже самое на 320?

Другой декодер?

Посмотрите https://datatype.helixcommunity.org/Mp3dec табличку зависимости загрузки от битрейта.

Скажу подробно: плеер работает во freertos, и я снимаю статистику загрузки штатными средствами и она показывает 57% напроцесс плеера, при этом все отсчеты (коих однако 88200 в секунду) проходят "софтверную" нормализацию, если это "вычесть", а так же "вычесть" чтение из файла (оно производится в этом же потоке), потому я примерно прикинул - 40-45% (72МГц).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 02:27
Рейтинг@Mail.ru


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