Перейти к содержанию

Тактирование MSP430: Basic Clock+ и CS

У MSP430 три тактовых сигнала — MCLK для процессора, SMCLK для быстрой периферии и ACLK для медленной — и несколько источников: встроенный генератор DCO, часовой кварц, генераторы VLO и REFO. Модуль тактирования отличается по семействам: Basic Clock+ у G2xx, система CS с FLL у FR2xx и FR4xx, CS с заводскими частотами у FR5xx. Разбираем, как настроить частоту в каждом случае.

Обновлено Редакция GAW

Тактирование MSP430 устроено одинаково по смыслу во всех семействах: процессор работает от MCLK, быстрая периферия — таймеры, UART, SPI — от SMCLK, а медленная, в том числе часы и сторожевой таймер в режимах сна, — от ACLK около 32 кГц. Различаются источники и способ задать частоту. Основы — в статье «Архитектура MSP430», семейства — на странице «MSP430 с FRAM».

СемействоМодульКак задаётся частота процессораРуководство
MSP430G2xx, MSP430F2xxBasic Clock+DCO по заводским калибровочным константам или вручнуюSLAU144
MSP430FR2xx, MSP430FR4xxCS с FLLDCO, стабилизированный FLL по опоре 32 кГцSLAU445
MSP430FR5xx, MSP430FR6xxCSDCO на заводских фиксированных частотахSLAU367

Basic Clock+ (G2xx)

Источники по SLAU144: DCO, генератор кварца LFXT1 — для часового кварца 32768 Гц или, у части микросхем, кварца 0,4–16 МГц, второй кварцевый генератор XT2 у некоторых микросхем и маломощный генератор VLO около 12 кГц. MCLK и SMCLK можно взять от любого из них, ACLK — от LFXT1 или VLO; у каждого сигнала делитель 1, 2, 4 или 8.

Частоту DCO задают три поля:

ПолеЧто задаёт
RSELx (4 бита)один из 16 диапазонов
DCOx (3 бита)один из 8 шагов внутри диапазона, примерно через 10 %
MODx (5 бит)модуляция: смешивание шагов DCOx и DCOx + 1 на 32 такта

Подбирать их вручную не нужно: у MSP430G2553 в сегменте A информационной памяти записаны калибровочные константы для 1, 8, 12 и 16 МГц. По SLAU144 их копируют так — сначала обнулить DCOCTL, затем записать константы:

CLR.B  &DCOCTL                ; lowest DCOx and MODx first
MOV.B  &CALBC1_1MHZ,&BCSCTL1  ; range
MOV.B  &CALDCO_1MHZ,&DCOCTL   ; DCO step and modulation

По даташиту G2553 калиброванная частота держится в пределах ±3 % по температуре или напряжению и до ±6 % во всём диапазоне условий. Для асинхронного UART этого часто хватает, но запаса мало — точнее работать от кварца. После сброса MCLK и SMCLK идут от DCO на частоте около 1,1 МГц, ACLK — от LFXT1 с внутренними конденсаторами 6 пФ. Внутренние конденсаторы для часового кварца выбираются битами XCAPx: 1, 6, 10 или 12,5 пФ.

CS с FLL (FR2xx, FR4xx)

Источники по SLAU445: кварц XT1, внутренний генератор REFO на 32 кГц, VLO около 10 кГц, генератор MODCLK около 5 МГц и DCO. MCLK берётся от DCO, REFO, XT1 или VLO с делителем от 1 до 128, SMCLK всегда получается из MCLK с делителем 1, 2, 4 или 8, а ACLK — от XT1 или REFO и не должен превышать 40 кГц.

DCO стабилизирует FLL — петля автоподстройки по опоре 32768 Гц от REFO или кварца:

