ykmot26y
1

Управление PLL

11.12.2013, 14:51. Показов 5152. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
У меня есть pll HMC833LP6GE, но я никак не могу заставить её генерировать сигналы нужной мне частоты (pll никак не реагирует на изменение значения делителя в цепи обратной связи с фазовым детектором). Причем частота на выходе pll не изменяется даже при варировании делителя опорной частоты (к слову, частота опорного 10Мгц). По идее, делаю всё согласно даташиту, по минимуму изменяя дефолтные настройки, настраивая режимы и .. ничего .. Может кто имел удачный опыт управления подобными штуками ? Если да, то поделитесь пожалуйста своим бесценным опытом и парой тонкостей, буду очень благодарен. Спасибо!
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2013, 14:51
Ответы с готовыми решениями:

Синтезатор PLL на MCU
Доброго времени суток! Делаю приемник поездной радиосвязи, частота чуть выше 2МГц. И обнаружил,...

STM32F4Discovery PLL
Добрый день. Возник вопрос по поводу PLL. Настраиваю её следующим образом: /* Kimeral clock mode...

Тактирование от PLL по HSI
Тактирование от HSI, HSE, PLL\HSE проходит успешно, а от PLL\HSI не работает. Судя по асмеблерскому...

Глюк PLL STM32F091?
Настраиваю тактирование. void SystemInit (void) { RCC->CR &= 0x0000FFFF; /* Set HSION bit */...

STM32f4 настройка PLL
Здравствуйте, правильно ли я понимаю, что макрос RCC->PLLCFGR |=_VAL2FLD(RCC_PLLCFGR_PLLN,255); не...

5
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
11.12.2013, 16:16 2
У этого чипа довольно замороченный SPI доступ. Вы проверили, что ваш код правильно пишет/читает регистры чипа? Можно его, в смысле код, посмотреть?
0
ykmot26y
16.12.2013, 15:50 3
Извините, не имел возможности ответить из-за выходных. Пишет/читает всё без проблем, состояние регистров меняет на ура. Вот только ничего не происходит .. Единственное что можно уловить, так это при изменении выходного делителя всё корректно меняет, а вот при изменении значения делителя в цепи ФАПЧ не только ничего не происходит, но и может выходной сигнал свалиться на неведуемую мне частоту (79.7MГц при выходном делителе 60).
Так что с SPI проблем нет, тут наверное в настройке дело
Вот кусок кода инициализации устройства, функция hmc833lp6g_tx( ) всё честно отрабатывает и записывает в регистры pll корректные значения
Код
   data = hmc833lp6g_rx(ID_REG);

hmc833lp6g_tx(VCO_SPI_REG,0x188);
hmc833lp6g_tx(VCO_SPI_REG,0x2A98);
hmc833lp6g_tx(VCO_SPI_REG,0);
hmc833lp6g_tx(VCO_SPI_REG,0x2898);
hmc833lp6g_tx(VCO_SPI_REG,0);

hmc833lp6g_tx(SD_CFG_REG,0x2003CA);      // Integer mode enable
hmc833lp6g_tx(CP_REG,0x3264);
hmc833lp6g_tx(FI_REG,250);            // N = 200
hmc833lp6g_tx(VCO_SPI_REG,0x7E10);      // R = 60
ykmot26y
16.12.2013, 16:03 4
Если на словах, то я делаю следующее:
1) Читаю ID устройства
2) Включаем ГУН и буфер pll
3) Конфигурируем ГУН (в принципе те же дефолтные значения переписали)
4) Настроили работу pll в integer mode (целочисленное деление в петле обратной связи)
5) Запись значения делителя N петле ФАПЧ
6) Запись выходного делителя
Вот как то так, вроде всё по даташиту, но зараза работать не хочет
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
22.12.2013, 15:48 5
У чипа с автокалибровкой есть заморочка, она пишет по последнему адресу в который осуществлялась запись через регистр VCO_SPI и наверняка затирает вам делитель ФАПЧ.
Попробуйте как нибудь так:
Код
hmc833lp6g_tx(VCO_SPI_REG,0x7E10);      // R = 60
hmc833lp6g_tx(VCO_SPI_REG,0);
hmc833lp6g_tx(FI_REG,250);            // N = 200
0
ykmot26y
23.12.2013, 18:50 6
Спасибо огромное! Действительно помогло. После каждого обращения к VCO_REG следует отсылать туда нули.

В процессе работы выяснился ещё один маленький нюанс: VCO работает только с частотами в интервале (2500; 3100) МГц, хотя согласно даташиту 1500-3000МГц, так что мой изначальный выбор делителя N=200 был не верным.

А теперь, может кому понадобится, приведу пример инициализации этого чипа

Код
   data = hmc833lp6g_rx(ID_REG);

hmc833lp6g_tx(VCO_SPI_REG,0x188);      //    Output Mute Function
hmc833lp6g_tx(VCO_SPI_REG,0);
hmc833lp6g_tx(VCO_SPI_REG,0x2A98);
hmc833lp6g_tx(VCO_SPI_REG,0);

hmc833lp6g_tx(SD_CFG_REG,0x2003CA);      // Integer mode enable
hmc833lp6g_tx(CP_REG,0x3264);

hmc833lp6g_tx(VCO_SPI_REG,0x7E10);      // R = 60
hmc833lp6g_tx(VCO_SPI_REG,0);

hmc833lp6g_tx(FI_REG,300);            // N = 300

hmc833lp6g_tx(VCO_SPI_REG,0x2898);      // Enable PLL after muting
hmc833lp6g_tx(VCO_SPI_REG,0);         // Fundamental mode
Здесь частота опорника 10МГц, на выходе получаем 50МГц
23.12.2013, 18:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2013, 18:50
Помогаю со студенческими работами здесь

Сбой stm32f407, тактируемого от pll.
Раньше для инициализации переферии пользовался StomdartPeriphLibrary, а тут вот захотелось...

Тактироание через HSE и PLL
Здравствуйте, я новичек в программировании микроконтроллеров. Имею отладочную плату blue pill....

Настройка PLL множителей на stm32f407vet6
Здравствуйте, настраиваю тактирование на stm32f407 vet6 и кое что не понимаю. До этого настраивал...

Тактирование от HSE через PLL.
Добрый день, граждане! При попытке перейти на использование внешнего кварца, словил проблему....

Выходная мощность PLL у Cyclone IV
Здравствуйте, кто-то может подсказать, какая выходная мощность у PLL Altera Cyclone IV ep4ce6 ?...

STM32F103C8T6 BluePill тактирование HSE от PLL
Всем привет! Столкнулся с проблемой, что, например, если обвязать переключение на HSE, PLL...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru