STM32 STM32VL Discovery STM32F100RBT6 (урок 3) RCC, тактирование

| 28.03.2015

STM32VL Discovery STM32F100RBT6 (урок 3) RCC, тактирование

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

Для формирования основной системной частоты (SYSCLK) могут использоваться три различных источника:
1)   HSI oscillator clock (внутренний источник тактов)
2)   HSE oscillator clock (внешний источник тактов)
3)   PLL clock (внутренний блок умножения частоты)

Устройство системы тактирования RCC

Taktirovanie

Набор разных сведений про тактирование
1) Независимое включение/выключение источников тактирования
Каждый источник тактового сигнала может быть независимо включен или выключен, если он не используется, чтобы оптимизировать потребляемую мощность.
2) Для переферийных устройст.
Все периферийные тактовые сигналы являются производными от системного тактового сигнала (SYSCLK).
3) Система защиты от нестабильной работы и отказов генератора HSE.
Встроенная система контроля CSS блока тактирования микроконтроллеров STM32 способна отслеживать отказ или нестабильную работу генератора HSE, осуществлять автоматическое переключение тактирования на встроенный генератор HSI с автоматическим вызовом немаскируемого прерывания NMI. Для активации данной функции блок CSS необходимо программно включить с помощью установки бита CSSON в регистре RCC_CR.
4) Есть возможность тактировать сторонние устройства через ножку МК.
Сигналы тактовой частоты SYSCLK, HSE, HSI и PLLCLK, поделённой на два, могут быть подключены к выходному сигналу MCO (Microcontroller Clock Output) микроконтроллера через мультиплексор.
5) После запуска и сброса микроконтроллер тактируется от встроенного RC-генератора HSI.
Блок HSI (HighSpeed Internal) представляет собой встроенный RC генератор с частотой 8 МГц. При включении микроконтроллер автоматически запускается от тактовой частоты HSI. Генератор HSI начинает работать при появлении питающего напряжения VCC и после выхода в нормальный устойчивый режим работы устанавливает битовый флаг HSIRDY в регистре RCC_CR. Производитель гарантирует стабильность частоты от –1,9 до +1,3% при изменении температуры микроконтроллера от 0 до 70°C соответственно.
6) Вариант тактирования от стороннего источника импульсов такта.
Допускается также подключение внешнего источника тактовых импульсов частотой от 1 до 24 МГц и скважностью 50% к входу OSC_IN.

Ссылки на комплектующие:
Отладочная плата: STM32VL Discovery (ссылка)
Микроконтроллер: STM32F100RBT6 (
ссылка)
Провод USB :  (ссылка)
Преобразователь USB-UART : FTDI (ссылка)

Макетная плата: (ссылка)
Блок питания на 12V (ссылка)
Преобразователь 12V  в  3,3/5V (ссылка)
Перемычки для макетной платы (ссылка)

Регистры

RCC_CR [0x0000 XX83]RCC_CR

Описание: Регистр управления тактовыми.
Биты:
Bit 25    PLLRDY:    PLL clock ready flag
Описание: 
Флаг готовности сигнала от PLL(ставится аппаратно). Этот флаг необходим для опроса, чтобы убедиться в готовности сигнала с блока PLL.

Bit 24    PLLON:    PLL enable
Описание: 
Ставится и очищается программно, чтобы разрешить работу PLL.

Bit 19    CSSON:    Clock security system enable
Описание: 
Ставится и очищается программно, чтобы разрешить детектор тактового сигнала(от внешнего источника).

Bit 18    HSEBYP:    External high-speed clock bypass
Описание: 
Ставится и очищается программой отладчика, чтобы обойти генератор с внешним резонатором.

Bit 17    HSERDY:    External high-speed clock ready flag
Описание: 
Ставится аппаратно и показывает, что внешний 3-25 МГц генератор стабилизировался.

Bit 16    HSEON:    External high-speed clock ready flag
Описание: 
Ставится и очищается программно, чтобы принудительно включить внешний 3-25 МГц генератор.

Bits 15:8    HSICAL[7:0]:    Internal high-speed clock calibration
Описание: 
Эти биты инициируются автоматически, при запуске.

Bits 7:3    HSITRIM[4:0]:    Internal high-speed clock trimming
Описание: 
Эти биты обеспечивают дополнительное, программируемое пользователем значение подстройки частоты, которое добавляется к битам HSICAL[7:0]. Это значение можно запрограммировать, чтобы скорректировать влияние изменения напряжения и температуры на частоту внутреннего HSI RC. Шаг подстройки, между двумя последовательными шагами HSICAL, составляет приблизительно 40 кГц.

Bit 1    HSIRDY:    Internal high-speed clock ready flag
Описание: 
Ставится аппаратно и показывает, что внутренний 8 МГц RC генератор стабилизировался.

Bit 0    HSION:    Internal high-speed clock enable
Описание: 
Ставится и очищается программно, чтобы принудительно включить внутренний генератор 8 МГц.

RCC_CFGR  [0x0000 0000]RCC_CFGR

Описание: Это регистр конфигурации тактового сигнала.
Биты:
Bits 26:24    MCO[2:0]:    Microcontroller clock output
Описание: 
Определяем работу ножки MCO. Можно к этой ножке подключить разные источники частоты.

Bits 21:18    PLLMUL[3:0]:    PLL multiplication factor
Описание: 
Определяет коэффициент умножения для PLL.

Bit 17    PLLXTPRE:    LSB of division factor PREDIV1
Описание: 
Ставится и очищается программно, чтобы выбрать младший бит коэффициента деления PREDIV1. Это тот же самый бит, что и bit(0) в регистре RCC_CFGR2, поэтому, изменение bit(0) в регистре RCC_CFGR2 изменяет и этот бит соответственно.

Bit 16    PLLSRC:    PLL entry clock source
Описание: 
Ставится и очищается программно, чтобы выбрать источник входного сигнала для PLL.

Bits 15:14    ADCPRE[1:0]:    ADC prescaler
Описание: 
Определяем делитель для тактовой частоты АЦП.

Bits 13:11    PPRE2[2:0]:    APB high-speed prescaler (APB2)
Описание: 
Определяем делитель для тактовой частоты APB2.

Bits 7:4    HPRE[3:0]:    AHB prescaler
Описание: 
Определяем делитель для тактовой частоты AHB.

Bits 3:2    SWS[1:0]:    System clock switch status
Описание: 
Ставится и очищается аппаратно, чтобы показать, какой из источников используется в качестве системного тактового сигнала.

Bits 1:0    SW[1:0]:    System clock Switch
Описание:  
Ставится и очищается программно, чтобы выбрать источник для SYSCLK.

RCC_CIR  [0x0000 0000]RCC_CIR

Описание: Есть набор битов сброса флагов от прерываний. Это регистр содержит биты (разрешения/запрета) прерывания от источников тактирования. И конечно сами флаги прерываний. (разрешается единицей).(произошло = единица).
Биты:
Bits 23    CSSC:    Clock security system interrupt clear
Описание: 
Этот бит ставится программно, чтобы очистить флаг CSSF.

Bits 20    PLLRDYC:    PLL ready interrupt clear
Описание: 
Этот бит ставится программно, чтобы очистить флаг PLLRDYF.

Bits 19    HSERDYC:    HSE ready interrupt clear
Описание: 
Этот бит ставится программно, чтобы очистить флаг HSERDYF.

Bits 18    HSIRDYC:    HSI ready interrupt clear
Описание: 
Этот бит ставится программно, чтобы очистить флаг HSIRDYF.

Bits 17   LSERDYC:    LSE ready interrupt clear
Описание: 
Этот бит ставится программно, чтобы очистить флаг LSERDYF.

Bits 16   LSIRDYC:    LSI ready interrupt clear
Описание: 
Этот бит ставится программно, чтобы очистить флаг LSIRDYF.

Bits 12   PLLRDYIE:    PLL ready interrupt enable
Описание: 
Ставится и очищается программно, чтобы разрешить/запретить прерывание от PLL.

Bits 11   HSERDYIE:    HSE ready interrupt enable
Описание: 
Ставится и очищается программно, чтобы разрешить/запретить прерывание от HSE.

Bits 10   HSIRDYIE:    HSI ready interrupt enable
Описание: 
Ставится и очищается программно, чтобы разрешить/запретить прерывание от HSI.

Bits 9   LSERDYIE:    LSE ready interrupt enable
Описание: 
Ставится и очищается программно, чтобы разрешить/запретить прерывание от LSE.

Bits 8   LSIRDYIE:    LSI ready interrupt enable
Описание: 
Ставится и очищается программно, чтобы разрешить/запретить прерывание от LSI.

Bits 7   CSSF:    Clock security system interrupt flag
Описание: 
Ставится аппаратно, когда обнаружен отказ HSE.

Bits 4   PLLRDYF:    PLL ready interrupt flag
Описание: 
Ставится аппаратно, когда есть сцепление с PLL.

Bits 3   HSERDYF:    HSE ready interrupt flag
Описание: 
Ставится аппаратно, когда частота от HSE генератора становится стабильной.

Bits 2   HSIRDYF:    HSI ready interrupt flag
Описание: 
Ставится аппаратно, когда частота от HSI генератора становится стабильной.

Bits 1   LSERDYF:    LSE ready interrupt flag
Описание: 
Ставится аппаратно, когда частота от LSE генератора становится стабильной.

Bits 0   LSIRDYF:    LSI ready interrupt flag
Описание: 
Ставится аппаратно, когда частота от LSI генератора становится стабильной.

RCC_APB2RSTR  [0x0000 0000]RCC_APB2RSTR Описание: Этот регистр содержит биты для сброса периферии  APB2. Собственно, записываем единицу тогда соответствующее периферийное устройство сбросится. Сброс устройства обеспечивает установку значений в регистры блока в значения по умолчанию.

RCC_APB1RSTR  [0x0000 0000]RCC_APB1RSTRОписание: Этот регистр содержит биты для сброса периферии  APB1. Собственно, записываем единицу тогда соответствующее периферийное устройство сбросится. Сброс устройства обеспечивает установку значений в регистры блока в значения по умолчанию.

RCC_AHBENR  [0x0000 0014]RCC_AHBENR Описание: Этот регистр содержит биты для разрешения тактирования периферии  AHB. Собственно, записываем единицу тогда соответствующее периферийное устройство становится рабочим. Только после разрешения тактирования блока можно с ним работать (чтение/запись регистров).

RCC_APB2ENR  [0x0000 0000]RCC_APB2ENRОписание: Этот регистр содержит биты для разрешения тактирования периферии  APB2. Собственно, записываем единицу тогда соответствующее периферийное устройство становится рабочим. Только после разрешения тактирования блока можно с ним работать (чтение/запись регистров).

RCC_APB1ENR  [0x0000 0000]RCC_APB1ENRОписание: Этот регистр содержит биты для разрешения тактирования периферии  APB1. Собственно, записываем единицу тогда соответствующее периферийное устройство становится рабочим. Только после разрешения тактирования блока можно с ним работать (чтение/запись регистров).

RCC_BDCR  [0x0000 0000]RCC_BDCR Описание: Регистр управления доменом BKP
Биты:
Bit 16    BDRST:    Backup domain software reset
Описание: 
Программный сброс домена BKP (1 = сбрасываем).

Bit 15    RTCEN:    RTC clock enable
Описание: 
Разрешение подачи тактового сигнала на RTC.

Bits 9:8    RTCSEL[1:0]:    RTC clock source selection
Описание: 
Ставится программно, чтобы выбрать источник тактового сигнала для RTC.

Bit 2    LSEBYP:    External Low Speed oscillator bypass
Описание: 
Ставится и очищается программно, чтобы обойти LSE генератор в режиме отладки.

Bit 1    LSERDY:    External Low Speed oscillator ready
Описание: 
Ставится аппаратно и показывает, что внешний 32 кГц генератор стабилизировался.

Bit 0    LSEON:    External Low Speed oscillator enable
Описание: 
Ставится и очищается программно. Разрешение работы внешнего низко-частотного генератора.(разрешается единицей)

RCC_CSR  [0x0000 0000]RCC_CSRОписание: Регистр управления/статуса. (произошло = единица).(разрешается единицей).
Биты: 
Bit 31    LPWRRSTF:    Low-power reset flag
Описание: 
Ставится аппаратно, когда случается сброс от контроллера пониженного потребления.

Bit 30   WWDGRSTF:    RTC clock enable
Описание: 
Ставится аппаратно, когда случается сброс от оконного WatchDog.

Bits 29    IWDGRSTF:    Independent watchdog reset flag
Описание: 
Ставится аппаратно, когда случается сброс от независимого WatchDog. 

Bit 28    SFTRSTF:    Software reset flag
Описание:
 Ставится аппаратно, когда случается “Программный сброс”. 

Bit 27    PORRSTF:    POR/PDR reset flag
Описание: 
Ставится аппаратно, когда случается от “Подачи/Снятия питания”. 

Bit 26    PINRSTF:    PIN reset flag
Описание: 
Ставится аппаратно, когда случается от вывода NRST.

Bit 24    RMVF:    Remove reset flag
Описание: 
Ставится программно, что бы сбросить флаг NRST.

Bit 1   LSIRDY:    Internal low speed oscillator ready
Описание: 
Ставится и очищается аппаратно, чтобы показать, что внутренний 40 кГц RC генератор стабилизировался.

Bit 0   LSION:    Internal low speed oscillator enable
Описание: 
Разрешение работы внутреннего низко-частотного генератора.

RCC_CFGR2  [0x0000 0000]

RCC_CFGR2

Описание: Регистр конфигурации тактовых 2
Биты: 
Bit 3:0    PREDIV1[3;0]:    PREDIV1 division factor
Описание: 
Ставится и очищаются программно, чтобы управлять коэффициентом деления PREDIV1.

Практика

Инициализацию системы тактирования следует производить после того, как будут определены необходимые источники генерации и диапазоны значений тактовых частот для всех блоков.
Система тактирования предоставляет также возможность проверять работу некоторых важных блоков с по мощью битовых флагов готовности, что позволяет осуществлять проверку активации инициируемых блоков в процессе самой инициализации. После включения или сброса микроконтроллер тактируется от встроенного RCгенератора HSI. В процессе работы возможно переключение источника тактовых импульсов при помощи установки соответствующей комбинации двух младших битов SW (System clock switch) регистра RCC_CFGR.
Определить, какой из генераторов в данный момент используется в качестве тактового, можно по состоянию битов SWS (System clock switch status).
Перед выбором источника тактового сигнала необходимо предварительно произвести его запуск и удостовериться в его готовности к работе.

Драйвер для отладчика  (Ссылка)

Библиотека

Пример

Ссылки на комплектующие:
Отладочная плата: STM32VL Discovery (ссылка)
Микроконтроллер: STM32F100RBT6 (
ссылка)
Провод USB :  (ссылка)
Макетная плата: (ссылка)


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *