Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega8 + lmx2326
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
pavel-pervomaysk
Нужно для себя сделать универсальный синтезатор 100 MHz - 2 GHz , почитал доку на 2326 полоса 0,1 МГц- 2,8ГГц . Надеюсь хватит с запасом по верхней частоте .

Возникла проблема с пересчетом для данного pll lmx2326 . Глянул ДШ на нее но не совсем понятно

К примеру есть формула пересчета

fvco = [(P x cool.gif + A] x fosc/R // частота ГУНа считается по формуле

B: Preset divide ratio of binary 13-bit programmable counter (3 to 8191) \\ что выставляется здесь

A: Preset divide ratio of binary 5-bit swallow counter (0 £ A £ 31; A £ B for LMX2326) \\ что выставляется здесь

fosc: Частота опорного генератора к примеру 10 МГц

R: Preset divide ratio of binary 14-bit programmable reference counter (3 to 16383) предделитель утановки частоты

P: Preset modulus of dual modulus prescaler // LMX2326; P = 32


Частота гуна = [(32x8191)+31] x 10000000/3 = 262 143 x 3333333.3 = 873 810 000 Это получается унас частота ГУНа , но почему то линнейного пересчета вкурить не могу . sad.gif .

Буду рад пинку в нужную сторону
_Pasha
Цитата(Павлик @ Feb 20 2009, 11:53) *
Буду рад пинку в нужную сторону

Я бы находил приближение fvco/fosc с помощью цепных дробей. Формулы, правда, не помню. Поищите.


Как только Вы нашли целые числитель и знаменатель дроби, удовлетворяющей требуемой погрешности, решайте дальше соотношение для числителя и наслаждайтесь гигагерцами smile.gif
Сергей Борщ
Выбираете шаг перестройки. Это будет Fref. Рассчитываете R: R = Fosc / Fref.

Находите коэф. деления N нужной вам частоты: N = Fvco / Fref.

5 младших бит получившегося числа будет А. Следующие 13 будут B.

P = 2^5 = 32, те самые 5 бит A. Все число N = P * B + A
=GM=
Цитата(Павлик @ Feb 20 2009, 08:53) *
Частота гуна = [(32x8191)+31] x 10000000/3 = 262 143 x 3333333.3 = 873 810 000 Это получается унас частота ГУНа , но почему то линейного пересчета вкурить не могу. Буду рад пинку в нужную сторону

Ну, получите. Частота гуна у вас 873 810 000 000 или вгрубе 873 ГГц.

Стоит частоту сравнения выбрать поменьше, скажем fREF/10000=10 кГц, тогда при А=0, В=6250, Р=32 fГУН=2 000 000 кГц
pavel-pervomaysk
>>Выбираете шаг перестройки. Это будет Fref. Рассчитываете R: R = Fosc / Fref.

К примеру у меня опорник ( Fosc) будет 10,240 МГц (как делают многие), шаг сетки (Fref) 5 кГц считаем
10240 / 5 = 2048 DEC -> 0x800 hex
R = 0x800

>>Находите коэф. деления N нужной вам частоты: N = Fvco / Fref.

Нужно получить частоту ГУНа (Fvco) 100 МГц 100000 / 5 = 20000 dec -> 0x4E20 hex

>>5 младших бит получившегося числа будет А. Следующие 13 будут B.

0x4E20 = 0b 0100 1110 001 0 0000
B A
A = 0 0000
B = 010 0111 0001 = 625 dec = 0x271

>>P = 2^5 = 32, те самые 5 бит A. Все число N = P * B + A

P = 32
N = 32 * 625 + 0 = 20000 dec = 0x4E20

С этим понятно , теперь идем к выводу информации в LMX2316/26

R = 0x800 его мы заносим в 14-BIT PROGRAMMABLE REFERENCE DIVIDER RATIO (R COUNTER)

Посылка первый 21 бит

биты 1 2 - контрольные биты = 0 , биты 1 2 3 4 5 6 7 8 9 10 11 12 13 14 = R COUNTER = в данном случае 0х800 ,

биты 15 16 17 18 должны быть 0 в нормальном режиме ,

бит 19 MSB не понятно 0 или 1 писать в него .

Затем посылка следующих 21 бит


биты 1 2 - контрольные биты = 0 , биты 1 2 3 4 5 = А и тоже = 0 , биты 6 7 8 9 10 11 12 13 14 15 16 17 18 = числу В = 0 0010 0111 0001 (добавляем 2 нуля в старшие разряды )

бит 19 MSB не понятно 0 или 1 писать в него .


В принципе вот такой расчет вывел из предложения выше , спасибо за подсказку , теперь надо проверить это на железе , и остается вопрос правильно ли все я понял и MSB не понятно 0 или 1 писать в него ? .

CODE
out_lmx:

mov r29, r19
rcall out_byte
mov r29, r20
rcall out_byte
mov r29, r21
rcall out_byte
nop
nop
nop
sbi PORTB,CE
sbi PORTB,CE
nop
nop
cbi PORTB,CE
cbi PORTB,CE
nop
nop
ret




out_byte:
ldi r28, 8
otb:
clc
rol r29
brcc dat_0
sbi PORTB,DAT
rjmp pulse

dat_0:
cbi PORTB,DAT
pulse:
nop
nop
sbi PORTB,CLOCK
nop
nop
cbi PORTB,CLOCK
nop
nop
dec r28
brne otb
ret


Вот так вот получилось в плане вывода .
=GM=
Цитата(Павлик @ Feb 20 2009, 16:25) *
Вот так вот получилось в плане вывода

Учтите, выводить нужно 21 бит, а не 24 как у вас, а СЕ=0 должно стоять перед началом вывода бит. Ну и команда CLC в принципе не нужна.

Перед началом работы не забудьте проинициализировать все необходимые биты.
Сергей Борщ
Цитата(=GM= @ Feb 20 2009, 19:44) *
Учтите, выводить нужно 21 бит, а не 24 как у вас, а СЕ=0 должно стоять перед началом вывода бит.
Не обязательно. Защелкнутся последние 21 бит. Запись происходит по фронту CE, где будет срез - абсолютно не важно(картина 1.4). Я гружу LMX2332 обоими способами.

Цитата(Павлик @ Feb 20 2009, 18:25) *
бит 19 MSB не понятно 0 или 1 писать в него .
Раздел 1.3.2. Если я правильно его понял - зависит от того, по каким критериям вы хотите оценивать факт захвата.
Цитата(Павлик @ Feb 20 2009, 18:25) *
бит 19 MSB не понятно 0 или 1 писать в него .
А это зависит от вашей реализации захвата: будете использовать быстрый захват - записываете 1, ждете захвата, записываете 0. Не будете - записываете 0 сразу. Раздел 1.3.4.
И не забудьте прописать регистр F.
P.S. Я работал с LMX2332 и PMB2306. По вашему LMX2326 могу подсказать только то, что можно прочесть в даташите.

Да, и выводить можно сразу три байта в одном цикле:
CODE
LoadSynth:
LDI R20,19
LoadCycle:
off(SYNTH_CLK)

SBRC R18,3 ; if(Value & (1L << 18)
on(SYNTH_DATA)
SBRS R18,3 ; else
off(SYNTH_DATA)

on(SYNTH_CLK)
LSL R16
ROL R17 ; Value <<= 1;
ROL R18
DEC R20
BRNE LoadCycle

on(SYNTH_LOAD)
off(SYNTH_LOAD)
RET
pavel-pervomaysk
Понял насчет количества бит , спасибо .
Сейчас поиграюсь с lmx2316 . 2326 увы нет пока , еще не приехали , о результатах отпишусь .
=GM=
Цитата(Сергей Борщ @ Feb 20 2009, 18:58) *
Не обязательно. Защелкнутся последние 21 бит. Запись происходит по фронту CE, где будет срез - абсолютно не важно(картина 1.4)

Скорее всего можно выдвигать 24 бита, хотя я вот недавно столкнулся с цапом с последовательным вводом, где перезапись идёт либо по приходу 16 бит, либо по фронту LE.

Вы-то сами почему в своей программе выдвигаете 19 бит, а не 21? Считаете, что всё равно запишется куда надо (:-)?
pavel-pervomaysk
Да все должно работать , смотрел схему и пробовал в действии от любительской р-станции 144 / 430 МГц там LMX2316 подключена на шину индикатора 1602 и еще 24С04 линия SDA там висит управление строба отдельно и все работает . Так что все свазанно верно .
Сергей Борщ
Цитата(=GM= @ Feb 21 2009, 01:40) *
Вы-то сами почему в своей программе выдвигаете 19 бит, а не 21? Считаете, что всё равно запишется куда надо (:-)?
Потому что в даташите указан размер регистров 19 бит.
pavel-pervomaysk
Для LMX2306 получилось так , приедет образец 2326 , разберусь уже и с ним .

Частота опорного генератора 10000 кГц

расчитываем число для установки состояния ( R counter )


а) 10000 / 2,5 = 4000 -> 0x0FA0

Сдвигаем число в лево 2 раза для вывода в LMX2306

0x0FA0 = << 2 = 0x3E80

выводим первое значение

б) выходная частота ГУНа должна быть 20000 кГц

шаг сетки 2500 гц / 2,5 кГц

20000 / 2,5 = 8000 переводим его в хекс -> 0x1F40

Сдвигаем число в лево 2 раза для вывода в LMX2306

0x1F40 = << 2 = 0x7D00

выводим второе значение

в) инит LMX2306

устанавливаем контрольный бит С2 и контрольный бит поляризации F6

получается число 0х0082

выводим третье значение и все на этом посылка закончена


Спасибо всем , Сергей Борщ a14.gif

Тема решена .
pavel-pervomaysk
Вернусь опять к своей теме , возник очень интерестный для меня вопрос.

Написал перекодировку частоты для вывода на ЖКИ , работает без проблем на микросхемах lmx2316 , а вот lmx2326 ни в какую не хочет работать sad.gif , привожу схему включения ниже.

Подаю по 3 байта в 3 захода.

0x00, 0x40, 0x08 control bits 00

Частота ГУНа 400 МГц , Сетка 2,5кГц

0x09, 0xC4, 0x01 control bits 01

выбираем поляризацию настройки ГУНа битом 6 ( сдвинуто на 2 )

0x00, 0x00, 0x82 control bits 10

Вот в ступоре или микросхема дохлая попалась , или во мне проблема. Смущает еще то , что 2316 работает без проблем , а в даташите все что я перевел , особых отличий кроме диапазона частоты я не увидел.

Еще прикрепляю скан вывода данных из проца.


Нажмите для просмотра прикрепленного файла
Genadi Zawidowski
Вот тут есть пример работы (с исходниками) - http://www.thegleam.com/ke5fx/synth.html

Или здесь - http://forum.cqham.ru/viewtopic.php?p=2741...d9c50120#274192
В аттачменте к тому сообщению файл lmx2306.c - работающий. Для lmx2316 и других - другое значение для учета прескалера пропишите в программе.

Ну и вообще - шаг 5 кГц на трех гигагерцах частоте пр частоте сравнения 5 кГц? А качество кого-нибудь интересует? Скорость перестройки? В статье John Miles описывается довольно распространенный сейчас принцип - с объяснениями зачем и почему так стоит делать.

Вот еще - работающий у меня проект прескалера к частотомеру - там используется LMX2306 + ATMega8
Канал rf программируется на деление в 24 раза и его выход подключается к многофункциональному выводу микросхемы.
pavel-pervomaysk
Все это хорошо , но 2306 и 2316 и у меня прекрасно работают , меня интересует именно почему 2326 не работает , и где именно про прескаллер пишут не нашел в даташите , или 5 бит первых это и есть прескаллер ?
В Си я не силен , пишу на асме , с примеров мало чего понял .
Genadi Zawidowski
Цитата(Павлик @ Mar 28 2009, 18:37) *
Все это хорошо , но 2306 и 2316 и у меня прекрасно работают , меня интересует именно почему 2326 не работает , и где именно про прескаллер пишут не нашел в даташите , или 5 бит первых это и есть прескаллер ?
В Си я не силен , пишу на асме , с примеров мало чего понял .


Даташит, страница 8 - инструкция по образованию управляющего слова.

1.2.3 Pulse Swallow Function
...
Preset modulus of dual modulus prescaler
for the LMX2306; P = 8 for the LMX2316/26; P = 32

Попробуйте запрограммировать на выход для контроля - на сколько же в самом деле делит делтель.
Да, после программирования делителя опоры до загрузки делителя osc работать н ебудет (в инструкции об этом написано).

С примеров... мне в свое время очень помогли примеры от John Miles, надеюсь, вам независимо от языка программирования могут тоже помочь.
Или попробуйте скомпилировать то, что я прислал, убедиться что работает - и начать модифицировать. Для компиляции нужен WinAVR и студия.

