USMI

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » Тактирование чипов AC69xx


Тактирование чипов AC69xx

Сообщений 21 страница 40 из 44

21

Приступил на днях к экспериментам с PLL чипов AC692x. Объектом исследований выбрал MH-M18, он же как будто AC6925D. Тут же потерпел фиаско на самом простом - вывод тактового сигнала на тестовый вывод. Что было бы полезно для контроля частоты синтезируемой PLL. Попытался завести сигнал с btosc_clk на порт PB0. Биты PB0_SEL выставлял по одному во избежание ошибок. Увы, ничего не шевелится, осцилл ничего не регистрирует на PB0 кроме наводок с соседних пинов. С выводом тактового с pll_sys_clk тоже глухо. На всякий случай проверил, не занят ли PB0 светодиодом или кнопками. AD-клавиатура обнаружилась, я ее перекинул на другой порт, но не помогло.

Вот так делал:

Код:
    JL_CLOCK->CLK_CON0 &= ~BIT(12);
    JL_CLOCK->CLK_CON0 &= ~BIT(11);
    JL_CLOCK->CLK_CON0 |= BIT(10);

https://forumupload.ru/uploads/001b/ca/8a/4/t516815.jpg

22

Заменил MH-M18 на AC6925A. Все то же самое, на PB0 ничего не шевелится.

23

Так ты его наверно на вход настроил же?

Alcest написал(а):

JL_CLOCK->CLK_CON0 &= ~BIT(12);
    JL_CLOCK->CLK_CON0 &= ~BIT(11);
    JL_CLOCK->CLK_CON0 |= BIT(10);

Вроде как CLKUOT должен быть, и то он не на всех ногах. ДШ нужно смотреть. Ну и желательно искать с помощью  Notepad++ во всех файлах сразу, там порт этот много где прописан. И нужно ли его сначала на выход настроить?

Подпись автора

By Admin

24

BIOS написал(а):

И нужно ли его сначала на выход настроить?

Сейчас попробую.  Я ориентировался на картинку, и если судить по ней при включении PB0 в режим тестового выхода он перестает быть портом и вход или выход должно быть без разницы. Поэтому порт вообще никак не настраивал. Но как знать, чего там составители документа имели ввиду...

Отредактировано Alcest (2023-12-27 03:55:46)

25

Alcest написал(а):

он перестает быть портом и вход или выход должно быть без разницы.

Там же написанно, что "PB0 output reg", т.е. значение с регистра OUT. Поэтому как выход его всё равно надо настраивать.

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

26

А как вы вообще оперируете регистрами?  Я понимаю там библиотеки, но низкий уровень... Я понимаю что и библиотеки это лишь удобная прокладка между низким уровнем и высоким.

Подпись автора

By Admin

27

Переключил PB0 на выход, результат тот же. Просмотрел даташиты на линейку AC692x, функция CLOCKOUT указана только для порта PB0 чипа AC6921. Получается, что для малоногих чипов вывод тактового сигнала наружу не предусмотрен. Жаль. Придется ориентироваться на частоту сигнала с выхода таймера Timer2 или Timer3.

28

Alcest написал(а):

CLOCKOUT

Не помню, их вроде несколько там.

Подпись автора

By Admin

29

BIOS написал(а):

А как вы вообще оперируете регистрами?

В файле hw_cpu.h все (или почти все) регистры определены как поля структур. Ищем нужную структуру, для CLOCK это будет JL_CLOCK_TypeDef. Ниже будет соответствующий макрос, в данном случае #define JL_CLOCK.  Вот с ним и работаем следующим образом JL_CLOCK->CLK_CON0 &= ~(0);, что означает сбросить в 0 нулевой бит регистра CLK_CON0 и тем самым выключить тактовый RC-генератор. Или наоборот, включит RC-генератор следующим образом JL_CLOCK->CLK_CON0 &= ~(0);, установкой в 1 нулевого бита того же регистра.

30

Alcest написал(а):

Или наоборот, включит RC-генератор следующим образом JL_CLOCK->CLK_CON0 &= ~(0);, установкой в 1 нулевого бита того же регистра.

Блин, опечатался.  JL_CLOCK->CLK_CON0 & |=(0); конечно же.

Да, для AC6921 их два, на порту PB0 и PA1. А для AC6925 вообще нет CLOCKOUT. Как ты выше написал про даташит, я тут же посмотрел и стало понятно, что с 6925 можно не трепыхаться. Нету там тестовых выходов.

31

Но это ерунда, можно обойтись контролем частоты сигнала с выхода таймера. Будет хуже, если в 6925 дробного делителя нет. Возможно, что тоже не во всех чипах предусмотрен.

32

BIOS написал(а):

А как вы вообще оперируете регистрами?  Я понимаю там библиотеки, но низкий уровень... Я понимаю что и библиотеки это лишь удобная прокладка между низким уровнем и высоким.