fDCOCLKDIV=(FLLN+1)⋅fFLLREFCLKn,fDCOCLK=2FLLD⋅fDCOCLKDIVf_\text{DCOCLKDIV} = (\text{FLLN} + 1) \cdot \frac{f_\text{FLLREFCLK}}{n}, \qquad f_\text{DCOCLK} = 2^{\text{FLLD}} \cdot f_\text{DCOCLKDIV}

После сброса FLLN = 31 и FLLD = 1: DCOCLKDIV = 32 · 32768 = 1 048 576 Гц, MCLK и SMCLK около 1 МГц. Чтобы получить 16 МГц, по порядку из SLAU445:

ШагЧто сделать
1FRAM: записать пароль A5h в FRCTL0 и один такт ожидания NWAITS = 1 — без него выше 8 МГц нельзя
2выключить FLL: установить бит SCG0
3выбрать опору: SELREF = REFO (или XT1, если кварц запущен)
4очистить CSCTL0
5CSCTL1: DCORSEL = 101b — диапазон 16 МГц
6CSCTL2: FLLD = 000b (÷1), FLLN = 487 — (487 + 1) · 32768 ≈ 15,99 МГц
7выполнить три NOP, сбросить SCG0 — включить FLL
8ждать, пока флаги FLLUNLOCK не покажут захват

Точность получается как у опоры: по даташиту MSP430FR2433 на 16 МГц от REFO — ±1 % при 25 °C и ±2 % во всём диапазоне температур, от часового кварца — ±0,5 %.

CS с фиксированными частотами (FR5xx, FR6xx)

У FR5xx и FR6xx FLL нет. По SLAU367 частоту DCO выбирают из заводских значений битами DCORSEL и DCOFSEL:

DCOFSELDCORSEL = 0DCORSEL = 1
01 МГц1 МГц
12,67 МГц5,33 МГц
23,5 МГц7 МГц
34 МГц8 МГц
45,33 МГц16 МГц
57 МГц21 МГц
68 МГц24 МГц

Частоты выше 16 МГц делят в системе тактирования: процессор MSP430FR5969 работает до 16 МГц, а выше 8 МГц нужен такт ожидания FRAM. По даташиту FR5969 подстроенные частоты держатся в пределах ±3,5 %. После сброса MCLK и SMCLK идут от DCO, делённого на 8. Кроме часового кварца LFXT здесь есть генератор HFXT для высокочастотного кварца.

Кварц и его сбой

Переход на кварц по SLAU144 выглядит так: включить генератор, сбросить флаг сбоя OFIFG, подождать не меньше 50 мкс и проверить флаг; повторять, пока OFIFG не перестанет устанавливаться, и только потом переключить MCLK на кварц. Если кварц остановится в работе, флаг снова установится, MCLK автоматически перейдёт на DCO, а при разрешённом прерывании будет вызвано NMI — программа должна обработать это сама. У FR5xx по SLAU367 при неготовом кварце ACLK временно берётся от LFMODCLK, а MCLK и SMCLK — от MODCLK.

Частота SMCLK или ACLK задаёт скорость UART, поэтому её точность прямо влияет на связь — настройки модуля eUSCI считает калькулятор скорости UART.

Частые вопросы

Как установить 16 МГц на MSP430G2553?

Скопировать заводские калибровочные константы: сначала обнулить DCOCTL, затем записать CALBC1_16MHZ в BCSCTL1 и CALDCO_16MHZ в DCOCTL — так TI показывает в SLAU144 для 1 МГц. Константы хранятся в сегменте A информационной памяти; по даташиту калиброванная частота держится в пределах ±3 % по температуре и до ±6 % во всём диапазоне. Для 16 МГц питание должно быть не ниже 3,3 В.

Как получить 16 МГц на MSP430FR2433?

