Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
STM32T

Измерение уровней звука. Вопросы. Первый опыт.

07.06.2014, 20:20. Показов 5055. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!
Тема моего проекта "Модернизация многоканального устройства контроля уровней звуковых сигналов на основе микроконтроллера STM32"
основная идея устройства заключается в последовательном коммутировании 32 двух каналов низкой частоты, тобишь звуковых сигналов с выходов передатчиков непосредственно перед передачей в эфир с целью их оперативного, одновременного мониторинга на ПЭВМ.
В качестве контроллера был выбран STM32T100RC а точнее отладка на Dyscovery, программный отладчик Keil uVision использую библиотеки StdPeriph, тк на более низком уровне с данным железом общаться пока что не научился, да и вообще можно сказать это мои почти первые шаги в освоении микроконтроллеров.
Коммутатором является микросхема КР590КН6.
1) первый вопрос. как правильно рассчитать время на которое я буду открывать коммутатор на определённый канал?
мой черновой вариант я реализую с помощью:
SysTick_Config(SystemCoreClock/1000);
void SysTick_Homdler(void)
{
if(delay_count>0)
{
delay_count--;
}

}
void delay_ms(uint16_t delay_temp)
{
delay_count = delay_temp;

while(delay_count)
{

}
}
и в main прописываю delay_ms(500);
ножки выхода с отладки для управления коммутатором настраиваю как для светодиода.

2) вопрос второй. как я понял на моей отладке нет внешнего кварца, а внутренний кварц микроконтроллера слабой точности, по мануалу на отладку есть возможность подцепить внешний кварц 8 Мгц. скажите пожалуйста при установке оного что нибудь необходимо настраивать или контроллер сам определит что таковой присутствует и настроится.

3) далее с выхода коммутатора сигнал подаётся на внутренний АЦП контроллера, здесь возникает вопрос из разряда тактирования, в мануале
ADC conversion time: 1 ?s at full speed (ADC clocked at 16 MHz) down to 4 ?s at low
speed (ADC clocked at 4 MHz), independent of the APB clock
помогите определиться с точностью на какое минимальное время мне необходимо держать сигнал на АЦП для точного измерения.

Но плюс к этому на старой схеме этого устройства присутствовал выпрямитель и пиковый детектор, присутствует ли необходимость в выпрямлении сигнала или достаточно будет программной реализации пика путём сранения определённой пачки измеренных значений АЦП с выбором наибольшего.

4) четвёртый вопрос. в задачах поставленно использовать 12 битное АЦП, но загвоздка получается в следующем: передачу 12 битного числа я реализую с помощью протокола RS232 тоесть беру USORT подключаю TX и RX через микросхемку CP2102 ,освоил кое что через приложение терминал сом портов он у меня получает от контроллера. Но по ком порту передаётся 8 ми битная пачка, а мне необходимо передавать 12 бит и вот сдесь я не особо представляю как разбить это число, а потом соеденить его уже в программе на ПК.???
на ПК программу реализую на С#. обязательно прошу любые подсказки и решения это вопроса!!!

5) пятый вопрос. далее получившееся 12 битное число оказавшееся уже в программе для ПК мне неоходимо каким то чудесным образом преобразовать в вольты, и я предполагаю что существует какая то уже написанная библиотека преводящая это число в предельно понятные вольты. Подскажите даже и в это пжлста)

P.S. я уверен что для многих из вас эта задачка на 2 минуты потраченного времени:)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.06.2014, 20:20
Ответы с готовыми решениями:

STemWin на STM32F4. Первый опыт. Вопросы.
Вот, задумавшись о GUI, решил попробовать эту либу. Моё железо - STM32F4 (Dyscovery) и дисплей с Ebay разрешением 800х480 на контроллере...

Сжатие динамического диапазона сигнала,измерение rms,mean,max уровней-как осуществить?
1.В общем,такая цель,уменьшить динамический диапазон сигнала,то есть разницу между максимальным и минимальным уровнем.сигнал выше...

Скрипт автоматической настройки уровней звука
Добрый день господа! Может кто знает, есть ли возможность сделать скрипт по автоматическому выравниванию звука в записывающих...

6
 Аватар для stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
07.06.2014, 21:10
Че-то мутно как-то. Если нужен контроль- возьмите внешнюю многоканальную звуковую карту и контролируйте.
Вопросы и ответы, если приперло делать самому:
1. Зачем одновременно мониторить 32 канала? В эфир сразу сколько идет?
2. Читайте ДШ на контроллер. Если USORT контроллера без кварца работает неустойчиво, значит кварц нужен.
3. Насколько я понимаю, источники нужно мониторить с целью выявления превышения уровня (перегруза). Следовательно, нужен пиковый детектор.
4. 12 бит помещается в 2 байта. Передавайте их по RS232, компьютер разберется.
5. Если вы собрались мерять амплитуду с помощью АЦП, то должны прочитать про уровень напряжения входного сигнала. Он, ЕМНИП, должен быть в пределах 0,7 Вольта. Ограничьте макс отсчет в 1В. Отсюда и считаем.
И это. Коммутатор смените.
0
STM32T
07.06.2014, 21:50
1.да в эфир идёт 32 канала и их необходимо мониторить
2.вопрос именно в том как подсчитать время на которое я буду открывать канал исходя из тактирования
3.возможно ли пиковый детектор реализовать условно с помощью ацп нахождением максимального значения из нескольких измеренных сигналов?
4.с 12 битами я разобрался более менее
5.до коммутатора у меня присутствует схема ограничивающая сигнал до 0,7 вольт. тоесть опорное напряжение на ацп мне следовало бы сделать 1 вольт для большей точности?
на этом коммутаторе необходимо сделать)
 Аватар для stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
07.06.2014, 22:40
Вы бы задачу поподробней описали. Что значит мониторить? Аларм включить при превышении? Или АРУ сделать?
Про время. Представьте, идет у вас фильм. Двое встретились. Молчат. Икс минут молчат. Внезапно: гром и молния, дождь пошел.
0
STM32T
07.06.2014, 23:06
:) я стараюсь как можно подробнее описать)
мониторить тоесть измерять уровень сигнала поочерёдно по каждому каналу и отображать в прогрес баре моего приложения на ПК в децибелах уровень сигнала.
подскажите как мне подсчитать используя SysTick_Homdler что бы у меня ну скажем диод загорался (открывался канал на коммутаторе) на 1 мс, а там уже я буду сравнивать значения измерений и выбирать максимальное и считать его пиком за этот интервал, и отправлять на ПК.
Тоесть я не могу понять как установить правильно эту задержку как посчитать именно для этого контроллера с его собственным генератором какая у него частота. В общем каким образом мне точно узнать что я на 1 мс открываю свой канал.
 Аватар для stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
07.06.2014, 23:15
http://iosyitistromyss.ru/arm-uchebnyj- ... ajmer.html
0
Kooooood
21.06.2014, 19:57
обожаю безумные задания отставшие от жизни на пару 10 летий....

занудствования старпера о вещаниичем опасно превышение уровня сигнала в ЧМ вещании? Кросс-модуляционными помехами.
По этому даже в далекие времена аналогового вещания, в каждом передатчике стоял жесткий лимитер ограничивающий сигнал в допустимых значениях (аналоговый, непрерываного действия)...

у этого лимитера были штатно два выхода -- логический "превышение" и аналоговый "на сколько" -- причем они были с памятью и отдельным "сбросом" -- дабы не было возможности "незаметить"-пропустить факт превышения сигнала.

На сегодняшний день аналоговой доставки сигнала к передатчикам практически нет. Везде цифровое уплотнение, а значит фильтрацию, и ограничение сигнала дешевле всего проводить сразу в цифре задолго до ЦАП передатчика.

Сейчас гораздо интереснее обеспечение вещания согласно современным нормам ITU 1770 -- чего стоит один рекомендуемый индикатор-развертка и учет громкости многоканального звука...

Но если решать "древнюю задачу на новой элементной базе"

в ТЗ должно быть указано --
1) уровень допустимый в попугаях...
2) уровень не допустимый в попугаях+минимальная длительность...

разделив длительность минимум на 2 ты получишь частоту дискретизации для Каждого канала... Ну и время на основной цикл работы контроллера.

это основная цифра которая будет тебе постоянно мешать жить :) ибо в это время надо будет укладывать ВСЕ остальное... Это по программированию...

Если тебе надо будет спаять то тебя ждет еще прикольнее... На каждый канал ты будешь вынужден поставить выпрямитель с "аналоговой памятью" в котором будет накапливаться пиковое значение и хранится до тех пор пока ты его не считаешь. Та еще схема :) особенно если ее место работы, находится в реальных условиях рядом с 32 реальными передатчиками и всеми помехами между собой.... а да кабели для соединения тоже надо учитывать...

В глубокой теории у STM32T100RC --- 21 канал ADC так что в теории ты можешь настроит ADC через DMA и получать блоки данных и так же через DMA UART почти не теряя времени отправлять их в комп... только переключать блоки между собой -- загрузка-отправка..

21 канал и 31 не совпадают напрямую.. надо будет думать... как туда запендорить деление но явно не двумя КР590КН6 :)
Может взять кого-то из этих http://c2n.me/imGqHV ?

чуть чуть занимательной прикладной арифметики -- частота дискретизации компакт диска 44100 = 0.000022676 разделить на 21 канал = 0.000001080
ADC conversion time: 1 ?s at full speed (ADC clocked at 16 MHz)
все совпадения число случайны!!!!

Как правило на этом этапе выясняется что оцифрованные данные превышают скоростные возможности UART и приходится как-то "прореживать" их... и тут начинается самое веселье -- надо обеспечивать чтобы обработка-прореживание блоков укладывалась в ту самую цифру....

Увы и ах работа далеко не соответствует утверждению
эта задачка на 2 минуты потраченного времени:)
все необходимые фрагменты кода легко гуглятся по русски:

https://www.google.com.ua/seorsh?num=10 ... QaZEEac8Bs

https://www.google.com.ua/seorsh?num=10 ... ouh-TkQhOc
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.06.2014, 19:57
Помогаю со студенческими работами здесь

Первый опыт
День добрый форумчане. Имееться конфа УТП 1.0.19.8 типовая, обычное приложение, малость измененная - изменены роли и права и более ничего...

Первый опыт
Приветствую всех! Сильно не бейте, сделал БД Автосалон, нужно для учёбы. Таблицы должны быть нормализованы по 3НФ. Вот не пойму, есть ли...

Моддинг - первый опыт
Здравствуйте, форумчане ! Хотел бы выложить свою первую работу по моддингу и услышать ваше мнение? Просьба не судить строго все таки первый...

Первый опыт с FPGA
Хочу продолжить тему начатую когда-то dmtr. Кратко напишу, что он когда-то сделал - кое-что сохранял из его ответов. beer Сначала...

Первый опыт с OpenGL
Всем привет! Я долго искал ответ на свой вопрос,пробовал и так,и эдак,но никак не получилось у меня. Вопрос прост. У меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru