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.

00: выбрана частота System clock (SYSCLK).
01: выбрана частота PLLI2S.
10: выбрана частота генератора HSE.
11: выбрана частота 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.

00: выбрана частота HSI.
01: выбрана частота генератора LSE.
10: выбрана частота генератора HSE.
11: выбрана частота 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, то запрещено. Все биты регистров устанавливаются и сбрасываются программой микроконтроллера.

Смещение адреса 0x30, значение после сброса 0x00100000.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Res. OTG
HSULPI
EN
OTG
HS
EN
ETH
MACPTP
EN
ETH
MACRX
EN
ETH
MACTX
EN
ETH
MAC
EN
Res. DMA2
EN
DMA1
EN
CCM
DATARAM
EN
Res. BKP
SRAM
EN
Res.
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
Reserved CRCEN Reserved GPIOI
EN
GPIOH
EN
GPIOG
EN
GPIOF
EN
GPIOE
EN
GPIOD
EN
GPIOC
EN
GPIOB
EN
GPIOA
EN
rw rw rw rw rw rw rw rw rw rw

Биты 31, 24, 23, 19, 17..13, 11..9 зарезервированы, и должны сохраняться на значении после сброса.

OTGHSULPIEN: USB OTG HSULPI clock enable.

OTGHSEN: USB OTG HS clock enable.

ETHMACPTPEN: Ethernet PTP clock enable.

ETHMACRXEN: Ethernet Reception clock enable.

ETHMACTXEN: Ethernet Transmission clock enable.

ETHMACEN: Ethernet MAC clock enable.

DMA2EN: DMA2 clock enable.

DMA1EN: DMA1 clock enable.

CCMDATARAMEN: CCM data RAM clock enable.

BKPSRAMEN: Backup SRAM interface clock enable.

CRCEN: CRC clock enable.

GPIOIEN, GPIOHEN, GPIOGEN, GPIOFEN, GPIOEEN, GPIODEN, GPIOCEN, GPIOBEN, GPIOAEN: IO port clock enable, разрешение тактирование портов GPIOx.

Примечание: у микроконтроллеров серии STM32F407 в корпусе LQFP144 отсутствуют порты GPIOIEN и GPIOHEN.

Смещение адреса 0x34, значение после сброса 0x00000000.

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 OTGFS
EN
RNG
EN
HASH
EN
CRYP
EN
Reserved DCMI
EN
rw rw rw rw rw

Биты 31..8, 3..1 зарезервированы, и должны сохраняться на значении после сброса.

OTGFSEN: USB OTG FS clock enable.

RNGEN: Random number generator clock enable.

HASHEN: Hash modules clock enable.

CRYPEN: Cryptographic modules clock enable.

DCMIEN: Camera interface enable.

Смещение адреса 0x38, значение после сброса 0x00000000.

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 FSMCEN
rw

Биты 31..1 зарезервированы, и должны сохраняться на значении после сброса.

FSMCEN: Flexible static memory controller module clock enable, разрешение тактирования модуля контроллера статической памяти.

Смещение адреса 0x40, значение после сброса 0x00000000.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Res. DAC
EN
PWR
EN
Res. CAN2
EN
CAN1
EN
Res. I2C3
EN
I2C2
EN
I2C1
EN
UART5
EN
UART4
EN
USART3
EN
USART2
EN
Res.
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
SPI3
EN
SPI2
EN
Res. WWDG
EN
Res. TIM14
EN
TIM13
EN
TOM12
EN
TIM7
EN
TIM6
EN
TIM5
EN
TIM4
EN
TIM3
EN
TIM2
EN
rw rw rw rw rw rw rw rw rw rw rw rw

Биты 31, 30, 27, 24, 16, 13, 12, 10, 9 зарезервированы, и должны сохраняться на значении после сброса.

DACEN: DAC interface clock enable.

PWREN: Power interface clock enable.

CAN2EN, CAN1EN: CAN 2, CAN1 clock enable.

I2C3EN..I2C1EN: I2C3..I2C1 clock enable.

UART5EN, UART4EN: UART5, UART4 clock enable.

USART3EN, USART2EN: USART3, USART2 clock enable.

SPI3EN, SPI2EN: SPI3, SPI2 clock enable.

WWDGEN: Window watchdog clock enable.

TIM14EN..TIM12EN, TIM7EN..TIM2EN: TIM14..TIM12, TIM7..TIM2 clock enable.

Смещение адреса 0x44, значение после сброса 0x00000000.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved TIM11
EN
TIM10
EN
TIM9
EN
rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Res. SYSCFG
EN
Res. SPI1
EN
SDIO
EN
ADC3
EN
ADC2
EN
ADC1
EN
Res. USART6
EN
USART1
EN
Res. TIM8
EN
TIM1
EN
rw         rw rw rw rw rw

Биты 31..19, 15, 13, 7, 6, 3, 2 зарезервированы, и должны сохраняться на значении после сброса.

TIM11EN..TIM8EN, TIM1EN: TIM11..TIM8, TIM1 clock enable.

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). 

Смещение адреса 0x50, значение после сброса 0x7E6791FF.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Res. OTG
HSULPI
LPEN
OTG
HS
LPEN
ETH
MACPTP
LPEN
ETH
MACRX
LPEN
ETH
MACTX
LPEN
ETH
MAC
LPEN
Res. DMA2
LPEN
DMA1
LPEN
Res. BKP
SRAM
LPEN
SRAM2
LPEN
SRAM1
LPEN
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
FLITF
LPEN
Reserved CRC
LPEN
Reserved GPIOI
LPEN
GPIOH
LPEN
GPIOG
LPEN
GPIOF
LPEN
GPIOE
LPEN
GPIOD
LPEN
GPIOC
LPEN
GPIOB
LPEN
GPIOA
LPEN
rw rw rw rw rw rw rw rw rw rw rw