Если настолько плохо - http://www.national.com/vcm/NSC_Content/Fi...oader4Setup.exe
(http://www.national.com/analog/timing/codeloader) вам может помочь выяснить, где причина неработы.
pavel-pervomaysk
LMX2316/26; P = 32 вот же оно , если 2316 работает корректно , это меня и смущает , щас еще попробую то что посоветовали. Спасибо.
Genadi Zawidowski
Да, codeloader только при английской локали работает. Посмотрите, не отличается ли кодовое слово для разных типов микросхем при выбранных Вами параметрах.
pavel-pervomaysk
Скачал версию которая 16,1мб , работает , но нужных микросхем в списке и чего-то вразумительного не нашел.
Онлайн синтезы на сайте производителя тоже почему-то не дают настройки под микросхемы. Только параметры и схемы включения. В даташите то написанно (между строк) , но я не понимаю.

В общем нашел людей которые делали устройства именно на lmx2326 , сказали что меняются 1 в 1 и ничего переделывать не нужно , прийдется купить еще микросхему и проверить ее.
Пока отбой. laughing.gif

В общем нашел людей которые делали устройства именно на lmx2326 , сказали что меняются 1 в 1 и ничего переделывать не нужно , прийдется купить еще микросхему и проверить ее.
Пока отбой. laughing.gif
Genadi Zawidowski
Цитата(Павлик @ Mar 28 2009, 20:36) *
Скачал версию которая 16,1мб , работает , но нужных микросхем в списке и чего-то вразумительного не нашел.
Онлайн синтезы на сайте производителя тоже почему-то не дают настройки под микросхемы. Только параметры и схемы включения. В даташите то написанно (между строк) , но я не понимаю.

В общем нашел людей которые делали устройства именно на lmx2326 , сказали что меняются 1 в 1 и ничего переделывать не нужно , прийдется купить еще микросхему и проверить ее.
Пока отбой. laughing.gif

В общем нашел людей которые делали устройства именно на lmx2326 , сказали что меняются 1 в 1 и ничего переделывать не нужно , прийдется купить еще микросхему и проверить ее.
Пока отбой. laughing.gif



По указанной мною ссылке качаается версия, в которой есть эти чипы... Ждем результата. А вылетать (битые входы) они любят... с ADF411* такого не происходит.
Сергей Борщ
Цитата(Genadi Zawidowski @ Mar 28 2009, 22:34) *
А вылетать (битые входы) они любят...
На LMX2332 выпущено более 10000 передатчиков за 4 года. Не могу вспомнить ни одного отказа синтезатора.
Genadi Zawidowski
Цитата(Сергей Борщ @ Mar 29 2009, 04:05) *
На LMX2332 выпущено более 10000 передатчиков за 4 года. Не могу вспомнить ни одного отказа синтезатора.

так я про устойчивость к потенциалу между незаземленным паяльником и незаземленной (точнее, приобщепроводенной к компютеру) платой. Тут не всякая мкросхема выдержит... Именно в таких условиях были вылеты. Одному из ушедьших в мир иной экземпляров LMX2306 +30 dBm на вход пришло. Или побольше...
Сергей Борщ
Цитата(Genadi Zawidowski @ Mar 29 2009, 11:45) *
так я про устойчивость к потенциалу между незаземленным паяльником и незаземленной
Ууу..."А вы его дустом пробовали?". Вы превысили максимально допустимые значения параметров. Можно предположить, что они также не переносят удары молотком. Разговор неконструктивный. 
Genadi Zawidowski
Цитата(Сергей Борщ @ Mar 29 2009, 18:39) *
Ууу..."А вы его дустом пробовали?". Вы превысили максимально допустимые значения параметров. Можно предположить, что они также не переносят удары молотком. Разговор неконструктивный. 


да пошутил я насчет массового вылета... Гипербола, так сказать. Пара раз попало с выхода самовозбудившегося усилителя... Но во всех случаях, когда не работало, простая замена решала проблмы.... В случае Павлик еще есть "вопрос" с непонятно как работающей программой...
pavel-pervomaysk
Программа работает нормально , все расчитал по формуле , я же писал что делаю коррекцию 2306 работает , опять корректирую и 2316 работает. 2326 ни в какую , вот и думаю что брак попался , люди пишут что вместо 16й стает 1 в 1 , подождем дабы не разносить тему на 20 страниц.
pavel-pervomaysk
В общем купил еще пару экземпляров , ведут себя все одинаково. Меняю бит поляризации , то постоянно + на выходе управления то 0 , больше ничего толкового нету. Зашел в тупик пока sad.gif.
Сергей Борщ
Цитата(Павлик @ Apr 8 2009, 23:43) *
Меняю бит поляризации , то постоянно + на выходе управления то 0 , больше ничего толкового нету. Зашел в тупик пока sad.gif .
Выкладывайте код, посмотрим вместе.
pavel-pervomaysk
Вот собственно код вывода данных в синтез , как я уже писал lmx2316 работает без проблем с этим кодом

CODE

syntez:
ldi tx_h,0x00 // 10240
ldi tx_m,0x40 // (control bits = 00)
ldi tx_l,0x00 // 10240 / 2.5 = 4096 = 1000H <<2 = 4000
rcall outwrd //


lds tx_h,t_h // h byteload frequency Частота ГУНа / частоту сетки = 3 байта слова
lds tx_m,t_m // m byte // 100 000 / 2,5 = 40 000 = 0х00 9С 40
lds tx_l,t_l // l byte


tx_tx: //
clc //
rol tx_l //
rol tx_m //
rol tx_h //
sec //
rol tx_l //
rol tx_m //
rol tx_h // (control bits = 01)
rcall outwrd


outwrd1:
ldi tx_h,0
ldi tx_m,0
ldi tx_l,0x82


outwrd: // Вывод в 2316 управляющего слова
mov tmp,tx_h
rcall out_lmx
mov tmp,tx_m
rcall out_lmx
mov tmp,tx_l
rcall out_lmx
nop
nop
nop
sbi portd,syn_stb // STROB -> 1
nop
nop
nop
cbi portd,syn_stb // STROB -> 0
nop
nop
nop
ret



out_lmx: // Выдать байт в 2316 Байт в acc
ldi loop,8 // загрузить 8 в счетчик бит.
lmx_cycle: //
clc // сброс cary
rol tmp // сдвиг acc влево через C
brcc lmx_l //
sbi portd,syn_dat // установить DATA=1
rjmp lmx_h //
lmx_l: //
cbi portd,syn_dat // установить DATA=0
lmx_h: //
nop //
sbi portd,syn_clk // CLK -> 1
nop //
nop //
cbi portd,syn_clk // CLK -> 0
dec loop //
brne lmx_cycle // проверить счетчик бит.
ret // выход
Genadi Zawidowski
Цитата(Павлик @ Apr 9 2009, 20:40) *


Пробовали запрограммировать на выдауу через вывод aux частоты с делителей? Что выходит?
pavel-pervomaysk
Чта за вывод AUX не понятно , в распиновке мс его нету , схему включение я приложил , можно ткнуть на нее.
Genadi Zawidowski
Цитата(Павлик @ Apr 9 2009, 21:17) *
Чта за вывод AUX не понятно , в распиновке мс его нету , схему включение я приложил , можно ткнуть на нее.

Вывод 14 - Fo/Ld - можно подключить у выходам любого из делителей.
Multiplexed Output of the RF Programmable or Reference Dividers and Lock Detect. CMOS output.
(See Table 4.)


F[3] F[4] F[5] Fo/LD Output State
0 0 0 TRI-STATE
0 0 1 R Divider Output (fr)
0 1 0 N Divider Output (fp)
0 1 1 Serial Data Output
1 0 0 Digital Lock Detect (See 1.3.2 LOCK DETECT OUTPUT Section)
1 0 1 n Channel Open Drain Lock Detect (See 1.3.2 LOCK DETECT OUTPUT
Section)
1 1 0 Active HIGH
1 1 1 Active LOW
Сергей Борщ
Цитата(Павлик @ Apr 9 2009, 19:40) *
Вот собственно код вывода данных в синтез , как я уже писал lmx2316 работает без проблем с этим кодом
Криминала не видно. Может дело не в коде? RF частота через емкость на вход подана?
pavel-pervomaysk
Через емкость подана , 39пф стоит у меня , ставил разные - эфект нулевой.
Genadi Zawidowski
Цитата(Павлик @ Apr 10 2009, 08:47) *
Через емкость подана , 39пф стоит у меня , ставил разные - эфект нулевой.

Ну так посмотрите на выходе (пару битиков поменять - то всего!), все ли нормально с делителями... Самовозбуд во входных каскадах проявляется как подача на вход частоты вблизи верхнего предела для данной микросхемы.
pavel-pervomaysk
Получил еще пару новых микросхем другой партии.
Все работает , оказались просто дохлые МС , продавцов нужно maniac.gif smile3009.gif

Приведенный код работает без проблем , тему можно закрыть.
Pat
Доброго здоровья всем.

Проблема с LMX2306

Рассчитываю коэфф. деления (KD) регистра.
Например
Fosc = 8000 КГц
Fstep = 5 КГц

KD = 8000/5 = 1600

Сдвигаю его влево на 2 разряда.
KD <<= 2
и записываю это значение в R регистр LMX2306
потом конфигурирую регистр FUNCTION LATCH на вывод частоты R делителя, на ножку
FoLD
Контролирую частоту на FoLD и получаю 20КГц вместо 5 КГц.
Если задать другой KD то на выходе будем иметь частоту в 4 раза выше ожидаемой.

Если сделать так KD <<= 4 то все в норме, но этого же не должно быть.

Если проделать аналогичное с N регистром то все в порядке.

Все регистры пишутся одной функцией.
Запись в FUNCTION LATCH тоже в норме (экспериментировал с выводом на ножку FoLD)

Подскажите может что не дочитал, но судя по этой ветке никаких особенностей нет.
Pat
Ура заработало (С) Матроскин

Только расскажешь о своей проблеме и сразу идеи в голову лезут.

Разделительный конденсатор на 8 выводе OSCIn оказался маловат.

Схему включения подсмотрел не в Datasheet, а там кондер стоял 100 пФ.
Поставил 1000 пФ все заработало.

Однако глюк интересный получился частота четко в 4 раза была больше.

Может влияет то что тактирую LMX2306 положительными импульсами, с вывода MCO, STM32.
ASDFG123
ДД. Как правильно посылать биты на LMX2326 ? допустим N counter
10 00000 000100000000 это правильно, для делителя 256 ? с1 с2 впереди при передаче задом наперед.
01 00 010 000000000000 это выход Fo/ld на N counter ?
в каком порядке надо все это записывать, надо ли записывать R counter?
и для чего режим с1 с2 [1,1] ?
в самом начале темы еще был вопрос, аппаратный SPI в авр передает токо байтами, и как себя ведет LMX если передать ей 24 бит и только потом LE =1 ?

пока разбираюсь только с прескаллером, но хочу сделать генератор/частотомер приборчик.
Genadi Zawidowski
Цитата(ASDFG123 @ Jan 3 2013, 20:28) *
ДД. Как правильно посылать биты на LMX2326 ? допустим N counter
10 00000 000100000000 это правильно, для делителя 256 ? с1 с2 впереди при передаче задом наперед.
01 00 010 000000000000 это выход Fo/ld на N counter ?
в каком порядке надо все это записывать, надо ли записывать R counter?
и для чего режим с1 с2 [1,1] ?
в самом начале темы еще был вопрос, аппаратный SPI в авр передает токо байтами, и как себя ведет LMX если передать ей 24 бит и только потом LE =1 ?

пока разбираюсь только с прескаллером, но хочу сделать генератор/частотомер приборчик.


c2, c1 - это всегда последние два бита в передаче.
Кладите в регистр SPI передатчика, передающего старшим битом вперёд значения (не переворачивая ничего!) - старшие раньше, потом младшие - и передавайте. Всё там нормально.

Да, воспринимаются последние перед подъёмом LE биты. т.е., дополняете первыми нулями до 24 бит.
SPI в MODE3, если что.
ASDFG123
Спасибо
Цитата(Genadi Zawidowski @ Jan 4 2013, 02:36) *
SPI в MODE3

третий режим это же CLOСK=1 и смена данных при падении уровня? с даташитом чет не совпадает.
режим 0


режим 3


а вот даташит

а для того чтобы запустить прескалер надо, сначала загрузить фукциональный блок, затем N счетчик, и все ?

п.с Genadi Zawidowski вы DDS синтезаторами типа AD9959 не занимались ?
Genadi Zawidowski
AD9959 не занимался.
В даташите видно, что данные защёлкиваются по нарастающему фронту.
В том устройстве, что у меня есть, на SPI может быть только MODE3 и MODE2.
Соберите макет и попробуйте с разными SPI MODE, если 3-й не нравится, расскажете...

Скажу честно, отдельно прескалер от всего я не проверял...
Если Вам хочется просто предделитель сделать - программируйте все регистры (там, в даташите, написано о приостановке счёта N после пограммирования R, если не ошибаюсь). Короче, в даташите ВСЁ написано.
Исходники программ я выкладывал, последовательности проверенны.
Genadi Zawidowski
Цитата(ASDFG123 @ Jan 5 2013, 19:22) *
Спасибо


Вы случайно в лифте с собственной программой не застряли?
Есть успехи/вопросы/радости? Поделитесь...
ASDFG123
на работу устроился, приходится там чужими косяками заниматься, и еще дипломку дописываю, делаю схему в альтиуме, (заодно осваиваю). Но пока с коммутацией не разобрался. То есть разделять режимы частомер/генератор, вход rf должен работать входом делителя для частотомера, а в режиме генер делительтелем с выхода гуна.
П.с в качестве гуна что лучше применять готовый типа ROS-200-619+ или сборный на транзисторах?
-VenoM-
Товарищи, день добрый! Стараюсь победить LMX2347. Инициализация, вроде, проходит успешно. Но частота скачет в пределах 2кГц, деление происходит непонятно. учитывая что подаю сигнал с кварцевого резонатора, он очень стабильный (и то то другое контролирую ч3-63/1 поверенным).


Вот как у меня странно делится частота (в качетве примера, коэф. деления брал любые):

1. подаю 25.000.00 Гц. В=3,A=3 --> N=99. Т.е. 25.000.00/100=25.000. У меня почему-то 18.000.00
2. подаю 25.000.00 Гц. В=7,А=3 --> N=227. Т.е. 25.000.00/227=11013. У меня почему-то 7.712.00
2. подаю 25.000.00 Гц. В=11,А=3 --> N=355. Т.е. 25.000.00/355=7042. У меня почему-то 4.908.00

Ну и так далее. Т.е. микросхема реагирует на конфигурацию, выключается, включается, меняется коэфф. деления, но где-то ошибка.

Код инициализации.

CODE
/*настройка микросхемы lmx_2347
Порядок настройки:
1. Запись в регистр "N". NB_CNTR [9:0]=0000000011, NA_CNTR[4:0]=00011, PD[1:0]=00, ADDR=0.
Коэфф. деления N=32*B+A, B>=A. В=3,A=3 --> N=99
2. Запись в регистр "R". R_OPT[2:0]=000, LD_OUT[1:0]=11, PD_POL=1, CP_TRI=1,
R_CNTR[9:0]=0000000000, ADDR=1*/
void lmx_2322_tune(void)
{
/*1. Запись в регистр "N"*/
char i;
lmx_cfgL=0b00000000;//последние 2 бита
lmx_cfgM=0b11000110;//следующие 8 бит
lmx_cfgH=0b00000000;//первые 8 бит, начиная с MSB
//LMX_LE=1;
Delay10TCYx(1);//задержка 240нс
LMX_LE=0;
LMX_CLK=0;
Delay10TCYx(1);
Delay1TCY();

for(i=7;i>=0;i--)
{
LMX_DATA=(lmx_cfgH>>i)&0b00000001;
//Delay1TCY();
LMX_CLK=1;
Delay10TCYx(1);//задержка 240нс
LMX_CLK=0;
Delay10TCYx(1);//задержка 240нс
}

for(i=7;i>=0;i--)
{
LMX_DATA=(lmx_cfgM>>i)&0b00000001;
//Delay1TCY();
LMX_CLK=1;
Delay10TCYx(1);//задержка 240нс
LMX_CLK=0;
Delay10TCYx(1);//задержка 240нс
}

for(i=7;i!=5;i--)
{
LMX_DATA=(lmx_cfgL>>i)&0b00000001;
//Delay1TCY();
LMX_CLK=1;
Delay10TCYx(1);//задержка 240нс
LMX_CLK=0;
Delay10TCYx(1);//задержка 240нс
}

Delay10TCYx(1);//задержка 240нс
Delay10TCYx(1);//задержка 240нс
LMX_LE=1;
Delay10TCYx(1);//задержка 240нс
LMX_LE=0;

/* 2. Запись в регистр "R"*/

lmx_cfgL=0b01000000;
lmx_cfgM=0b00000000;
lmx_cfgH=0b00011110;
Delay10TCYx(1);//задержка 240нс
LMX_LE=0;
LMX_CLK=0;
Delay1TCY();

for(i=7;i>=0;i--)
{
LMX_DATA=(lmx_cfgH>>i)&0b00000001;
LMX_CLK=1;
Delay10TCYx(1);//задержка 240нс
LMX_CLK=0;
Delay10TCYx(1);//задержка 240нс
}

for(i=7;i>=0;i--)
{
LMX_DATA=(lmx_cfgM>>i)&0b00000001;
LMX_CLK=1;
Delay10TCYx(1);//задержка 240нс
LMX_CLK=0;
Delay10TCYx(1);//задержка 240нс
}

for(i=7;i!=5;i--)
{
LMX_DATA=(lmx_cfgL>>i)&0b00000001;
LMX_CLK=1;
Delay10TCYx(1);//задержка 240нс
LMX_CLK=0;
Delay10TCYx(1);//задержка 240нс
}

Delay10TCYx(1);//задержка 240нс
LMX_LE=1;

}


Схема, по которой включаю (сделал переходную платку для макета). Частоту подаю на вход Fin.
Genadi Zawidowski
1) есть в даташите параметр - минимальная частота - для Fin она 200 МГц.
2) B должно быть не менее A
Цитата
Divide ratios less than 992 are achievable as long as the binary counter value is greater or equal
to the swallow counter value (NB_CNTR ≥ NA_CNTR)
-VenoM-
Цитата(Genadi Zawidowski @ Nov 17 2013, 04:05) *
1) есть в даташите параметр - минимальная частота - для Fin она 200 МГц.
2) B должно быть не менее A


