PDA

Просмотр полной версии : Прескалер на LMX2332



Vitas56
29.06.2013, 17:32
Не удается загрузить регистры прескалера LMX2332. На выходе мультиплексера Fo постоянная единица и не меняется от загрузки регистра. LMX - двухканальный синтезатор RF и IF. В данном случае хотел использовать прескалер IF с Кдел=100. Ниже привожу таблицу загрузки регистров и осциллограмму смоделированную в Протеусе. Длительность тактовых импульсов ~ 0,5 мкс. Что интересно при первом включении прескалер заработал. Потом что-то правил в программе и после этого ничего. Даже после возврата. Спалить вроде не мог - больше 5В не подавал. Проверка осциллографом подтверждает осциллограмму в протеусе. Вопрос к тем кто имел опыт работы с данной микросхемой. Уровень сигнала на входе прескалера чуть меньше 1 мВт. Частота от 10 до 100 мГц.
143918143919

Добавлено через 38 минут(ы):

Забыл еще про один нюанс. Загрузка начинается с MSB, те 1 импульс на бит 20.

Vitas56
06.07.2013, 12:13
Ответов 0. Еще одна попытка.
Прескалер загружается после 1 включения источника питания. Если после выключения ждать более 10 сек и включить - загружается. Если просто выдернуть клемму питания от источника и вставить - не работает. Если прескалер начинает работать то обнуление RESET процессора (Mega8) перезагружает процессор и далее все нормально-прескалер работает с заданным коэфф. деления. Получается что код загрузки правильный. Тестовая программа загружает регистры LMX2332 в бесконечном цикле. Отсюда вопрос: Как переходный процесс при включении может заблокировать загрузку регистров?

vadim_d
06.07.2013, 12:43
Прескалер загружается после 1 включения источника питания. Если после выключения ждать более 10 сек и включить - загружается
Больше всего это похоже на висящие в воздухе пины, состояние которых может влиять на процесс загрузки. Как вариант - состояние внутренних регистров, если загрузка подразумевает исходно сброшенное состояние чипа. Во времена Интеловского 8251 (КР580ВВ51) народ напрягал извилины, чтобы его инициализация срабатывала и первый раз после сброса, и любой последующий раз :smile:.


Тестовая программа загружает регистры LMX2332 в бесконечном цикле
Как вариант, сделайте ее по кнопке, или раз в несколько секунд - это если после нее чипу требуется какое-то время. Часто народ после выдачи слова в UART начинает смотреть результат, а там еще только стартовый бит на выходе появился. Способов ошибиться намного больше, чем способов получить правильный результат :smile:.

Vitas56
06.07.2013, 12:51
Спасибо за первый ответ.
Прескалер загружается по SPI интерфейсу и висящих пинов нет в принципе. Загрузка в тестовой программе происходит 1 раз в сек. Я тут подумал что загружаю только IF регистры. Попробую полную загрузку RF и IF регистров. Похоже с кодом загрузки неувязка. Конечно хотелось-бы взглянуть на правильную бит последовательность загрузки или осциллограмму при любом Кдел.

Genadi Zawidowski
06.07.2013, 12:54
Тестовая программа
Между моментом установки данных и нарастающим стробом клока на осциллограмме не видать зазора. Зато, данные всегда сбрасываются в "0" на каждом бите. Для отладки - вставьте в программу небольшую задержку в это место.

Vitas56
06.07.2013, 13:18
Похоже причина где-то глубже или на поверхности. Если бы тайминги не вписывались то после Reset были те-же грабли, но как раз наоборот. Вот более подробная картинка.
144461

vadim_d
06.07.2013, 13:18
Между моментом установки данных и нарастающим стробом клока на осциллограмме не видать зазора. Зато, данные всегда сбрасываются в "0" на каждом бите
Вроде при увеличении картинки зазор виден, а вот сбрасывать в ноль - излишество, согласен

Vitas56
06.07.2013, 13:29
Вадим, я не понял что значит сбрасывать в ноль. Вроде все соответствует формату SPI.

vadim_d
06.07.2013, 13:38
я не понял что значит сбрасывать в ноль
Все соответствует, SPI берет данные по фронту клока, речь только о том, что линия данных после любого бита сбрасывается в ноль, потом на нее выдается следующий бит, что Геннадий заметил. Этого сброса в ноль можно не делать, но экономия времени и памяти для единичной загрузки несущественна :smile:.

Поглядел http://www.ti.com/lit/ds/symlink/lmx2332a.pdf , вроде все правильно, попробуйте все регистры грузить, может дуло исчезнет :)

Vitas56
06.07.2013, 13:43
Спасибо за участие. Когда решу проблему поделюсь опытом.

Genadi Zawidowski
06.07.2013, 14:04
попробуйте все регистры грузить
Не помню где, как раз встречал блокировку работы ФД до загрузки N после загрузки R - Вадим, возможно, прав. Хотя, в этом чипе про такие завязки не упоминается. В других каких-то LMX было...
А reset mode случайно не оказался? Целиком выложить всю инициализацию нет желания?

Vitas56
06.07.2013, 14:24
Геннадий возможно я не до конца разобрался с регистрами LMX2332 но в даташите reset mode не встречал. Вернее из даташита есть таблица
144463
Однако выбор стандартный и почему-то повторяется для разных режимов что не очень понятно.

Добавлено через 8 минут(ы):


Целиком выложить всю инициализацию нет желания?
То что выложил и есть вся инициализация. Грузил два регистра на IF прескалер.

Genadi Zawidowski
06.07.2013, 14:26
Не обратил внимание что R19 у Вас "0".
Чем у Вас обеспечивается время на установление сигнала на линии данных перед стробом? Попробуйте строб всегда держать в "1" (и вне LE) и стробировать нулевым уровнем.

vadim_d
06.07.2013, 14:34
Вернее из даташита есть таблица
Это третья, перед ней еще две :smile:. Чтобы задать выход прескалера на пин 10 надо задать и IF и RF регистры, может в этом дело


Попробуйте строб всегда держать в "1" (и вне LE) и стробировать нулевым уровнем
Геннадий, в описании активный фронт нарастающий

Vitas56
06.07.2013, 14:45
Стробом вы называете тактовые импульсы? Сигналы с процессора полностью соответствуют стандарту SPI, можете не сомневаться. Регистр R19 поставил в 1 но ....есть над чем подумать. Пока результат нулевой. Интересно что программировал синтезаторы AD9951 и другие PLL синтезаторы и таких проблемм не возникало.

Genadi Zawidowski
06.07.2013, 15:06
стандарту SPI
MODE0..MODE3 бывают. Лично я старался все LMX использовать с MODE3 (даже когда программно выводами шевелю) - и Вам советую на него переделать. AD9951 прекрасно с MODE3 работает, а AD9834 только с MODE2 (это я на тему "единого подхода" к SPI на всех чипах).


Стробом вы называете тактовые импульсы
Да.

Геннадий, в описании активный фронт нарастающий
Вот так и будет - но я про то, в каком состоянии CLK когда LE становится "0".

Ещё предложение - перейти на использование регистра N как прескалера. Для проверки. Возможно, проявится какая-нибудь подробность.

Vitas56
06.07.2013, 15:17
Может у кого-то есть рабочий код загрузки данного прескалера? Интересно взглянуть на битовую последовательность.

Genadi Zawidowski
06.07.2013, 15:25
Чем у Вас обеспечивается время на установление сигнала на линии данных перед стробом?
Провода длинные от микроконтроллера к LMX?

Vitas56
06.07.2013, 15:37
провода минимальные.
144467

vadim_d
06.07.2013, 15:44
Вот так и будет - но я про то, в каком состоянии CLK когда LE становится "0"
У LE там только нарастающий фронт активен, все остальное влиять не должно, времена все 50 нс, кроме удержания данных, где 10 нс - ну ооочень трудно что-то сделать криво :smile:.

Vitas56
06.07.2013, 15:49
Ещё предложение - перейти на использование регистра N как прескалера. Для проверки. Возможно, проявится какая-нибудь подробность.
Данный регистр как раз и используется как делитель после прескалера. Подробности в таблице.
144470

Genadi Zawidowski
06.07.2013, 16:17
Нижняя рабочая частота для счётчика N учтена? А то у Вас - R как прескалер, потом ещё N за ним... Или я не правильно понял?

Vitas56
06.07.2013, 17:38
Вроде проблема разрешилась. Действительно нужно загружать все регистры данной микросхемы. Пока есть стабильность. привожу таблицу регистров в нормально рабочем режиме. Кдел. IF=100
144484

Добавлено через 7 минут(ы):

Вообщем хочу сказать спасибо Владимиру и Геннадию за наводящие вопросы. Иногда вопрос ценней ответа.
Виталий.

bob1
06.07.2013, 18:17
Посмотрите в сторону проги CODELOADER http://www.ti.com/tool/codeloader . Позволяет автоматизировать процесс заполнения таблиц. После установки в папке с прогой находите файл codeldr.ini и стираете в нем последние и 2 строчки , а то запускается с ошибкой
Успехов!!