Биты 31, 24, 23, 20, 19, 14, 13, 11..9 зарезервированы, и должны сохраняться на значении после сброса.

OTGHSULPILPEN: USB OTG HS ULPI clock enable during Sleep mode.

OTGHSLPEN: USB OTG HS clock enable during Sleep mode.

ETHMACPTPLPEN: Ethernet PTP clock enable during Sleep mode.

ETHMACRXLPEN: Ethernet reception clock enable during Sleep mode.

ETHMACTXLPEN: Ethernet transmission clock enable during Sleep mode.

ETHMACLPEN: Ethernet MAC clock enable during Sleep mode.

DMA2LPEN: DMA2 clock enable during Sleep mode.

DMA1LPEN: DMA1 clock enable during Sleep mode.

BKPSRAMLPEN: Backup SRAM interface clock enable during Sleep mode.

SRAM2LPEN: SRAM 2 interface clock enable during Sleep mode.

SRAM1LPEN: SRAM 1interface clock enable during Sleep mode.

FLITFLPEN: Flash interface clock enable during Sleep mode.

CRCLPEN: CRC clock enable during Sleep mode.

GPIOILPENGPIOHLPENGPIOGLPENGPIOFLPENGPIOELPENGPIODLPENGPIOCLPENGPIOBLPENGPIOALPEN: IO port clock enable, разрешение тактирование портов GPIOx.

Примечание: у микроконтроллеров серии STM32F407 в корпусе LQFP144 отсутствуют порты GPIOIEN и GPIOHEN.

Смещение адреса 0x54, значение после сброса 0x000000F1.

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 OTGFS
LPEN
RNG
LPEN
HASH
LPEN
CRYP
LPEN
Reserved DCMI
LPEN
rw rw rw rw rw

Биты 31..8, 3..1 зарезервированы, и должны сохраняться на значении после сброса.

OTGFSLPEN: USB OTG FS clock enable during Sleep mode.

RNGLPEN: Random number generator clock enable during Sleep mode.

HASHLPEN: Hash modules clock enable during Sleep mode.

CRYPLPEN: Cryptographic modules clock enable during Sleep mode.

DCMILPEN: Camera interface enable during Sleep mode.

Смещение адреса 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, разрешение тактирования модуля контроллера статической памяти во время режима сна.

Смещение адреса 0x60, значение после сброса 0x36FEC9FF.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Res. DAC
LPEN
PWR
LPEN
Res. CAN2
LPEN
CAN1
LPEN
Res. I2C3
LPEN
I2C2
LPEN
I2C1
LPEN
UART5
LPEN
UART4
LPEN
USART3
LPEN
USART2
LPEN
Res.
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
SPI3
LPEN
SPI2
LPEN
Res. WWDG
LPEN
Res. TIM14
LPEN
TIM13
LPEN
TOM12
LPEN
TIM7
LPEN
TIM6
LPEN
TIM5
LPEN
TIM4
LPEN
TIM3
LPEN
TIM2
LPEN
rw rw rw rw rw rw rw rw rw rw rw rw

Биты 31, 30, 27, 24, 16, 13, 12, 10, 9 зарезервированы, и должны сохраняться на значении после сброса.

DACLPEN: DAC interface clock enable during Sleep mode.

PWRLPEN: Power interface clock enable during Sleep mode.

CAN2LPENCAN1LPEN: CAN 2, CAN1 clock enable during Sleep mode.

I2C3LPEN..I2C1LPEN: I2C3..I2C1 clock enable during Sleep mode.

UART5LPENUART4LPEN: UART5, UART4 clock enable during Sleep mode.

USART3LPENUSART2LPEN: USART3, USART2 clock enable during Sleep mode.

SPI3LPENSPI2LPEN: SPI3, SPI2 clock enable during Sleep mode.

WWDGLPEN: Window watchdog clock enable during Sleep mode.

TIM14LPEN..TIM12LPENTIM7LPEN..TIM2LPEN: TIM14..TIM12, TIM7..TIM2 clock enable during Sleep mode.

Смещение адреса 0x64, значение после сброса 0x00075F33.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved TIM11
LPEN
TIM10
LPEN
TIM9
LPEN
rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Res. SYSCFG
LPEN
Res. SPI1
LPEN
SDIO
LPEN
ADC3
LPEN
ADC2
LPEN
ADC1
LPEN
Res. USART6
LPEN
USART1
LPEN
Res. TIM8
LPEN
TIM1
LPEN
rw         rw rw rw rw rw

Биты 31..19, 15, 13, 7, 6, 3, 2 зарезервированы, и должны сохраняться на значении после сброса.

TIM11LPEN..TIM8LPENTIM1LPEN: TIM11..TIM8, TIM1 clock enable during Sleep mode.

SYSCFGLPEN: System configuration controller clock enable during Sleep mode.

SPI1LPEN: SPI1 clock enable during Sleep mode.

SDIOLPEN: SDIO clock enable during Sleep mode.

ADC3LPEN..ADC1LPEN: ADC3..ADC1 clock enable during Sleep mode.

USART6LPENUSART1LPEN: USART6, USART1 clock enable during Sleep mode.

 

[Ссылки]

1STM32: аббревиатуры и термины.