Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MSP430_НВВ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.67 Mб
Скачать

3.3 Система тактирования

Внутреннее тактирование микроконтроллеров MSP430 осуществляется с помощью трех различных тактовых сигналов:

  • MCLK – Master Clock – используется для тактирования процессорного ядра микроконтроллера;

  • SMCLK – Sub-Main Clock – используется для тактирования периферийных устройств;

  • ACLK – Auxiliary Clock – вспомогательная частота, также может использоваться для тактирования периферийных устройств.

В качестве источников для этих частот могут использоваться два встроенных генератора, предназначенных для работы с внешними резонаторами – LFXT1 и XT2, и управляемый генератор DCO (Digital Controlled Oscillator), выполненный на базе встроенного RC- генератора.

Генератор LFXT1 может работать в двух режимах – низкочастотном и высокочастотном. В низкочастотном режиме он адаптирован на прямое подключение стандартного резонатора частотой 32768 Hz. В высокочастотном режиме он может работать с резонаторами в частотном диапазоне от 450 kHz до 8 MHz.

Генератор XT2 также может работать в диапазоне 450 kHz - 8 MHz. В младших моделях MSP430 генератор XT2 отсутствует.

Частоту генератора DCO можно перестраивать программно в диапазоне ≈ 120 kHz – 5 MHz. Следует заметить, однако, что частота, генерируемая DCO, существенно зависит от напряжения питания и температуры.

В реальных системах для тактирования CPU и быстрой периферии используются, как правило, высокочастотные сигналы MCLK и SMCLK соответственно, а для тактирования медленной периферии – сигнал ACLK с частотой 32768 Hz. Генератор DCO используется для приложений, не требующих высокой точности и стабильности генерации временных интервалов.

Структура модуля тактирования изображена на рисунке 2.

Рисунок 2. Структурная схема модуля тактирования

Как видно из рисунка, систему тактирования можно гибко настраивать, исходя из требований прикладной задачи, которая реализуется MSP микроконтроллером. В качестве источника для частоты MCLK можно программным образом выбрать частоты, выдаваемые генераторами LFXT1, XT2 или DCO. Кроме того, входную частоту сигнала MCLK можно снизить, используя предварительный делитель частоты. Наконец, для уменьшения потребления микроконтроллера, частоту MCLK можно выключить с помощью бита CPUOFF статусного регистра SR. Частоты ACLK и SMCLK также можно понизить с помощью предварительных делителей, а частоту SMCLK можно выключить с помощью бита SCG1 статусного регистра SR. Генератор DCO использует частоту встроенного RC генератора, который для минимизации общего потребления так же может быть выключен с помощью бита статусного регистра SCG0. Так как центральный процессор тактируется частотой MCLK, а периферийные устройства частотами ACLK или SMCLK, имеется возможность использования нескольких режимов пониженного потребления LPM (Low Power Mode) всего микроконтроллера в зависимости от комбинации бит CPUOFF, OSCOFF, SCG1, SCG0 статусного регистра.

Различают всего 6 режимов LPM. Комбинации управляющих бит и описание режимов LPM приведено в таблице 6.

Таблица 6

Режим

SCG1

SCG0

OscOff

CPUOff

Описание

Активный

0

0

0

0

CPU и периферия активны

LPM0

0

0

0

1

CPU выключено; вся периферия активна

LPM1

0

1

0

1

CPU выключен; DCO выключен, если не используется для MCLK или SMCLK; вся периферия активна

LPM2

1

0

0

1

CPU, SMCLK , DCO выключены; RC генератор и ACLK активны

LPM3

1

1

0

1

Активен только ACLK

LPM4

X

x

1

1

CPU и вся периферия остановлены

Во всех режимах пониженного потребления, включая LPM4, ОЗУ сохраняет свое содержимое, на портах вывода удерживается логическое состояние, предшествующее переходу в низко потребляющий режим.

Уровень потребления микросхемы различен для разных режимов LPM. Его типовое значение при питании в 3 В соответствует следующим значениям:

  • Активный – 340 μA/MHz;

  • LPM0 – 70 μA/MHz;

  • LPM2 – 17 μA/MHz;

  • LPM3 – 2 μA/MHz;

  • LPM4 – 0.1 μA/MHz.

Выход из режимов LPM0-LPM3 осуществляется по прерыванию от работающих периферийных устройств или сигналом RESET. Выход из режимов LPM4 может быть осуществлен только по сигналу RESET, т.к. вся периферия заморожена. Естественно внешний вывод RESET/NMI должен быть сконфигурирован для функции сброса.

При вхождении в прерывание из режимов LPM процессорное ядро и вся периферия переходит в активное состояние, т.к. во все биты статусного регистра записываются нули (см. п. 3.2 ). Интересен тот факт, что при выходе из подпрограммы обработки прерывания с помощью команды RETI, режим LPM автоматически восстанавливается, т.к. в SR загружается из стека его предыдущее состояние. Если после прерывания, необходимо, чтобы CPU находился в активном режиме, перед выходом из прерывания необходимо подкорректировать исходное состояние SR, сохраненное в стеке. Это можно сделать, например, командой

bic #CPUOFF, 0(SP)

В этом случае команда RETI загрузит в SR значение со сброшенным битом CPUOFF.

Кроме битов, расположенных в статусном регистре, на работу модуля тактирования влияют биты, расположенные в собственных регистрах управления. Регистры управления модуля тактирования приведены в таблице 7. Ко всем регистрам следует обращаться с помощью байтовых форм инструкций.

Таблица 7

Наименование

Назначение

Адрес

Началь. Значение

BCSCTL1

Регистр управления 1 системы тактирования

57h

84h

BCSCTL2

Регистр управления 2 системы тактирования

58h

0

DCOCTL

Регистр управления DCO

56h

60h

IE1

Регистр разрешения прерывания

0

0

IFG1

Регистр флагов прерывания

2

0

    • BCSCTL1 (Base Clock System Control 1) – регистр управление базовой системы тактирования 1.

7 6 5 4 3 2 1 0

XT2OFF

XTS

DIVA 1,0

XT5V

RSEL 2,1,0

  • Бит 7 - XT2OFF – выключение генератора XT2. Устанавливается/сбрасывается программно для запрета/разрешения работы генератора XT2. По сбросу в этот бит записывается 1, поэтому по умолчанию генератор XT2 запрещен.

  • Бит 6 – XTS (XT1 Select) – выбор режима генератора LFXT1. Устанавливается программно для выбора режима работы LFXT1:

0 – низкочастотный режим (Low Frequency Mode);

1 – высокочастотный режим (High Frequency Mode).

  • Биты 5 и 4 – DIVA (Divider ACLK) – делитель частоты ACLK. Устанавливают коэффициент делителя для частоты ACLK

DIVA1

DIVA0

Делитель

0

0

1 / 1

0

1

1 / 2

1

0

1 / 4

1

1

1 / 8

  • Бит 3 – XT5V - всегда должен быть сброшен.

  • Биты 2, 1, 0 – RSEL (Resistor Select) – выбор резистора. Комбинация этих бит устанавливает номинал внутреннего резистора RC генератора, что, в свою очередь, приводит к перестройке диапазона частоты, генерируемой RC генератором. При сбросе в эту группу бит аппаратно записывается комбинация 100b, что соответствует среднему диапазону частот. Зависимость генерируемой частоты DCO от содержимого этих бит будет рассмотрена позже.

    • BCSCTL2 (Base Clock System Control 2) – регистр управление базовой системы тактирования 2.

7 6 5 4 3 2 1 0

SELM 1,0

DIVM 1,0

SELS

DIVS 1,0

DCOR

  • Бит 7, 6 – SELM (Select MCLK) – выбор источника для MCLK

SELM1

SELM0

Источник

0

0

DCOCLK

0

1

DCOCLK

1

0

XT2CLK

1

1

LFXT1CLK

  • Биты 5, 4 – DIVM (Divider MCLK) – делитель частоты MCLK. Устанавливают коэффициент делителя для частоты MCLK

DIVM1

DIVM0

Делитель

0

0

1 / 1

0

1

1 / 2

1

0

1 / 4

1

1

1 / 8

  • Бит 3 – SELS (Select SMCLK) – выбор источника для SMCLK

0 – источник DCOCLK;

1 – источник XT2CLK.

  • Биты 2 и 1 – DIVS (Divider SMCLK) – делитель частоты SMCLK. Устанавливают коэффициент делителя для частоты SMCLK

DIVS1

DIVS0

Делитель

0

0

1 / 1

0

1

1 / 2

1

0

1 / 4

1

1

1 / 8

  • Бит 0 – DCOR (DCO Resistor) – выбор частотозадающего резистора для RC генератора DCO

0 – внутренний резистор;

1 – внешний резистор, подключаемый к порту P2.5.

В том случае, если выбран внутренний резистор, его значение устанавливается битами RSEL регистра BCSCTL1.

    • DCOCTL (DCO Control) – регистр управление DCO.

7 6 5 4 3 2 1 0

DCO

MOD

  • Биты 7, 6 , 5 – DCO - содержимое этих бит подстраивает частоту DCO внутри диапазона RC генератора. Таким образом, частота DCO зависит как от битов RSEL, так и от рассматриваемых битов. Частоту, генерируемую DCO, принято обозначать как FDCOXY , где X- значение битов RSEL регистра BCSCTL1, а Y – значение битов DCO регистра DCOCTL. В технической документации приведены типовые значения частот FDCO при напряжении питания 3 В:

