Безкоштовна технічна бібліотека ЕНЦИКЛОПЕДІЯ РАДІОЕЛЕКТРОНІКИ ТА ЕЛЕКТРОТЕХНІКИ Аудіоплеєр форматів MP3 та Opus. Енциклопедія радіоелектроніки та електротехніки Енциклопедія радіоелектроніки та електротехніки / Аудіотехніка У запропонованій статті описано саморобний портативний програвач музичних файлів найпоширеніших форматів із картки пам'яті microSD. Він зібраний на мікроконтролері STM32F407VGT6 у корпусі від мобільного телефону NOKIA 1100. Схема плеєра наведена на рис. 1. У ньому максимально використовуються електронні компоненти, що є на налагоджувальній платі STM32F4DISCOVERY До них входять мікроконтролер STM32F407VGT6 (DD1), інтегральні стабілізатори напруги LD3985M25R (DA1) і LD3985M33R (DA3)43, кодек. З мобільного телефону NOKIA 22, крім корпусу та акумулятора, використані роз'єм для підключення головних телефонів XS2, передня панель з РКІ HG1100, мембрани для кнопок SB3-SB1, сформованих концентричними контактними майданчиками на друкованій платі, та роз'єм для підключення акумулятора G1. Крім того, на платі плеєра розміщено тримач для картки пам'яті microSD TFC-WPCE-17 (XS1), групу контактних майданчиків для підключення програматора Xp08, роз'єм miniUSB-B 1BMR-1-SM (XS5075).
Діодні зборки VD1, VD4, VD5, VD6 служать захисту від електростатичних розрядів ланцюгів, підключених до роз'ємів XS2 і XS3. Інші роз'єми знаходяться всередині акумуляторного відсіку і захисту не потребують. Мікросхема (DA2) - контролер заряджання літій-іонного акумулятора G1 з максимальною напругою 4,2 В. Резистор R9 зменшує падіння напруги на цій мікросхемі під час заряджання, що викликає її нагрівання. Резистором R10 встановлюють максимальний зарядний струм Iзар.mах відповідно до формули Iзap.max = 1000/R10. При опорі R10, заданому в кілоомах, значення зарядного струму утворюється в міліамперах. Заряджати літій-іонний акумулятор рекомендується струмом не більше 1С, де С – ємність акумулятора. Місткість застосованого акумулятора BL-5C - близько 1000 мА·год, максимально допустиме для мікросхеми LTC4054ES5-4.2 значення зарядного струму - 800 мА. Оскільки зарядка виробляється від шини USB, необхідно враховувати її навантажувальну здатність (500 мА). Таким чином, рекомендоване значення R10 – 2 кОм. Крім того, вимірюючи напругу на R10 можна визначити поточне значення струму зарядки акумулятора за формулою Iзар= 1000 · UR10/R10 (струм - у міліамперах, напруга - у вольтах, опір - у кілоомах). При підключенні роз'єму XS2 до шини USB польовий транзистор VT1 відключає акумулятор G1 від ланцюга живлення плеєра. Напруга 5 з контакту 1 роз'єму XS2 відкриває транзистор VT5, напруга на затворі транзистора VT3 стає негативним щодо його витоку. Транзистор VT3 відкривається, включаючи плеєр. Коли напруга на контакті роз'єму 1 XS2 відсутня, потенціал затвора транзистора VT3 близький до потенціалу його витоку і транзистор закритий. Натискання на кнопку SB1 також відкриває транзистор VT3, мікроконтролер починає працювати і кожні 10 мс перевірятиме стан цієї кнопки. Якщо її утримують у натиснутому стані більше 2 с, мікроконтролер встановить високий рівень напруги на базі транзистора VT2, відкривши його та підтримуючи відкритим транзистор VT3. Після цього плеєр переходить у робочий стан і кнопку можна відпускати. Вимикають плеєр повторним натисканням та утриманням кнопки SB1. Після включення мікроконтролер ініціалізує РКІ HG1 і карту microSD, вставлену в утримувач XS1, перевіряє наявність у кореневому директорії карти файлу конфігурації player.ini (підтримуються файлові системи FAT12, FAT16, FAT32). Це звичайний ini-файл, що є набором рядків "ключ - значення". У ньому зберігаються відомості про аудіофайл, вибраний для відтворення на момент попереднього вимкнення плеєра, позиції в ньому та встановленої гучності. Програма намагається відновити цей стан. У разі невдачі (наприклад, якщо картку було замінено) виконується пошук першого наявного на карті аудіофайлу (з розширенням імені .mp3 або .opus). Пошук починається з кореневої директорії, файли проглядаються в тому порядку, в якому вони перераховані в таблиці розміщення файлів, що є на карті. У процесі відтворення періодично викликається функція MainThread поточного декодера, яка при необхідності виконує читання з карти (за буферизацію кожен кодек відповідає сам, оскільки формати контейнерів аудіопакетів у .opus і .mp3 різні) та декодування. Необхідність виконання цих операцій визначається заповненістю циклічного буфера AudioBuffer, з якого асинхронно зчитує інформацію про аудіокодек. Після завершення декодування поточного аудіофайлу виконується пошук наступного за принципом, описаним вище. Якщо обхід файлової системи завершено, відтворення зупиняється. Взаємодія плеєра з користувачем відбувається за допомогою графічного монохромного РКІ HG1 роздільною здатністю 96x65 пкс та кнопок SB 1 -SB 17. Використовується програмна симуляція текстового режиму дисплея з розбиттям екрана на вісім рядків висотою по 8 пкс. Горизонтальна смуга, що залишилася в нижній частині екрана, висотою 1 пкс використовується для візуального відображення поточної позиції у файлі при відтворенні. У першому зверху рядку відображаються (зліва-направо) напруга акумулятора, стан плеєра, гучність. Стан характеризують символи "0" - відтворення, "-" - пауза, "<<" або ">>" - прискорене перемотування відповідно назад або вперед у межах файлу. Символ у вигляді прямокутника означає помилку зв'язку мікросхем DD1 та DD2 за інтерфейсом I2C. У рядках 2-6 відображається повний шлях до аудіофайлу, що програється. У рядку 8 зліва виводиться поточний час відтворення, праворуч – тривалість аудіофайлу. Кнопкою SB1 перемикають режими відтворення та паузи, кнопкою SB3 збільшують, а кнопкою SB5 зменшують гучність, кнопкою SB4 вмикають, а кнопкою SB15 вимикають блокування клавіатури. Коли клавіатуру заблоковано, у центрі рядка 7 дисплея виводиться напис "Locked". Натискання кнопки SB6 призводить до переходу на відтворення попереднього файлу, а на кнопку SB8 - наступного. Натискання та утримання цих кнопок більше секунди переводять плеєр у режим прискореного перемотування відповідно назад або вперед. Натискання на кнопку SB9 або SB11 завантажує для відтворення відповідно перший та останній файли поточного каталогу. Роз'єм XS3 - наявне у застосованому корпусі гніздо для підключення мікротелефонної гарнітури. На гарнітурі є гніздо для стандартного аудіоштекера діаметром 3,5 мм, до якого і підключають головні телефони. У гарнітурі передбачена також кнопка, що з'єднує при натисканні ланцюга BTN та GND, причому опір між контактами відпущеної кнопки – близько кілома. У плеєрі лінія BTN з'єднана з ланцюгом 3,3 через резистор R21, тому, вимірюючи напругу на цій лінії, можна судити і про наявність підключеної гарнітури, і про стан її кнопки. Функція кнопки гарнітури схожа на функцію кнопки SB1 плеєра - можна переводити його з режиму відтворення в режим паузи, і навпаки, а також вимикати. Однак увімкнути плеєр з її допомогою не можна. При заблокованій клавіатурі кнопка гарнітури продовжує діяти. Роз'єм XS2 займає у телефоні місце лінзи світлодіодного ліхтаря. При виявленні високого логічного рівня на з'єднаному з контактом 1 цього роз'єму вході мікроконтролера PA9 програма починає відображати у верхньому правому куті дисплея зарядний струм акумулятора в амперах. Крім того, ця подія автоматично включає плеєр, якщо він був вимкнений. За промовчанням після цього плеєр працює у звичайному режимі відтворення, що дозволяє слухати музику та одночасно заряджати акумулятор. При натисканні на кнопку SB13 програма зберігає стан плеєра у файлі player.ini та настроює модуль USB мікроконтролера на роботу в режимі MSC (Mass Storage Class). У цьому режимі комп'ютер пізнає плеєр, підключений до роз'єму USB, як знімний накопичувач інформації, вміст якого збігається із записаним на вставленій у плеєр карті microSD. Обмін інформацією з комп'ютером відбувається лише у режимі Full Speed із пропускною спроможністю не більше 12 Мбіт/с. На дисплеї, як і раніше, відображається поточне значення зарядного струму, у рядку 3 - напис "USB Disk", у рядках 4 і 5 - відповідно швидкість читання та запису. Натисканням кнопки SB12 пристрій повертають у режим плеєра. Креслення друкованої плати плеєра представлено на рис. 2. Її розміри та форма обрані ідентичними платі стільникового телефону NOKIA 1100, у корпус якого вона поміщена (рис. 3). Плата повинна бути виготовлена за технологією з металізованими отворами, інакше у всі перехідні отвори (з контактними майданчиками на обох сторонах плати) необхідно вставити та пропаяти з двох сторін відрізки лудженого дроту. Розташування деталей на платі показано на рис. 4 у масштабі 2:1. Там же показані маски із термостійкого ізоляційного лаку, якими необхідно захистити друкарські провідники. Якщо маски не наносити, необхідно ізолювати хоча б області підходу провідників до друкованих контактів кнопок і зону під металевим корпусом власника картки microSD XS1.
Коди із доданого до статті файлу walkgeek-v1.2-n1100-with-mp3.hex необхідно занести в пам'ять встановленого на платі мікроконтролера. Вихідний текст програми плеєра та всіх його компонентів поширюється під ліцензією New BSD License (та інших сумісних), що дозволяє його використання у закритих комерційних проектах. Виняток становить бібліотека Mp3dec, приєднання якої до кінцевого продукту потребує розкриття всіх вихідних кодів. Проект постійно оновлюється, і [1] викладаються його оновлені версії. Як уже було сказано, в плеєрі передбачено можливість відтворення файлів формату Opus. Це програмний кодек [2], що нещодавно вийшов у стабільній версії, для стиснення звуку з втратами, розроблений в рамках проекту Xiph.org, відомого такими рішеннями, як Vorbis, FLAC (Free Lossless Audio Codec - кодек для стиснення звуку без втрат) і Speex (мовний кодек). Можна назвати також Ogg – універсальний медіаконтейнер, який за умовчанням використовується для пакування стисненого потоку у файлах формату Opus. Оскільки кодек Opus досить новий, існує не так багато його реалізацій у системах з невеликим обсягом оперативної пам'яті. Одна з них – Rockbox. У процесі роботи з кодеком з'ясувалося, що бібліотека Ogg динамічно виділяє пам'ять для кешування сторінки цілком (теоретичний максимальний розмір - 65 Кбайт, реальний - близько 26 Кбайт), а також для кешування granulepos всіх пакетів сторінки (близько 16 Кбайт), що для пристрою, що має 192 Кбайт ОЗУ, дуже багато. Більше того, бібліотека за замовчуванням виділяє під буфер сторінок невелику ділянку пам'яті, розширюючи її в процесі роботи і щоразу виділяючи пам'ять із запасом. Це ж відбувається і з буфером для lacing values - інформації про розподіл пакетів на сторінці. Таким чином, якщо пул динамічної пам'яті невеликий, це незабаром призводить до його значної фрагментації та неможливості подальшого виділення пам'яті необхідного обсягу. В результаті змін, внесених до бібліотеки, кешування проводиться на рівні пакетів (максимальний розмір пакета стереоінформації, що передається зі швидкістю 512 Кбіт/с, становить практично 1276 байт). Максимальний розмір буфера для lacing values – 256 двобайтних осередків, причому їх можна зробити і однобайтними. Таким чином, всі структури, пов'язані з контейнером Ogg, після модифікації займають менше ніж 2 Кбайт оперативної пам'яті. При модифікації було зроблено деякі припущення: пакети не можуть перетинати межі сторінок, не перевіряється контрольна сума сторінок (нічого з перерахованого не було виявлено в жодному файлі Opus). Не перевірено роботу з файлами, що містять більше одного потоку, та c числом каналів, що відрізняється від двох. Підсумковий обсяг споживаної кодеком Opus пам'яті - 65088 3856 байт, з яких 1 байт займає вихідний буфер. Результати профілювання кодека за різної швидкості інформаційного потоку наведено в табл. XNUMX. Таблиця 1
Під поняттям " складність " у ній мається на увазі продуктивність процесора, необхідна успішного декодування. Оцінювалася вона простим підрахунком за допомогою апаратного таймера різниці моментів входу в процедуру декодування кожного кадру і виходу з неї (при відключеній багатозадачності, що витісняє, і заборонених перериваннях). Перевірка показала, що кодек MP3 потребує менших обчислювальних витрат. Але Opus вільний від ліцензійних відрахувань, і якість звучання при використанні краще, ніж при використанні MP3 і рівної швидкості потоку. Існує версія програми плеєра для налагоджувальної плати STM32F4DISCOVERY Коди, які потрібно занести в пам'ять встановленого на ній мікроконтролера, знаходяться у файлі walkgeek-v1. 1 -stm32f4discovery-with-mp3.hex (теж додано до статті). У цьому випадку програються аудіофайли з USB FLASH-накопичувача, що підключається до CN5 роз'єму плати через перехідник. Плейєр виступає у ролі провідного шини USB. Його стан відображають помаранчевий, червоний, синій та зелений світлодіоди на платі. Червоний показує відсутність, зелений – наявність підключеного FLASH-накопичувача, помаранчевий – завантаження аудіофайлу, зупинку відтворення або помилку програми, миготливий синій – режим відтворення. Більшість кнопок, що є на схемі рис. 1, підключають до налагоджувальної плати згідно з табл. 2 (другий контакт кожної кнопки з'єднують із загальним дротом). Роль кнопки SB8 виконує кнопка "User" плати. Дисплей від телефону NOKIA 1100 з'єднують з платою налагодження відповідно до табл. 3. Таблиця 2
Таблиця 3
література
Автор: О. Царегородцев Дивіться інші статті розділу Аудіотехніка. Читайте та пишіть корисні коментарі до цієї статті. Останні новини науки та техніки, новинки електроніки: Штучна шкіра для емуляції дотиків
15.04.2024 Котячий унітаз Petgugu Global
15.04.2024 Привабливість дбайливих чоловіків
14.04.2024
Інші цікаві новини: ▪ У космосі вперше спели печиво ▪ Бездзеркальний фотоапарат Canon EOS M10 ▪ Наноматеріал із молекул, закручених одночасно у протилежні сторони ▪ Cмартфон Moto X Developer Edition для розробників ▪ Надстійкий лазер зробить GPS точнішим Стрічка новин науки та техніки, новинок електроніки
Цікаві матеріали Безкоштовної технічної бібліотеки: ▪ розділ сайту Акумулятори, зарядні пристрої. Добірка статей ▪ стаття Податки та оподаткування. Конспект лекцій ▪ стаття Чи повзають вугри по землі? Детальна відповідь ▪ стаття Паспалум розширений. Легенди, вирощування, способи застосування ▪ стаття Три пристрої на ОУ. Енциклопедія радіоелектроніки та електротехніки ▪ стаття Поява карти в потрібній стопці. Секрет фокусу
Залишіть свій коментар до цієї статті: All languages of this page Головна сторінка | Бібліотека | Статті | Карта сайту | Відгуки про сайт www.diagram.com.ua |