Подпись автора

    By Admin

Если же имелась ввиду трудоемкость, но ведь из либ некоторые возможности чипа вовсе недоступны. Я в SDK не нашел ничего чем настраивается дробный PLL. Возможно плохо искал, но сдается мне нет там ничего такого. А сильно напрягает каждый раз отдельные биты переключать, можно свои библиотечные функции написать.

33

Вопрос к уважаемому сообществу - что это за аппендикс такой (обведено красным)? Управляется битами OSC_SEL (5:4) регистра CLK_CON0. В референс мануале обозначено как "Выбор источника OSC_CLK на кристалле (встроенного источника?)". Разве биты 7:6 не то же самое делают?

https://forumupload.ru/uploads/001b/ca/8a/4/t235382.jpg

34

И еще, что такое pat_clk?

35

OSC_SEL это просто выбор определённого кварца, который будет под osc_clk куда-то ещё идти, например у таймеров источник тактирования "OSC" как раз отсюда берётся.

pat_clk вроде должен от ISP_CLK браться, когда чип в тестовом режиме (т.е. в режиме ISP)

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

36

kagaimiq, благодарю, стало чуточку понятнее что там с клоками происходит.  С наступающим.

37

Выдержка из RM на AC692x, раздел Clock_System:

1. SYSPLL поддерживает два режима работы: целочисленный и дробный. Целочисленный режим поддерживает опорные частоты 12 или 24 МГц.  Дробный режим поддерживает любую опорную частоту. В целом, чем выше опорная частота, тем лучше производительность ФАПЧ.
2. INTE целочисленный режим:

Fout = Fref/DIVn * DIVm

(n=PLL_CON[6:2]+2, m=PLL_CON1[7:0]+2)

FRAC дробный режим:

Fout=Fref * INTF

INTF определяется регистром PLL_INTF, Где PLL_INTF[31:24] — целое часть дроби, PLL_INTF[23:0] — дробная десятичная часть, то есть:
PLL_INTF=INTF * (2^24)

Ломаю голову - Fout это где? Там этих оутов с PLL как минимум три: 480 МГц, 192 МГц и 137 МГц. До какой из этих частот надо умножать?  И что умножается? Опора 24 МГц?

38

Решил посмотреть, что происходит при прошивке AC6925 из "чистой" SDK с настройками Clock System по умолчанию. С целочисленным умножителем частоты кварца 24 МГц. Прошил, считал содержимое регистров PLL_CON и PLL_CON1. Из них извлек коэффициенты DIVn = 0 +2, и DIVm = 38 + 2. Подставил их в формулу Fout = Fref/DIVn * DIVm, получил в результате 24 000 000 / 2 * 40 = 480 000 000. Таким образом получается, что под Fout в рассматриваемой формуле подразумевается выход PLL с частотой 480 МГц.

39

Но меня угнетает такой момент, что частота таймера Timer3 тактируемого от sys_clk не совпадает с расчетной. Таймер включен как ШИМ, период импульсов с выхода таймера равен 1000, коэффициент заполнения 50. То есть он вырабатывает один импульс на каждые 1000 импульсов приходящих на его вход от sys_clk. При настройках Clock System по умолчанию частотомер на выходе Timer3 показывает ровно 30 КГц. Полагаю, что частота импульсов на входе таймера при этом равняется 30 000 Гц * 1000 = 30 МГц. От какого из двух выходов pll_sys_clk синтезатора частоты тактируется таймер я не знаю, но частота не совпадает в обоих случаях.

На картинке показаны включение и коэффициенты деления обоих двух возможных источников тактирования Timer3. Состояние селекторов импульсов и коэффициенты деления считаны из регистра CLK_CON2. Верхний по схеме выход pll_sys_clk подключен к выходу PLL 480 МГц через делитель на 4. Берем измеренные/рассчитанные выше 30 МГц на входе таймера и умножаем их на 4. Получаем 120 МГц, что близко не стояло с 480.

Предположив, что таймер подключен к нижнему выходу pll_sys_clk умножаем 30 МГц на коэффициент деления делителя в этом делителе 6. Получаем 180 МГц, что опять же далеко от 137 МГ(вход этого делителя подключен к выходу PLL 137 МГц).

Я совершенно растерян и деморализован...

https://forumupload.ru/uploads/001b/ca/8a/4/t714845.jpg

40

Таймеры сидят на "низкоскоростной шине" (LSB), поэтому они тактируются от lsb_clk (если SSEL=0), а он в свою очередь обычно всегда делится на какой-то коэффициент относительно hsb_clk и пр., на то она и "низкоскоростная".

Подпись автора

水Mizu-DEC JLtech since 22.06.2019


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » Тактирование чипов AC69xx