Через FLL от генератора REFO 32768 Гц: множитель FLLN = 487 даёт (487 + 1) · 32768 ≈ 15,99 МГц. Порядок по SLAU445: выключить FLL битом SCG0, выбрать опору, очистить CSCTL0, задать диапазон DCORSEL на 16 МГц и FLLN с FLLD, выждать три такта, включить FLL и дождаться снятия флагов FLLUNLOCK. Перед этим — один такт ожидания FRAM, иначе выше 8 МГц микроконтроллер сбросится.

На какой частоте MSP430 стартует после сброса?

У G2xx по SLAU144 — около 1,1 МГц от DCO, у FR2xx и FR4xx по SLAU445 — около 1 МГц от DCO, стабилизированного FLL по генератору REFO, у FR5xx по SLAU367 — частота DCO, делённая на 8. Процессор начинает работать сразу: у G2xx код стартует быстрее чем за 2 мкс после сброса.

Что будет, если кварц не запустится?

MSP430 переключится на внутренний генератор. По SLAU144 при сбое кварца устанавливается флаг OFIFG, и если MCLK шёл от кварца, он автоматически переходит на DCO; при разрешённом прерывании вызывается NMI. Поэтому TI рекомендует переходить на кварц только после того, как флаг OFIFG перестанет устанавливаться, — сбрасывая его и проверяя через 50 мкс.

Источники

  1. Texas Instruments. MSP430F2xx, MSP430G2xx Family User's Guide (SLAU144K, revised August 2022) — гл. 5 — Basic Clock Module+: источники LFXT1, XT2, DCO, VLO 12 кГц; MCLK, SMCLK и ACLK с делителями 1, 2, 4, 8; после сброса MCLK и SMCLK от DCO около 1,1 МГц, RSELx = 7, DCOx = 3, старт кода быстрее 2 мкс; 16 диапазонов RSELx, 8 шагов DCOx около 10 %, модулятор MODx; калибровочные константы в сегменте A; внутренние конденсаторы кварца 1, 6, 10, 12,5 пФ; разд. 5.2.7 — сбой генератора OFIFG и переключение MCLK на DCO, порядок перехода на кварц
  2. Texas Instruments. MSP430G2x53, MSP430G2x13 Mixed Signal Microcontroller (SLAS735J, revised May 2013) — калиброванные частоты 1, 8, 12, 16 МГц: ±0,5 % типично и до ±3 % по температуре, до ±6 % во всём диапазоне
  3. Texas Instruments. MSP430FR4xx and MSP430FR2xx Family User's Guide (SLAU445I, revised March 2019) — гл. 3 — система тактирования CS: источники XT1, REFO, VLO, DCO с FLL, MODCLK 5 МГц; ACLK от XT1 или REFO не выше 40 кГц, MCLK с делителем 1–128, SMCLK от MCLK с делителем 1–8; после сброса MCLK и SMCLK около 1 МГц от DCO с FLL и REFO; формула частоты, порядок настройки FLL и опрос FLLUNLOCK; DCORSEL 1–24 МГц; разд. 6.10.1 — FRCTL0, пароль A5h, NWAITS
  4. Texas Instruments. MSP430FR2433 Mixed-Signal Microcontroller (SLASE59F, revised December 2019) — до 8 МГц без тактов ожидания FRAM, до 16 МГц с одним; FLL на 16 МГц: ±1 % от REFO при 25 °C, ±2 % по температуре, ±0,5 % от кварца
  5. Texas Instruments. MSP430FR58xx, MSP430FR59xx, and MSP430FR6xx Family User's Guide (SLAU367P, revised April 2020) — гл. 3 — CS: DCO с заводской подстройкой, DCOFSEL и DCORSEL: от 1 до 24 МГц; после сброса MCLK и SMCLK от DCO, делённого на 8; кварцы LFXT и HFXT, сбой генератора — переход на MODCLK
  6. Texas Instruments. MSP430FR596x, MSP430FR594x Mixed-Signal Microcontrollers (SLAS704G, revised August 2018) — табл. 5-6 — подстроенные частоты DCO с точностью ±3,5 %

Нашли ошибку?