USB микрофон на ATmega8 и V-USB

Веднага ще направя резервация, че аз (както всъщност преди) не претендирам за титлата „Учител на годината“, така че ще представя материала възможно най-добре. Не всички точки могат да бъдат разкрити в статията, защото аз разбрах тази посока сам, прочетох много между редовете, част от информацията е специфична и теснопрофилна, а някои просто не разбрах. Не съм виждал примери на български, но цялата документация изглежда е на "враг". Така че не съдете строго и не се СЪДЕТЕ строго =)

Така че трябва да се отбележи, че USB е много подходящ за предаване на звук. Честотната лента на USB канала ви позволява да прехвърляте не само прост звук, но и висококачествени аудио данни. За производството на USB аудио устройства също е важно механизмът за прехвърляне на аудио данни да е добре дефиниран и стандартизиран в USB спецификацията. Стандартизираният механизъм за предаване на аудио също позволява използването на стандартни драйвери (доколкото е възможно).

Синхронизирането на потока от данни изисква специално внимание. Всъщност дори малките артефакти в звуковия поток са лесно различими от човешкото ухо. Поради това е разработена надеждна схема за синхронизация при изохронни трансфери (леко тавтология) и е внедрена в стандарта USB. За надеждно предаване на аудио данни през USB шината е дефиниран клас аудио устройство, който се придържа към тази схема за синхронизиране.

И така, с метода за пренос на данни през шината, те решиха - изохронен трансфер на данни. Но има няколко вида синхронизация на данни при изохронен трансфер. И така, първият тип е асинхронен изохронен трансфер. При такова прехвърляне крайната точка получава или предава данни със скорост, която е външна за USB, или със скорост, зададена от самото устройство.Вторият тип предаване е синхронно изохронно предаване. Системната честота за такива крайни точки може да се контролира чрез синхронизиране на SOF (предаване StartOfFrame). По този начин крайната точка настройва своята честота до 1 милисекунда SOF или контролира генерирането на SOF и нейната тактова честота е заключена към SOF. Има и адаптивен тип синхронизация. Адаптивна изохронна крайна точка може да получава или предава данни с всякаква скорост в рамките на своите работни ограничения. Такива крайни точки трябва да имплементират процес (функция) вътрешно, който им позволява да коригират своята тактова честота към тактовата честота, която се предлага на нейния интерфейс. От всички видове синхронизация най-простата е асинхронната.

Решихме метода на пренос на данни и вида на синхронизацията - асинхронен изохронен трансфер. Сега е време да разгледаме основните компоненти на USB аудио устройство. За да контролирате свойствата на аудио функция (устройство), нейните съставни компоненти могат да бъдат разделени на основни контролируеми компоненти. Има две от тях: единици (Units) и терминали (Terminals). Единиците са основните градивни елементи за пълно описание на повечето аудио функции. Аудио функциите се изграждат чрез свързване на няколко от тези устройства. Всяко устройство има поне един входен щифт (вход) и само един изход. В допълнение към модулите, които могат да се разглеждат като пропускащи елементи за аудио данни, има и така наречените терминали. Има входен терминал и изходен терминал. Терминалът може да се разглежда като крайната връзка в аудио функцията. И така, ADC за микрофон е входният терминал, а крайната точка е изходният терминал. За високоговорителите крайната точка е входният терминал, а DAC е изходният терминал. Пример за устройство е устройство за обработка на звука или управление на звука и др.

И така, за да създадете прост USB микрофон, можете да нарисувате следната фигура (1):

микрофон

Нека обясня малко за тази снимка. Според логиката на микрофона: отстраняването и цифровизацията на звука (възможно с неговата обработка) се обработва от функционално завършен блок, а друг блок участва в предаването (транспортирането) на тези данни. Тези блокове се наричат ​​интерфейси в стандарта USB. Съответно имената им са съвсем логични: AudioControl и AudioStreaming интерфейси. За въвеждане на данни в нашето устройство се използва входен терминал (IT), който може да се разглежда като микрофон + филтър + ADC. Тъй като цифровизираното аудио не се обработва от нас, данните се предават директно към изходния терминал (OT), който е представен от крайната точка. Входните и изходните терминали в този случай представляват аудио функция (логически завършена структура от терминали и модули, които реализират пълен функционален блок). В нашето устройство има само една функция, което означава, че AudioControl Interface се състои само от една функция. Интерфейсът AudioStraming е представен от крайна точка.

Сега нека погледнем повърхностно работния модел на класа аудио устройства. Едно устройство може да поддържа множество конфигурации. Във всяка конфигурация може да има множество интерфейси, всеки от които може да съдържа множество алтернативни настройки и крайни точки. За да илюстрирам всичко по-горе, ще представя следната фигура 2.

v-usb

Сега нека отидем малко по-далеч. В стандарта USB всяко устройство се представя на хоста като набор от дескриптори, които описват вида на устройството, неговите свойства и предназначение, неговите параметри, характеристики, изисквания, метод за обмен на информация и др. Фигура 2 показва общата структура на USB устройство. Всеки от представените блокове на фигуратаописан от собствения си дескриптор. За различни класове устройства (CDC, MSD, HID, AUDIO и др.) стандартните дескриптори могат да включват специфични за класа дескриптори. Всички те са описани в документите със спецификацията на съответния клас устройство. Малко объркващо, но сега нека се опитаме да си представим дескрипторна йерархия за нашето устройство въз основа на фигури 1 и 2. Тази йерархия е представена в спецификацията на AUDIO DEVICE CLASS, но логиката на конструкцията може да бъде проследена от горния материал.

устройство

v-usb

Прикачих файлове на проекта за IAR и примерен запис от микрофон към статията (схема без филтър, звукът беше взет от линейния изход на звуковата система. Представено като доказателство за производителност =). Чрез увеличаване на честотата на кварца можете също да увеличите качеството на звука по отношение на честотата на семплиране. Коментари и критики (за предпочитане градивни) в студиото.

atmega8