2. Учтено. Пробовал разные варианты - результат аналогичный.

1. Эммм. Но ведь у людей всё нормально работает с такими частотами. Может, на выход повесить буфер для преобразования в ТТЛ?
-VenoM-
в общем, 25МГц микросхема кушает только так. Проблему со стабильностью решил поставив между Fin и XFin 100пФ. Но! Заметил, что при увеличении Кдел, уровень сигнала на выходе заметно ослабляется. Поэтому буфер на ножке LD нужен обязательно для работы в широком диапазоне входных частот. Посоветуйте, пожалуйста, хороший ВЧ транзистор с микро током базы. Пробовал КТ3102 и подобные - сигнал сразу забивается. Сейчас смотрю в сторону ВЧ полевиков.
Ещё остались вопросы по делителю NA - но о них чуть позже отпишусь, ещё поэкспериментирую. Потом окончательную схему выложу.
Genadi Zawidowski
А кто сказал, что на этом выходе (LD) будет меандр? Вам туда не буфер, а счётный триггер надо...
Цитата
2. Учтено. Пробовал разные варианты - результат аналогичный.

В Ваших примерах было ещё не учтено. Теперь другие параметры программирования?
РЕшать надо не конденсатором 100 пФ, а обеспечением согласования входа. Подайте входной сигнал через аттенюатор 6 дБ (не забывая про разделительные конденсаторы). Заодно избавит от проблем с выгоранием входов этой м.с. Там, где Вы её применяете, не беспокоит что она снята с производства?
-VenoM-
Цитата(Genadi Zawidowski @ Nov 20 2013, 02:08) *


