Тактирование 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, MSP430F2xx | Basic Clock+ | DCO по заводским калибровочным константам или вручную | SLAU144 |
| MSP430FR2xx, MSP430FR4xx | CS с FLL | DCO, стабилизированный FLL по опоре 32 кГц | SLAU445 |
| MSP430FR5xx, MSP430FR6xx | CS | DCO на заводских фиксированных частотах | 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 или кварца:
После сброса FLLN = 31 и FLLD = 1: DCOCLKDIV = 32 · 32768 = 1 048 576 Гц, MCLK и SMCLK около 1 МГц. Чтобы получить 16 МГц, по порядку из SLAU445:
| Шаг | Что сделать |
|---|---|
| 1 | FRAM: записать пароль A5h в FRCTL0 и один такт ожидания NWAITS = 1 — без него выше 8 МГц нельзя |
| 2 | выключить FLL: установить бит SCG0 |
| 3 | выбрать опору: SELREF = REFO (или XT1, если кварц запущен) |
| 4 | очистить CSCTL0 |
| 5 | CSCTL1: DCORSEL = 101b — диапазон 16 МГц |
| 6 | CSCTL2: 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:
| DCOFSEL | DCORSEL = 0 | DCORSEL = 1 |
|---|---|---|
| 0 | 1 МГц | 1 МГц |
| 1 | 2,67 МГц | 5,33 МГц |
| 2 | 3,5 МГц | 7 МГц |
| 3 | 4 МГц | 8 МГц |
| 4 | 5,33 МГц | 16 МГц |
| 5 | 7 МГц | 21 МГц |
| 6 | 8 МГц | 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 мкс.
Источники
- 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, порядок перехода на кварц
- Texas Instruments. MSP430G2x53, MSP430G2x13 Mixed Signal Microcontroller (SLAS735J, revised May 2013) — калиброванные частоты 1, 8, 12, 16 МГц: ±0,5 % типично и до ±3 % по температуре, до ±6 % во всём диапазоне
- 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
- Texas Instruments. MSP430FR2433 Mixed-Signal Microcontroller (SLASE59F, revised December 2019) — до 8 МГц без тактов ожидания FRAM, до 16 МГц с одним; FLL на 16 МГц: ±1 % от REFO при 25 °C, ±2 % по температуре, ±0,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
- Texas Instruments. MSP430FR596x, MSP430FR594x Mixed-Signal Microcontrollers (SLAS704G, revised August 2018) — табл. 5-6 — подстроенные частоты DCO с точностью ±3,5 %
Нашли ошибку?
Смотрите также
- MSP43016-битное ядро TI со сверхмалым потреблением: семейства, G2553, отладка
- Архитектура MSP430Регистры, память, режимы LPM, тактирование, прерывания, WDT, порты
- MSP430 с FRAMFR2xx, FR4xx, FR5xx, FR6xx: память, частота, токи, режимы LPMx.5, выбор
- DCOВнутренний генератор с цифровой настройкой: запуск, калибровка, точность
- FLLПодстройка DCO под кратное опорной частоте: формула, точность, MSP430
- Скорость UARTUBRR, BRR, TH1 и ошибка скорости