Есть идея применить STM32F4discovery для пиратского вещания. Эта плата при невысокой цене в 600-900 рублей за готовое изделие может а) использоваться как кодер MPX, RDS с входом USB (как USB звуковая карта и COM-порт в одном лице) б) софтовый декодер MP3 (ретранслятор веб- или спутниковой радиостанции в эфир) в) законченный узел управления передатчиком, с выходом цифрового сигнала на DDS или на ЦАП. USB-кодер выложу на этой неделе, уже начал писать софт под него. Схем не будет, т.к. используется ГОТОВАЯ плата, синтезатор к ней подключайте по вкусу. Можно написать управление сразу всеми ими (LM7001, LC72131, LMX2306, TSA5511, SAA1057), нужны только обладатели таких синтезаторов для тестирования. У самого есть LC72131, LM7001, SAA1057, проверять буду на них. Есть у кого нибудь такая плата (STM32F4discovery) на руках или возможность ее приобрести и синтезатор/передатчик? Приглашаю участвовать в тестировании прошивки. Софт в плату заливается по USB, программатор в ней встроенный, ничего паять не нужно особо :-)
Что касается индикации, индикатор туда приспособить проблем нету, но поскольку USB предполагает наличие компа или роутера рядом - проще написать приложения для компа и управлять через виртуальный COM-порт по тому же самому интерфейсу USB. Есть наработки по прикручиванию туда эзернета -> будет удаленное управление и индикация через веб-браузер. Правда, для эзернета необходим внешний PHY (микросхема физического уровня сети, например, DP83848 или RTL8201) и трансформатор - можно запаять самому, можно купить модуль у китайцев. Под USB-звуковуху есть готовые драйвера в ОС Linux в прошивке OpenWRT - то есть, подключив передатчик в роутер c USB портом и прошивкой OpenWRT, можем хоть оптику к передатчику тянуть, хоть по вайфаю с вышкой соединиться (хоть по витой паре все подать - и питание, и сигнал - прямо на крышу к антенне).
Получив блок звука на заданной частоте дискретизации от компа, передискретизировать его на кратную частоту (скажем, 44100 -> 44100*6=264600 Гц) и рассчитывать MPX сигнал. Пилот-тон и модуляцию рассчитывать софтовым DDS с помощью быстрых алгоритмов расчета синуса (например, табличный или полиноминальный). Далее настраивается DMA на этот блок звуковых отсчетов - и ждем следующего события (приема следующего блока отсчетов по USB). Обьем памяти STM32F4 позволит буферизовать 100...200 мсек звука для исключения спотыканий от неравномерной передачи по USB. Вывод сигнала, что на DDS, что на встроенный ЦАП, что на внешний ЦАП по I2S ничем не отличается - настроил DMA и жди окончания передачи, отличается только периферийное выходное устройство.
Демо-проект от ST "USB-звуковуха" запел почти как надо. Пока что с небольшими заиканиями. Есть догадки откуда они берутся, проверю, устраню - выложу что получилось. Среда разработки - бесплатная CoIDE,шью в ней же. Надо 2 кабеля - по mini-usb питание и прошивка, по micro - собсно интерфейс с компом. Стереовыход - в стандартном гнезде наушников. MPX пока смотрю как выводить.
Группа: Cоучастник
Сообщений: 1775
Пользователь №: 69347
Регистрация: 10-August 10
Место жительства: Україна
Очень вовремя, я тоже пару дней назад решил замутить что-то на stm32f4 Но пока болею просто читаю мануалы) Я планирую сначала сделать аналоговый вход, а потом добавить цифровой. Но управление мне приоритетней автономное(дисплей, кнопки или энкодер)
Группа: Cоучастник
Сообщений: 6612
Пользователь №: 25249
Регистрация: 18-October 07
Место жительства: Село Кубинка
QUOTE (Ferrum-1827 @ Dec 23 2013, 09:13 PM)
В идеале - остаётся только хороший ВЧ модулятор. Оный имеется от Павлика (мостового типа)
Всё-таки сделал схему ЗГ с последовательным задающим контуром. Качество модуляции вообще бесподобное. Один в один с оригиналом! И, главное, шумов вообще нет. Есть нюансы конечно, но они реализуемы. Поподробнее о схеме позже. Комп полетел к чертям, собираю новый сейчас, некогда пока.
Интересную штуку обнаружил: когда usb-звуковая передает в комп единственную частоту дискретизации, которую она поддерживает, передискретизацию на нее выполняет комп. Т.е. выбрав кратную частоту, скажем, 76000 гц, можно кодер здорово упростить :-) в программной части. Программу выложуна выходных, пока не удается нормально посидеть за компом дома.
небольшая заминка... делаю управление синтезом на SAA1057 на этом же STMе, синтез на команды управления не реагирует. Пробую софтовый и аппаратный SPI... как заведу синтез, продолжу с кодером.
Все будет, только до минимально работоспособного варианта доделаю, чтобы стерео заработало и управление синтезом. Вся ночь впереди :-)) и праздники еще Сейчас вот в таком виде все: СкачатьUSB_STM32F4.zip Проект находится в папке my_audio_usb
Это сообщение отредактировал romanetz - Dec 30 2013, 09:08 PM
Группа: Cоучастник
Сообщений: 1775
Пользователь №: 69347
Регистрация: 10-August 10
Место жительства: Україна
у меня на днях только появилась эта платка, седня пытался сделать стереокодер с использованием ацп->цап(внутреннего). Вроде работает, только ацп не могу нормально настроить на 2 канала. А так то пилот-тон есть, звук модулируется 38 килогерцами, спектр похож на то что надо )
Вот здесь лежит библиотека от ST, там есть пример одновременной работы двух каналов ADC (папка \Project\STM32F4xx_StdPeriph_Examples\ADC\DualADC_RegulSimu_DMAmode1), все же АЦП у STM 12-ти битный однополярный (еще минус один бит на постоянную составляющую) STM32F4 DSP and standard peripherals library [offtop]Я заморочился именно на вход от USB чтобы устранить связку АЦП и ЦАП с выхода компа в тракте. Таким образом, добавив DDS можно получить полностью цифровой тракт.[/offtop]
Это сообщение отредактировал romanetz - Dec 30 2013, 09:55 PM
Просьба проверить у кого есть синтез на lc72131: PB15 - DI LC72131 PB10 - CL LC72131 PC2 - CE LC72131 Частота 101.0. /* У меня управление проходит, но захвата нет ни в какую. Кварц на LC-шке генерит, на входе ВЧ полвольта амплитуды, ГУН - резистором - строится на эту частоту. Плата - комбайн Егеря на BA1404, используется только ВЧ часть. логического анализатора - нету, это последнее средство будет... */ Все ОК, есть захват - проблема была в сопливом монтаже. Буду пилить кодер :-) tarasian666, поделись как у тебя алгоритм кодирования сделан? По отсчетам кодируешь или блок целиком и запускаешь через DMA? Если блок целиком - можно еще туда фильтр 15 кГц вкрутить и преэмфазис...
Это сообщение отредактировал romanetz - Jan 2 2014, 02:25 PM
Группа: Cоучастник
Сообщений: 1775
Пользователь №: 69347
Регистрация: 10-August 10
Место жительства: Україна
Интересный прикол, если делать по правильному, по формуле то разделение капитально страдает на 1 канал, а если по методу "поочередно пускать то левый то правый с частотой 38кгц" то тогда все зашибись
Расчет специально делал в целых числах - с прицелом на портирование на STM32F1xx серию - она дешевле и есть в малоногих корпусах. LUT[LUTSIZE] - таблица значений синуса по формуле LUT[i]=32767*sin(i*2*pi/LUTSIZE), посчитанная заранее в экселе
Это сообщение отредактировал romanetz - Jan 3 2014, 05:48 AM
Sin19p должен быть от 2047-184 до 2047+184 - т.е.смещение пол диапазона ЦАПа, аналогично и все сигналы надо просчитать пару отсчетов вручную и сравнить со значениями в отладчике. Сдается мне, косяк в постоянной составляющей, оттого и нет разделения. Чуть позже выложу проект с работающим кодированием. Принимаю, кстати, на rtl2832
Это сообщение отредактировал romanetz - Jan 3 2014, 05:23 PM