FDCO03 ≈ 0.13 MHz

FDCO13 ≈ 0.18 MHz

FDCO23 ≈ 0.28 MHz

FDCO33 ≈ 0.47 MHz

FDCO43 ≈ 0.75 MHz

FDCO53 ≈ 1.3 MHz

FDCO63 ≈ 2.0 MHz

FDCO73 ≈ 3.2 MHz

FDCO77 ≈ 4.9 MHz

При сбросе в эти биты записывается значение 011b для установки средней частоты генерации DCO. Таким образом, после сброса микроконтроллера его тактирование осуществляется от генератора DCO с частотой FDCO43 ≈ 0.75 MHz.

  • Биты 4, 3, 2, 1, 0 – MOD (Modulator) – смешивает частоты FDCO и FDCO+1 в пропорции, определяемой содержанием этих бит. Средний период генерируемой частоты можно определить по формуле

T = ((32-MODx)*TDCO + MODx *TDCO+1) / 32,

где TDCO и TDCO+1 - периоды частот FDCO и FDCO+1 соответственно.

Усредненную частоту генерации DCO можно определить по формуле:

F = 32* FDCO* FDCO+1/((32-MODx)* FDCO+1 + MODx * FDCO)

Регистры IE1 и IFG1, содержащие бит разрешения прерывания и флаг аварии осцилляторов, был рассмотрен в разделе 3.2.

Многоступенчатая подстройка частоты DCO позволяет достаточно точно (11 двоичных разрядов) выставить требуемую частоту генерации. Эта техника используется при построении программно-аппаратного умножителя частоты, что позволяет получить частоту DCO в определенное количество раз больше чем опорная частота. В качестве опорной частоты, как правило, используется генератор LFXT1 со стабильным внешним резонатором 32768 Hz, а высокие частоты MCLK и SMCLK генерируются с помощью DCO. Для обеспечения стабильности DCO, необходимо программно организовать периодическое измерение и подстройку генерируемой частоты таким образом, чтобы отношение FDCO и LFXT1CLK оставалось постоянным. Такая техника, несмотря на некоторую сложность реализации, дает возможность иметь хорошую производительность процессора при низком потреблении и уровне излучаемых электромагнитных помех.

Для удобства подстройки частоты при организации умножителя может потребоваться, чтобы номинальная частота DCO соответствовала средним значениям полей DCO и MOD регистра DCOCTL. Для достижения этого можно использовать режим внешнего резистора RC-генератора. Его номинал подбирается таким образом, чтобы удовлетворить данным условиям.

Следует добавить также, что при перестройке DCO с помощью поля RSEL его частота изменяется в соотношении

F RSEL+1 / F RSEL ≈ 1.65

При перестройке DCO с помощью поля DCO его частота изменяется в соотношении

F DCO+1 / F DCO ≈ 1.12

В качестве демонстрации механизма работы модулятора DCO приведем следующий пример. Предположим, поля RSEL = 4, DCO = 3 и MOD = 10.

Тогда FDCO43 = 750 kHz, а FDCO44 = 750 *1.12 = 840 kHz

Так как значение поля MOD отлично от нуля, на выходе DCO получим периодическую последовательность импульсов, из которых 10 периодов соответствуют частоте 840 kHz, а 22 периода – частоте 750 kHz. Усредненная частота определиться как

F=32*750*840/((32-10)*840 + 10*750)=775.98 kHz

ПРИМЕР .

Проинициализировать тактовую систему MSP430F14x.

Исходные данные:

LFXT1 = 32768 Hz

XT2 = 8 MHz

MCLK = 8 MHz

SMCLK = 4 MHz

ACLK = 32768 Hz

Для инициализации системы тактирования необходимо выполнить следующие шаги:

  1. Включить генератор XT2;

  2. Очистить бит OFIFG в регистре IFG1;

  3. Выдержать паузу не менее 50 μs ( см. описание IFG1.OFIFG в п.3.2);

  4. Проверить состояние бита OFIFG;

  5. Если OFIFG=1 (генератор еще не завелся) перейти к пункту 2;

  6. Настроить MCLK, SMCLK

  7. Выключить DCO.

bic.b #XT2OFF, &BCSCTL1 ; включить XT2

L1: bic.b #OFIFG, &IFG1 ; сбросить OFIFG

;

mov #0FFh, R4 ; программная задержка

L2: dec R4 ; пустыми циклами

jnz L2 ; закончена?

bit.b #OFIFG, &IFG ; тестирование OFIFG

jnz L1 ; OFIFG=0 ?

;

mov #SELM1+SELS+DIVS1, &BCSCTL2 ; MCLK, SMCLK от XT2,

; для SMCLK – делитель 1 / 2

bis.b #SCG0, SR ; выключить DCO

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]