У меня новости намного печальнее. В выходные разбирался с написанием USB audio на STM32. Не даром все примеры, что есть в сети, ориентированы на вывод звука из компьютера чрез MCU - у STM просто библиотека HAL usb audio class написана до такого состояния, чтобы можно было этот пример показать. И только в старой stdlib (как ни смешно она в примерах Olimex) есть кусочки, которые работают на ввод звука. Пока выглядит все печально по скорости, т.к. похоже библиотеку профилировать ни кто не пытался. Подожду немного, в середине недели должен приехать ко мне STM32F7, начну с него.
PS: Ну в итоге получилась за вечер моно звуковушка, которая со входа встроенного АЦП на 48 кГц оцифрровывает и видится HDSDR, PowerSDR. И это на копеечном STM32F103.
программку выложу, сегодня в спешке забыл дома флэшку с екзешником
очевидно что так, гермесовский FIR, который везде используется последнее время, требует уйму пямяти, поэтому пока так... Я пока не вижу преимущества в децимации в последней ступени на 8 по сравнению с децимацией на 2. Ну понятно там полифазный и все такое, параметры должны быть лучше, и все такое... Но пока не очевидно, зачем половину памяти должен есть FIR.
Звучит солидно, только это всего лишь игры с отображением сетки с меньшей разрядностью на сетку с большей разрядностью. Сдвигая биты можно задвинуть полку хоть в - бесконечность дБм, вот только в физическом смысле исходная сущность 8 разрядного исходного сигнала от этого никуда не девается. Основной критерий - избежать выхода за пределы сетки со стороны старших бит, а со стороны младших, при 24 битах выходных сэмплов, даже после децимации, запаса будет бит на 10... Все равно при калибровке ПО полка вернется на то место, где она и обязана быть, с учетом разрядности АЦП и коэффициента усиления буфера перед АЦП.
Последний раз редактировалось EU1SW; 20.02.2017 в 09:43.
-Я писал и дуплексное USB audio, а затык главный произошел на ULPI. Хитрого там ничего особо нет, дескриптор прописываете и топологию устройства в него. У Геннадия Завидовского в его storch'е как раз весь функционал этот уже реализован, репозиторий открытый.
Без high-speed USB затея с STM32 неинтересная. Там для отладки надо логический анализатор 100 MSPS 16 каналов. Либо использовать готовую отладочную плату с уже разведенным ULPI. Проект с дуплексом где-то на домашнем компе валяется. F7, если вы ЦОС на самом камне не делаете, там для ввода-вывода звука нафиг не нужен.
romanetz, Ссылочкой не поделитесь на репозиторий Геннадия? С дескрипторами я разобрался, пришлось правда целый вечер потратить на чтение стандарта. Ну и на 103-м процессоре немного ресурсов не хватает на 2 канала даже с увеличенной кучей и стеком.
http://188.134.5.254/browser/trunk
На 407-м уже норм.
Максимум, на что можно рассчитывать на фулспиде, исходя из стандартной сетки частот,- формат 96/24/2 от трансивера и 48/16/2 в трансивер. Ограничением является максимальный размер транзакции в кадре у изохронного аудио эндпоинта в 1023 байта.
А вот для чего STM32 может реально быть полезен - реализовывать по сети одно TCP соединение вместо нескольких UDP. Они проще через интернет прокидываются.
Последний раз редактировалось romanetz; 20.02.2017 в 09:50.
romanetz, большое спасибо, поизучаю. Мне кажется что и на 103 со временем получится, если внимательно все посмотреть. Но не быстро все это, ох не быстро.
Не получится, на 103 размер у эндпоинта максимум 512 байт.
Посмотрите еще у товарища с ником tipok. Сайт tipok.org.ua. там есть вывод аудио в стм32ф103 без всякого куба.
Спасибо от UF3K
Будут вопросы, пишите. Формирование дескрипторов - usbd_desc.c, оно от типа процессоров мало зависит. Если что, звуковое устройство там создается с terminal type "радиоприемник" и "радиопередатчик " - при подключении к windows оказывается в "запрещенном" состоянии - надо вручную разрешить.
Чтение стандарта не помогло создать аудиоустройство с выбираемым типом "звучащего" устройства - например, переключением с "радиопередатчик " на "наушники". Источник звука - I/Q панорама или выход детектора - различаются форматом данных и потому переключаются легко.
Геннадий, спасибо. Я на такую глубину промера даже не замахивался )))
Хотелось просто сформировать LineIn и Out. В принципе, получилось описать в дескрипторах в моно-режиме (в стерео уперся в производительность 103-го процессора и наличие времени на выходных что бы дописать 2-й канал).
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)