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 цикла ожидания вставляются, если доступ произошел во время переключения источника тактирования.
Биты 9 и 8 зарезервированы, и должны сохраняться на значении после сброса. MCO2[1:0]: Microcontroller clock output 2, управление выходом тактирования MCO2. Эти биты устанавливаются и сбрасываются программой. Выбор тактовой частоты может генерировать выбросы на выходе MCO2, поэтому строго рекомендуется конфигурировать эти биты только сразу после сброса, перед тем как разрешить работу внешних генераторов и PLL. 00: выбрана частота System clock (SYSCLK). MCO2PRE: MCO2 prescaler, программируемый делитель для выхода MCO2. Эти биты устанавливаются и сбрасываются программно, чтобы установить дополнительный делитель тактовой частоты перед появлением её на выходе MCO2. Модификация бит прескалера может привести к паразитным импульсам на выходе MCO2, поэтому строго рекомендуется конфигурировать эти биты только сразу после сброса, перед тем как разрешить работу внешних генераторов и PLL. 0xx: прескалер выключен, деления частоты не происходит. MCO1PRE: MCO1 prescaler, программируемый делитель для MCO1. Эти биты устанавливаются и сбрасываются программно, чтобы установить дополнительный делитель тактовой частоты перед появлением на MCO1. Модификация бит прескалера может привести к паразитным импульсам на MCO1, поэтому строго рекомендуется конфигурировать эти биты только сразу после сброса, перед тем как разрешить работу внешних генераторов и PLL. 0xx: прескалер выключен, деления частоты не происходит. 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. RTCPRE: HSE division factor for RTC clock, коффициент деления частоты HSE для получения тактов RTC. Эти биты устанавливаются и сбрасываются программой, чтобы управлять подачей тактовой частоты от HSE для генерирования татов 1 МГц, используемых для RTC. Внимание: программа должна установить эти биты правильно, чтобы гарантировать получение тактовой частоты 1 МГц для RTC. В случае необходимости эти биты должны быть сконфигурированы прежде, чем будет выбран генератор тактовых импульсов для RTC. 00000: такты для RTC не вырабатываются. PPRE2: APB high-speed prescaler (APB2), управление высокоскоростным делителем для программирования коффициента деления тактовой частоты шины APB2. Эти биты устанавливаются и сбрасываются программой. Внимание: программа должна корректно установить эти биты, чтобы частота не превысила 90 МГц. 0xx: такты для AHB приходят без деления. PPRE1: APB Low speed prescaler (APB1), управление низкоскоростным делителем для программирования коффициента деления тактовой частоты шины APB1. Эти биты устанавливаются и сбрасываются программой. Внимание: программа должна корректно установить эти биты, чтобы частота не превысила 45 МГц. 0xx: такты для AHB приходят без деления. HPRE: AHB prescaler, эти биты устанавливаются и сбрасываются программой, чтобы управлять коэффициентом деления тактовой частоты AHB. Внимание: тактовая частота AHB должна быть как минимум 25 МГц, если используется Ethernet. 0xxx: частот system clock проходит без делителя. SWS: System clock switch status, состояние переключения системной тактовой частоты. Эти биты устанавливаются и сбросываются аппаратно, чтобы показать, какой источник тактов используется для system clock. 00: для system clock используется генератор HSI. SW: System clock switch, переключение тактовой частоты системы. Эти биты устанавливаются и сбрасываются программой, чтобы выбрать источник тактовой частоты для system clock. Аппаратно эти биты устанавливаются, чтобы принудительно выбрать HSI, когда микроконтроллер покидает режимы Stop или Standby, или в случае ошибки генератора HSE генератор HSI используется напрямую или косвенно в качестве генератора для system clock. 00: для system clock выбран генератор HSI. В рабочем режиме (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, 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..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..1 зарезервированы, и должны сохраняться на значении после сброса. FSMCEN: Flexible static memory controller module clock enable, разрешение тактирования модуля контроллера статической памяти. Смещение адреса 0x40, значение после сброса 0x00000000.
Биты 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..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, 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. GPIOILPEN, GPIOHLPEN, GPIOGLPEN, GPIOFLPEN, GPIOELPEN, GPIODLPEN, GPIOCLPEN, GPIOBLPEN, GPIOALPEN: IO port clock enable, разрешение тактирование портов GPIOx. Примечание: у микроконтроллеров серии STM32F407 в корпусе LQFP144 отсутствуют порты GPIOIEN и GPIOHEN. Смещение адреса 0x54, значение после сброса 0x000000F1.
Биты 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..1 зарезервированы, и должны сохраняться на значении после сброса. FSMCLPEN: Flexible static memory controller module clock enable during Sleep mode, разрешение тактирования модуля контроллера статической памяти во время режима сна. Смещение адреса 0x60, значение после сброса 0x36FEC9FF.
Биты 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. CAN2LPEN, CAN1LPEN: CAN 2, CAN1 clock enable during Sleep mode. I2C3LPEN..I2C1LPEN: I2C3..I2C1 clock enable during Sleep mode. UART5LPEN, UART4LPEN: UART5, UART4 clock enable during Sleep mode. USART3LPEN, USART2LPEN: USART3, USART2 clock enable during Sleep mode. SPI3LPEN, SPI2LPEN: SPI3, SPI2 clock enable during Sleep mode. WWDGLPEN: Window watchdog clock enable during Sleep mode. TIM14LPEN..TIM12LPEN, TIM7LPEN..TIM2LPEN: TIM14..TIM12, TIM7..TIM2 clock enable during Sleep mode. Смещение адреса 0x64, значение после сброса 0x00075F33.
Биты 31..19, 15, 13, 7, 6, 3, 2 зарезервированы, и должны сохраняться на значении после сброса. TIM11LPEN..TIM8LPEN, TIM1LPEN: 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. USART6LPEN, USART1LPEN: USART6, USART1 clock enable during Sleep mode. [Ссылки] |