Цитата
А кто сказал, что на этом выходе (LD) будет меандр? Вам туда не буфер, а счётный триггер надо...

А зачем меандр? Таймер-счётчик МК отлично считает импульсы разной длительности, потом получаем среднее значение за время счёта. В схемках, которые находил в интернете люди цепляют на LD просто NPN транзистор с питанием коллектора 5В - получается преобразователь в красивый ТТЛ уровень.

Цитата
В Ваших примерах было ещё не учтено. Теперь другие параметры программирования?

Так. Вот здесь прошу подробнее. Такое чувство, что я чего-то непонимаю. Попробую перевести кусочек документации.


1.4 PROGRAMMABLE FEEDBACK DIVIDER
(N COUNTER)
The programmable feedback divider operates in concert with
the RF prescaler to divide the input RF signal (FIN)bya
factor of N. The output of the programmable reference di-
vider is provided to the feedback input of the phase detector
circuit. The programmable divider supports a continuous
integer divide range from 992 to 32,767. The divide ratio
should be chosen such that the maximum phase comparison
frequency (Fφ) of 10 MHz is not exceeded.
The programmable divider circuit is comprised of an A
Counter and a B Counter. The A counter is a 5-bit CMOS
swallow counter programmable from 0 to 31. The B Counter
is a 10-bit CMOS binary counter, programmable from 3 to
1023. Divide ratios less than 992 are achievable as long as
the binary counter value is greater or equal to the swallow
counter value (NB_CNTR ≥ NA_CNTR). Refer to Section
2.3.2 and 2.3.3 for details on programming the NA and NB
Counter. The following equations are useful in determining
and programming a particular value of N:
N = (32 x NB_CNTR) + NA_CNTR


