100602Radio-synt-LC72131

所属分类:DSP编程
开发工具:C++
文件大小:15467KB
下载次数:10
上传日期:2019-10-05 10:12:18
上 传 者Brews
说明:  Lc7213 pll am/fm radio receiver

文件列表:
Radio-synt-LC72131 (0, 2010-06-02)
Radio-synt-LC72131\cmd.c (11240, 2010-06-01)
Radio-synt-LC72131\cmd.h (505, 2010-06-01)
Radio-synt-LC72131\crc16.c (717, 2010-01-08)
Radio-synt-LC72131\crc16.h (52, 2010-01-08)
Radio-synt-LC72131\debug (0, 2010-06-01)
Radio-synt-LC72131\debug\dep (0, 2010-06-01)
Radio-synt-LC72131\debug\Makefile.debug (3517, 2010-05-28)
Radio-synt-LC72131\doc (0, 2010-06-02)
Radio-synt-LC72131\doc\ATmega32.pdf (6443159, 2009-01-04)
Radio-synt-LC72131\doc\ATmega32.png (16010, 2010-05-31)
Radio-synt-LC72131\doc\AVR-USB-MEGA16-LC72131-console.png (18598, 2010-06-01)
Radio-synt-LC72131\doc\AVR-USB-MEGA16-LC72131-overview.vsd (653312, 2010-06-02)
Radio-synt-LC72131\doc\AVR-USB-MEGA16-LC72131-overview1.png (73375, 2010-05-31)
Radio-synt-LC72131\doc\AVR-USB-MEGA16-LC72131-overview2.png (104444, 2010-06-01)
Radio-synt-LC72131\doc\CCB-proto-EN3742A.pdf (97022, 2010-05-17)
Radio-synt-LC72131\doc\LC72131-locked-state-determination-flowchart.vsd (50688, 2010-05-20)
Radio-synt-LC72131\doc\LC72131.c (12121, 2010-05-16)
Radio-synt-LC72131\doc\LC72131.h (3584, 2010-05-16)
Radio-synt-LC72131\doc\LC72131.txt (4719, 2010-05-18)
Radio-synt-LC72131\doc\LC72131board01.png (173158, 2010-05-31)
Radio-synt-LC72131\doc\LC72131M.pdf (418332, 2009-03-08)
Radio-synt-LC72131\doc\LC72131sch1.png (78196, 2010-05-16)
Radio-synt-LC72131\doc\LC72131sch2.png (108570, 2010-05-16)
Radio-synt-LC72131\doc\r45 (0, 2010-05-28)
Radio-synt-LC72131\doc\r45\debug (0, 2010-05-28)
Radio-synt-LC72131\doc\r45\debug\dep (0, 2010-05-28)
Radio-synt-LC72131\doc\r45\debug\dep\rcv45v2-mt10t7-v02.o.d (2519, 2010-05-25)
Radio-synt-LC72131\doc\r45\debug\Makefile.debug (2557, 2010-05-25)
Radio-synt-LC72131\doc\r45\debug\r45.eep (13, 2010-05-25)
Radio-synt-LC72131\doc\r45\debug\r45.elf (45037, 2010-05-25)
Radio-synt-LC72131\doc\r45\debug\r45.hex (44384, 2010-05-25)
Radio-synt-LC72131\doc\r45\debug\r45.lss (333232, 2010-05-25)
Radio-synt-LC72131\doc\r45\debug\rcv45v2-mt10t7-v02.o (77332, 2010-05-25)
Radio-synt-LC72131\doc\r45\r45.aps (3317, 2010-05-25)
Radio-synt-LC72131\doc\r45\r45.aws (225, 2010-05-25)
Radio-synt-LC72131\doc\r45\r45.elf (45037, 2010-05-25)
Radio-synt-LC72131\doc\r45\rcv45v2-mt10t7-v02.c (47164, 2010-05-25)
Radio-synt-LC72131\doc\rx-es20.pdf (5383528, 2009-03-15)
... ...

15 Мая 2010 Давно думал о том, чтобы собрать на синтезаторе частоты какой-нибудь приемничек. Мне попалась платка от раскуроченной старой магнитолы RX-ES20. В ней использовался приемник с синтезатором LC72131. В этот синтезатор встроен так же частотомер. Что я хотел бы получить от проектируемого приемника? 1. Установку частоты синтезатора (Synth Freq) на нужную частоту (ffffffff - частота в Гц). SF=ffffffff 2. Прочитать частоту синтезатора. SF 3. Прочитать частоту с частотометра. F 4. Установить состояние выходных портов (bbbb - двоичное состояние выходных разрядов портов): P=bbbb 5. Считать состояние входных портов: P? 6. Получить общую информацию. I 7. Показать uptime T 8. Подсказка. ? Все эти текстовые команды будут, как обычно, выдаваться через текстовую консоль виртуального COM-порта (на основе библиотеки V-USB и класса CDC). Попытался поуправлять LC72131 и считать с неё данные, но что-то пока работает очень криво. ----------------------------------------------------------------------------------------- 25 мая 2010 Вчера нашел в Интернете исходник связного самодельного приемника P45 40..855 МГц (rcv45v2-mt10t7-v02.c, см. doc\р-45-atmega8-LC72131), в котором применяется ATmega8 и в качестве синтезатора LC72131, чему был несказанно обрадован. Сделал по него проект (правда, для отладки пришлось проц выбрать ATmega16, иначе код без оптимизации не лез в память ATmega8). Начал разбираться, где там управление синтезатором. [Порты] PD6 CS_PLL (на схеме) CE (выборка кристалла LC72131), при старте программы 0 PB5 SCK/CLK (на схеме) CL (строб ввода бит данных кристалла LC72131), при старте программы 0 PB3 MOSI/DATA (на схеме) DI (биты данных на входе кристалла LC72131), при старте программы 0 Данные выводятся в микросхему LC72131 с помощью вызова SetFrcv(); -> Lc72131Set(); -> BusOutH2L(LC72131_IN1), BusOutL2H(LoBYTE(fPCH2)); BusOutL2H(HiBYTE(fPCH2)); Алгоритм такой (Lc72131Set()): [НАЧАЛО] Сначала выставляется PLL: 1. Исходно CE равно 0. 2. BusOutH2L(LC72131_IN1) вдвигает данные адреса в LC72131. 3. CE переводится в 1. 4. Вдвигаются еще 24 бита: BusOutL2H(LoBYTE(fPCH2)); BusOutL2H(HiBYTE(fPCH2)); BusOutH2L(cnt); // 0x95 -> 5kHz 5. CE возвращается в 0. Теперь выводятся состояния ножек BO1..BO4 (используются только BO2..BO4), точно так же (повторяются шаги 1..5), только адрес другой, LC72131_IN2: BusOutH2L(LC72131_IN2); SetBit(LC72131_Port,LC72131_Load); flagBo = Mod4Lc72131[Modulation]; if(!FlagMute) { flagBo |= 0x04; } BusOutH2L(flagBo); //данные портов BOx BusOutH2L(0x00); //DNC DOC0 DOC1 DOC2 UL0 UL1 DZ0 DZ1 BusOutH2L(0x08); //GT0 GT1 TBC DLC IFS TEST0 TEST1 TEST2 ClrBit(LC72131_Port,LC72131_Load); [КОНЕЦ] Теперь можно это применить в своем проекте. ----------------------------------------------------------------------------------------- 26 мая 2010 Наконец-то заработала установка портов BOx и установка делителя частоты N. Теперь надо проверить, как читается IO1. ----------------------------------------------------------------------------------------- 26 мая 2010 Начал думать, как переключать режим синтезатора при перестройке по диапазону. Варианты: 1. Можно было бы ввести команды включения режима (типа ДВ, СВ, КВ, УКВ), и в каждом режиме переключать биты DVS, SNS, R0..R3, выход BO1. 2. Частотных диапазонов нет. Вводимая частота анализируется, и в зависимости от неё вычисляются нужные значения DVS, SNS, R0..R3, выхода BO1. Мне больше нравится вариант 2. Предполагаемый принцип работы: - частота вводится цифрами напрямую, в килогерцах, в формате float (возможны два символа после запятой). - внутри вводятся поддиапазоны, вход в которые зависит от введенной частоты. В этих поддиапазонах происходит перенастройка DVS, SNS, R0..R3, выхода BO1 и коэффициента деления частоты N. - те параметры, которые были изменены, выводятся. Если не было никаких изменений, то ничего не выводится. Наверное нужно настроить биты DOC0..DOC2 так, чтобы определять состояние разблокировки (DOC0=1, DOC1 и DOC2 равны 0) через вывод DO. Частота промежуточной частоты 10.7 МГц (BO1 в лог. 1) и 459 кГц (BO1 в лог. 0). Применяются фильтры: - для AM CF4 RLFCFA459L4B (керамический на 459 кГц). - для FM CF1 RLFFETNL02AL (керамический на 10.7 МГЦ) и CF3 RLFDFT20AL (для дискриминатора FM, или частотного детектора). К сожалению, похоже что запустить приемник на КВ не получится, он рассчитан только на средние волны и УКВ. Диапазоны частот магнитолы RX-ES20: - AM 522..1629 кГц, шаг перестройки 9 кГц, ПЧ 459 кГц. - FM 87.5..108 МГц, шаг перестройки 50 кГц, ПЧ 10.7 МГц. ----------------------------------------------------------------------------------------- 28 мая 2010 Подчистил main.c, больше ничего не менял. Добавил код, который считывает частоту в килогерцах из командной строки (формат с плавающей запятой), и устанавливает eeprm.freq. Теперь надо написать код, который настраивает приемник (TuneRadio). ----------------------------------------------------------------------------------------- 30 мая 2010 Заработал код TuneRadio. Заметил, что реальная частота настройки на FM отличается в минус 100 кГц. Например, "Юмор FM" работает на 88.7 МГц, а мне надо указывать 88.6 МГц. Другие несоответствия: Радио "Карнавал" реально 92.8, а у меня 90.05 Радио "Звезда" реально 95.6, а у меня 92.8 Сделал изменение частоты стрелочками вверх и вниз. Переделал установку портов BOx, теперь ножка BO1 управляется независимо от остальных ножек. B02 включает режим стерео (BO2=1 стерео, BO2=0 моно). Проверил работу индикатора стереоприема у микросхемы IC1 TA2008AN, выход ST_IND, ножка 10. Она подключена к ножке IO1 (ножка 11) микросхемы синтезатора IC2 LC72131D. Если переключить выход DO (ножка 6) микросхемы синтезатора LC72131D в режим индикации состояния входа IO1 (биты DOC2..DOC0 равны 101), то на выходе DO можно читать - стереорадиостанция, или нет - если прочитан 0, значит принимается стерео, если 1, то моно. При переключении в режим моно (BO2=0) выход DO всегда читается как 1 (моно). Теперь надо сделать измерение частоты и индикацию изменения параметров. Сделал измеритель частоты (DOPolling), только он почему-то не меряет точно частоту настройки. Наверное - из-за слишком слабого уровня сигнала, или я в чем-то не разобрался. Сделал вывод информации по внутреннему состоянию LC72131 (LC72131info). ----------------------------------------------------------------------------------------- 31 мая 2010 Теперь команды можно вводить в любом регистре. Устранил переполнение кольцевого буфера ввода, когда в консоли постоянно жмем стрелку вверх или стрелку вниз (перестройка по частоте вверх и вниз), добавив функцию CutAutorepeats. Сделал ввод значений для команды P= в двоичном виде, отладил. Сделал правильный вывод команд P и I. Команда P выводит состояние портов, а I выводит состояние бит, которые пишутся в LC72131. Так и не разобрался, почему состояние входов портов IO2 и IO1 читаются одинаково. Например, если включается стереоприем, то по команде P оба бита читаются I2=0 и I1=0, а в режиме моно оба бита I2=1 и I1=1. Сделал команду S (SAVE), которая сохраняет частоту настройки и состояние портов BOx. Теперь осталось сделать команду смены бит ULx и DZx, и сделать их сохранение в EEPROM. Это для того, чтобы поиграться с ними и понять, на что влияют. ----------------------------------------------------------------------------------------- 1 июня 2010 Подкорректировал константу TCNT1_1MS, чтобы она правильно вычислялась и для кварца ATmega32 и для 16 МГц, и для 12 МГц. Добавил команды UL= и DZ= для изменения бит UL1, UL0, DZ1, DZ0. Добавил конфигурацию release. Компилирование в release: Program: 17700 bytes (54.0% Full) Data: 1083 bytes (52.9% Full) Компилирование в debug: Program: 23826 bytes (72.7% Full) Data: 1083 bytes (52.9% Full) Уменьшил rx_usb с 256 до *** байт. Так как шаг перестройки никогда не бывает меньше 1 кГц, убрал возможность ввода частоты с помощью числа с плавающей запятой - теперь вводится только целое число в кГц. После этого размер кода резко уменьшился, и влезает теперь при компиляции release в ATmega16 (хотя включена полная версия sprintf/scanf). В режиме release в процедуре BusPause (для формирования длительностей импульсов на шине CCB LC72131) пришлось увеличить задержку до _delay_us(8), хотя в режиме debug все работало с _delay_us(1). С чем пока не удалось разобраться: 1. В диапазоне УКВ реальная частота приема отличается от ожидаемой на 2.8 МГц в большую сторону. Грешу на неисправность полосового фильтра ПЧ (10.7 МГц). 2. Не удалось запустить частотомер, и было лень разбираться. Измеряемая частота почему-то скачет, нет стабильных показаний. 3. Чуствительность приемника очень плохая - на MW ловит только одну станцию (550 кГц), а на FM ловит много, но качество плохое, звук с шумом и свистом. Почему - непонятно. Вроде бы узел на ATmega32 не создает помех (пробовал отключать, это никак не влияет). 4. Порты IO2 и IO1, которые работают как входы, читаются одинаково. Например, сигнал, проходящий на порт IO1 (это сигнал стереоприема), проходит сразу и на порт IO2, если читать его через режим IN2. ----------------------------------------------------------------------------------------- 2 июня 2010 Поменял USB_CFG_VENDOR_NAME на microsin.ru, USB_CFG_DEVICE_NAME на LC72131-USB, USB_CFG_SERIAL_NUMBER на 2010-jun-02.

近期下载者

相关文件


收藏者