STM32F407, разрешение тактирования периферийных устройств
Добавил(а) microsin
Описание системы генерации тактов STM32F407. Все непонятные терминины и сокращения см. в Словарике [1].
[Системные тактовые частоты]
SYSCLK System Clock, основная тактовая частота, относительно которой в основном тактируются все остальные периферийные устройства, за исключением USB OTG FS, USB OTG HS, I2S, SAI1, LTDC, Ethernet MAC.
HCLK тактовая частота, на которой работает ядро CPU.
PCLK1 тактовая частота для шины APB1.
PCLK2 тактовая частота для шины APB2.
В рабочем режиме (Run mode) скорость системных частот может быть уменьшена путем программирования регистров прескалера. Эти прескалеры могут также использоваться для замедления работы периферийных устройств перед тем, как войти в режим сна (Sleep mode). Прескалеры управляются регистром конфигурирования тактов RCC_CFGR.
Смещение адреса 0x08, значение после сброса 0x00000000. Время доступа по слову, полуслову и по байтам от 0 до 2 циклов ожидания (wait states). 1 или 2 цикла ожидания вставляются, если доступ произошел во время переключения источника тактирования.
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
MCO2
MCO2PRE
MCO1PRE
I2SSCR
MCO1
RTCPRE
rw
rw
rw
rw
rw
rw
rw
rw
rw
rw
rw
rw
rw
rw
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
PPRE2
PPRE1
Res.
HPRE
SWS
SW
rw
rw
rw
rw
rw
rw
rw
rw
rw
rw
r
r
rw
rw
Биты 9 и 8 зарезервированы, и должны сохраняться на значении после сброса.
MCO2[1:0]: Microcontroller clock output 2, управление выходом тактирования MCO2. Эти биты устанавливаются и сбрасываются программой. Выбор тактовой частоты может генерировать выбросы на выходе MCO2, поэтому строго рекомендуется конфигурировать эти биты только сразу после сброса, перед тем как разрешить работу внешних генераторов и PLL.
MCO2PRE: MCO2 prescaler, программируемый делитель для выхода MCO2. Эти биты устанавливаются и сбрасываются программно, чтобы установить дополнительный делитель тактовой частоты перед появлением её на выходе MCO2. Модификация бит прескалера может привести к паразитным импульсам на выходе MCO2, поэтому строго рекомендуется конфигурировать эти биты только сразу после сброса, перед тем как разрешить работу внешних генераторов и PLL.
0xx: прескалер выключен, деления частоты не происходит. 100: деление чатоты на 2. 101: деление чатоты на 3. 110: деление чатоты на 4. 111: деление чатоты на 5.
MCO1PRE: MCO1 prescaler, программируемый делитель для MCO1. Эти биты устанавливаются и сбрасываются программно, чтобы установить дополнительный делитель тактовой частоты перед появлением на MCO1. Модификация бит прескалера может привести к паразитным импульсам на MCO1, поэтому строго рекомендуется конфигурировать эти биты только сразу после сброса, перед тем как разрешить работу внешних генераторов и PLL.
0xx: прескалер выключен, деления частоты не происходит. 100: деление чатоты на 2. 101: деление чатоты на 3. 110: деление чатоты на 4. 111: деление чатоты на 5.
I2SSRC: I2S clock selection, выбор тактовой частоты I2S. Этот бит устанавливается и сбрасывается программно. Позволяет выбрать тактовую частоту для I2S между тактами PLLI2S и внешней тактовой частотой. Строго рекомендуется изменять этот бит только после сброса и перед разрешением работы модуля I2S. 0: для I2S используется частота PLLI2S, 1: для I2S используется внешняя частота, приходящая на вывод I2S_CKIN.
MCO1[1:0]: Microcontroller clock output 1, управление выходом тактирования MCO1. Эти биты устанавливаются и сбрасываются программой. Выбор тактовой частоты может генерировать выбросы на выходе MCO2, поэтому строго рекомендуется конфигурировать эти биты только сразу после сброса, перед тем как разрешить работу внешних генераторов и PLL.
RTCPRE: HSE division factor for RTC clock, коффициент деления частоты HSE для получения тактов RTC. Эти биты устанавливаются и сбрасываются программой, чтобы управлять подачей тактовой частоты от HSE для генерирования татов 1 МГц, используемых для RTC.
Внимание: программа должна установить эти биты правильно, чтобы гарантировать получение тактовой частоты 1 МГц для RTC. В случае необходимости эти биты должны быть сконфигурированы прежде, чем будет выбран генератор тактовых импульсов для RTC.
00000: такты для RTC не вырабатываются. 00001: такты для RTC не вырабатываются. 00010: HSE/2. 00011: HSE/3. 00100: HSE/4. ... 11110: HSE/30. 11111: HSE/31.
PPRE2: APB high-speed prescaler (APB2), управление высокоскоростным делителем для программирования коффициента деления тактовой частоты шины APB2. Эти биты устанавливаются и сбрасываются программой.
Внимание: программа должна корректно установить эти биты, чтобы частота не превысила 90 МГц.
0xx: такты для AHB приходят без деления. 100: тактовая частота для AHB делится на 2. 101: тактовая частота для AHB делится на 4. 110: тактовая частота для AHB делится на 8. 111: тактовая частота для AHB делится на 16.
PPRE1: APB Low speed prescaler (APB1), управление низкоскоростным делителем для программирования коффициента деления тактовой частоты шины APB1. Эти биты устанавливаются и сбрасываются программой.
Внимание: программа должна корректно установить эти биты, чтобы частота не превысила 45 МГц.
0xx: такты для AHB приходят без деления. 100: тактовая частота для AHB делится на 2. 101: тактовая частота для AHB делится на 4. 110: тактовая частота для AHB делится на 8. 111: тактовая частота для AHB делится на 16.
HPRE: AHB prescaler, эти биты устанавливаются и сбрасываются программой, чтобы управлять коэффициентом деления тактовой частоты AHB.
Внимание: тактовая частота AHB должна быть как минимум 25 МГц, если используется Ethernet.
0xxx: частот system clock проходит без делителя. 1000: частота system clock делится на 2. 1001: частота system clock делится на 4. 1010: частота system clock делится на 8. 1011: частота system clock делится на 16. 1100: частота system clock делится на 64. 1101: частота system clock делится на 128 1110: частота system clock делится на 256. 1111: частота system clock делится на 512.
SWS: System clock switch status, состояние переключения системной тактовой частоты. Эти биты устанавливаются и сбросываются аппаратно, чтобы показать, какой источник тактов используется для system clock.
00: для system clock используется генератор HSI. 01: для system clock используется генератор HSE. 10: для system clock используется PLL. 11: недопустимая комбинация.
SW: System clock switch, переключение тактовой частоты системы. Эти биты устанавливаются и сбрасываются программой, чтобы выбрать источник тактовой частоты для system clock. Аппаратно эти биты устанавливаются, чтобы принудительно выбрать HSI, когда микроконтроллер покидает режимы Stop или Standby, или в случае ошибки генератора HSE генератор HSI используется напрямую или косвенно в качестве генератора для system clock.
00: для system clock выбран генератор HSI. 01: для system clock выбран генератор HSE. 10: для system clock выбрана PLL. 11: недопустимая комбинация.
В рабочем режиме (Run mode) частоты HCLKx и PCLKx в любое могут быть выключеныдля различных периферийных устройств, чтобы уменьшить общее энергопотребление кристалла. Чтобы еще сильнее уменьшить энергопотребление в режиме сна (Sleep mode), тактирование периферии может быть запрещено до выполнения инструкций WFI или WFE.
Для управления подачей тактов на периферийные устройства, тактируемые от шин AHB1, AHB2, AHB3, APB1, APB2 используют регистры RCC_AHB1ENR, RCC_AHB2ENR, RCC_AHB3ENR, RCC_APB1ENR, RCC_APB2ENR. Доступ по слову, полуслову и по байтам происходит без пропусков циклов ожидания. Биты разрешаюшие, т. е. после того, как в бит записана лог. 1, тактирование соответствующей периферийной функции разрешено, если лог. 0, то запрещено. Все биты регистров устанавливаются и сбрасываются программой микроконтроллера.
SYSCFGEN: System configuration controller clock enable.
SPI1EN: SPI1 clock enable.
SDIOEN: SDIO clock enable.
ADC3EN..ADC1EN: ADC3..ADC1 clock enable.
USART6EN, USART1EN: USART6, USART1 clock enable.
Для работы в режиме пониженного энергопотребления есть аналогичные регистры, в имени которых добавлены буквы LP (Low Power): RCC_AHB1LPENR, RCC_AHB2LPENR, RCC_AHB3LPENR, RCC_APB1LPENR, RCC_APB2LPENR. Имейте в виду, что регистры обычного режима и пониженного энергопотребления имеют некоторые отличия по количеству и наименованию активных бит, а также по их исходному состоянию после сброса (отличия по битам имеют регистры RCC_AHB1ENR и RCC_AHB1LPENR).
Смещение адреса 0x58, значение после сброса 0x00000001.
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
Reserved
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Reserved
FSMCLPEN
rw
Биты 31..1 зарезервированы, и должны сохраняться на значении после сброса.
FSMCLPEN: Flexible static memory controller module clock enable during Sleep mode, разрешение тактирования модуля контроллера статической памяти во время режима сна.