Jump to content
    

MSP430F4152 частоты MCLK SMCLK

Приветствую специалистов.

Бъюсь с MSP430F4152, перечитал мануал N раз, ради понимания пытаюсь получить частоту SMCLK равной 32768 КГц.

Кварц 32768.

С ACLK все понятно и вопросов нет.

На картинке одно в мануале, в описании регистра другое, я насколько понял ТОЛЬКО УМНОЖЕНИЕ.

Т.е. при включении DCOPLUSE он умножает частоту DCO на коф. указанный в делители )), жесть.

Кто что может по данному вопросу подсказать.

Как настроить SMCLK на 32768

 

SCFQCTL = SCFQ_64K;

и как это поделить на 2 ....

Share this post


Link to post
Share on other sites

Т.е. при включении DCOPLUSE он умножает частоту DCO на коф. указанный в делители )), жесть.

Если верить 33 странице даташита, то минимальная частота DCO 0,3 МГц. Остаётся только SMCLK=ACLK

Share this post


Link to post
Share on other sites

Если верить 33 странице даташита, то минимальная частота DCO 0,3 МГц. Остаётся только SMCLK=ACLK

Эта таблица,как я понял, рекомендации по настройкам блока постройки частоты.

 

Share this post


Link to post
Share on other sites

Сам с этим мк не работал, другими этого типа - занимался. Посмотрел файлы с описанием вашего мк на http://www.ti.com/lit/ug/slau056l/slau056l.pdf и http://www.ti.com/lit/ds/symlink/msp430f4132.pdf. В первом файле, на стр. 5-7 есть рисунок Figure 5-4. MSP430x41x2 Frequency-Locked Loop. Видимо это модуль вашего мк. Судя по схеме, ACLK нельзя подать на выход SMCLK, а на MCLK - можно. Настроить же отдельно модули DC Generator и DCO+Modulator на генерацию собственной частоты на 32,768 кГц нельзя по причине минимальной устанавливаемой чатоты = 610кГц.

В вашем варианте можно сделать так: вывести частоту ACLK наружу на вывод мк и перемычкой подать её на входы тех модулей, которые допускают внешнее тактирование.

Share this post


Link to post
Share on other sites

Сам с этим мк не работал, другими этого типа - занимался. Посмотрел файлы с описанием вашего мк на http://www.ti.com/lit/ug/slau056l/slau056l.pdf и http://www.ti.com/lit/ds/symlink/msp430f4132.pdf. В первом файле, на стр. 5-7 есть рисунок Figure 5-4. MSP430x41x2 Frequency-Locked Loop. Видимо это модуль вашего мк. Судя по схеме, ACLK нельзя подать на выход SMCLK, а на MCLK - можно. Настроить же отдельно модули DC Generator и DCO+Modulator на генерацию собственной частоты на 32,768 кГц нельзя по причине минимальной устанавливаемой чатоты = 610кГц.

В вашем варианте можно сделать так: вывести частоту ACLK наружу на вывод мк и перемычкой подать её на входы тех модулей, которые допускают внешнее тактирование.

В настройках есть 32768*2

 

/* System clock frequency values fMCLK coded with Bits 0-6 in SCFQCTL */

/* #define SCFQ_32K 0x00 fMCLK=1*fACLK only a range from */

#define SCFQ_64K (0x01) /* fMCLK=2*fACLK 1+1 to 127+1 is possible */

#define SCFQ_128K (0x03) /* fMCLK=4*fACLK */

#define SCFQ_256K (0x07) /* fMCLK=8*fACLK */

#define SCFQ_512K (0x0F) /* fMCLK=16*fACLK */

#define SCFQ_1M (0x1F) /* fMCLK=32*fACLK */

#define SCFQ_2M (0x3F) /* fMCLK=64*fACLK */

#define SCFQ_4M (0x7F) /* fMCLK=128*fACLK */

#define SCFQ_M (0x80) /* Modulation Disable */

Share this post


Link to post
Share on other sites

Посмотрел ещё раз файл с описанием мк и файл msp430f4152.h, который есть в IAR. Значение MCLK и SMCLK не может быть меньше ACLK*2, т.е. при ACLK=32768Гц - MCLK=SMCLK=65536Гц.

Share this post


Link to post
Share on other sites

Посмотрел ещё раз файл с описанием мк и файл msp430f4152.h, который есть в IAR. Значение MCLK и SMCLK не может быть меньше ACLK*2, т.е. при ACLK=32768Гц - MCLK=SMCLK=65536Гц.

Полностью согласен, вопрос не этом.

На рисунке 5-4 на странице 5-7 slau056l.pdf тактового модуля, получается что можно эту частоту пустить через предделитель и вывести через DCOPLUS, а в описании регистра и по факту частота нифига не делится а умножается, т.е. рисунок не бьется с описанием и фактом.

Вот это совсем непонятно ......

Share this post


Link to post
Share on other sites

Полностью согласен, вопрос не этом.

На рисунке 5-4 на странице 5-7 slau056l.pdf тактового модуля, получается что можно эту частоту пустить через предделитель и вывести через DCOPLUS, а в описании регистра и по факту частота нифига не делится а умножается, т.е. рисунок не бьется с описанием и фактом.

Вот это совсем непонятно ......

Задайте (с помощью битов FNx=0x00 задается самый нижний диапазон) частоту DC генератора fDCO=32768Гц*8.

Делитель D для fDCO (с помощью битов FLLDx=0x3) выбираете 1/8. Предделитель для FLL =1 (N=0).

Тогда на выходе DCO генерится fDCO=D*(N+1)*fLFXT=8*(0+1)*32768Гц. Соответственно после делителя fDCO/D=32768Гц*8/8=32768Гц. Выбрав правильные значения битов DCOPLUS и SELS, получаете на выходе SMCLK искомую частоту 32768Гц.

Вот только, убей бог, не пойму, зачем вам это нужно? Ведь полученная таким образом от FLL частота будет модулированной и довольно нестабильной по фазе. Потому, что интегратор FLL поддерживает заданным СРЕДНЕЕ значение частоты на интервале интегрирования (а интегратор FLL всего 10 бит). Если вам нужны точные и стабильные 32768Гц, то используйте ACLK. Благо и SMCLK и ACLK ко всей периферии подведены ЕМНИП.

Share this post


Link to post
Share on other sites

Похоже, что всё на рисунке 5-4 всё верно. Увеличивая делитель "Divider" или "N+1" мы уменьшаем "глубину цифровой ООС" для модуля "DCO+Modulator", и поэтому частота fdco повышается. Минимальная частота fdco = fdco/D при Divider= /1 и N+1=2, т.е. ACLK умножается на 2. В этом случае, как бит DCOPLUS не устанавливай, частота MCLK и SMLK не измениться и останется ACLK*2. Если повысить Divider до /2 при том же N+1=2, то "Frequency Integrator" повысит частоту "DCO+Modulator" и fdco из-за обратной связи возрастёт до ACLK*4, а частота fdco/D при этом не измениться и останется ACLK*2. Короче, частота fdco зависит от делителя "Divider" * "N+1", а частота fdco/D - только от делителя "N+1". Возможно, это надо для переключения тактирования внешних модулей между низкой и высокой частотой для экономии энергии, например.

Share this post


Link to post
Share on other sites

Задайте (с помощью битов FNx=0x00 задается самый нижний диапазон) частоту DC генератора fDCO=32768Гц*8.

Делитель D для fDCO (с помощью битов FLLDx=0x3) выбираете 1/8. Предделитель для FLL =1 (N=0).

Тогда на выходе DCO генерится fDCO=D*(N+1)*fLFXT=8*(0+1)*32768Гц. Соответственно после делителя fDCO/D=32768Гц*8/8=32768Гц. Выбрав правильные значения битов DCOPLUS и SELS, получаете на выходе SMCLK искомую частоту 32768Гц.

Посмотрев внимательно раздел Electical characterictics DCO в datasheet MSP430F4152 вынужден скорректировать свое сообщение: похоже, что нифига у вас не выйдет. :( Потому, что, судя по указанной таблице, генератор DCO не может генерировать частоту ниже 300кГц. А вывода для подключения внешнего резистора (RSEL) с помощью которого можно задавать ток для данного RC-генератора (как это было в некоторых старых моделях MSP430) у данного кристалла нет. Проверить, так ли это, можно установив описанный выше мной режим работы FLL и проанализировав через некоторое время после включения модулятора бит ошибки DCOF и значение модулятора. Если заданная частота достижима, то DCOF будет сброшен и в регистре модулятора будет ненулевое значение. Если же DCOF не сбрасывается и все биты DCOx и MODx в регистрах SCFI0 и SCFI1 равны нулю, то значит модулятор FLL "уперся" в нижнее значение и FLL синхронизироваться с опорной частотой 32768Гц не может.

Share this post


Link to post
Share on other sites

Задайте (с помощью битов FNx=0x00 задается самый нижний диапазон) частоту DC генератора fDCO=32768Гц*8.

Делитель D для fDCO (с помощью битов FLLDx=0x3) выбираете 1/8. Предделитель для FLL =1 (N=0).

Тогда на выходе DCO генерится fDCO=D*(N+1)*fLFXT=8*(0+1)*32768Гц. Соответственно после делителя fDCO/D=32768Гц*8/8=32768Гц. Выбрав правильные значения битов DCOPLUS и SELS, получаете на выходе SMCLK искомую частоту 32768Гц.

 

Всё бы хорошо, только N = 0 задавать нельзя; так прямо английским по-белому и написано в User's Guide.

 

N от балды задавать нельзя: fDCO должен укладываться в границы, определяемые битами FN_x.

Edited by Obam

Share this post


Link to post
Share on other sites

Всё бы хорошо, только N = 0 задавать нельзя; так прямо английским по-белому и написано в User's Guide.

Да, увидел.

 

N от балды задавать нельзя: fDCO должен укладываться в границы, определяемые битами FN_x.

Дык правильно. Потому, что DC Generator (DCO) это генератор RC-типа. Битами FN задается эквивалент R, а точнее ток, которым заряжается C. Битами DCO задается величина емкости C (набором коммутируемых конденсаторов: 2^5=32 значения). Естественно, что без переключения величины R (только одними лишь конденсаторами) весь диапазон частот генератора перекрыть нельзя. Но битами DCO и MOD модулятор FLL может управлять автоматически (когда включена модуляция), а битами FN - нет. Поэтому коэффициент умножения, задаваемый N и D должен соответствовать диапазону выходных частот fDCO, который в свою очередь зависит от FN. Кстати, совсем не обязательно постоянно использовать модулятор FLL. Его можно включать периодически лишь для подстройки частоты fDCO. Зато при выключенном модуляторе частота будет меньше "болтаться". В кристаллах без FLL, имеющих лишь только DCO, программно-аппаратная (с помощью таймера) подстройка fDCO это вообще штатный hint.

 

И все-таки хотелось бы узнать у топикстартера, зачем ему SMCLK именно 32768Гц?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...