Т.е. мы имеем делитель с коэффициентом деления 992-32.767, который зависит от значений в регистре N. При этом значение фазового компаратора не должно превышать 10Мгц (не очень понятно, к чему это).

Далее про части А и В регистра делителя - это понятно.

Значения делителя менее 992 доступно, если соблюдать NB_CNTR ≥ NA_CNTR.

Возвращаясь к моему примеру: NB_CNTR [9:0]=0000000011, NA_CNTR[4:0]=00011 (т.е. 3 и 3). Условие соблюдается. Но реально частота делится на 3. Дальше - всё аналогично, частота у меня делится просто на значение NB_CNTR (от 3 до 1023). Причём всё чётко, без сбоев.
Формула N = (32 x NB_CNTR) + NA_CNTR не работает почему-то, и получить коэффициент деления >1023 не получается.


Цитата
РЕшать надо не конденсатором 100 пФ, а обеспечением согласования входа. Подайте входной сигнал через аттенюатор 6 дБ (не забывая про разделительные конденсаторы). Заодно избавит от проблем с выгоранием входов этой м.с.

Согласен, но это следующий из этапов. На схеме входы подключены через конденсатор 1нФ.

Цитата
Там, где Вы её применяете, не беспокоит что она снята с производства?

Заказал чисто из интереса, если хватит терпения, то хочу сделать частотомер. Знаю, что есть готовые проекты, но интересен сам процесс.
Кстати, какой её современный аналог?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.