RCC PLL configuration register (RCC_PLLCFGR)

Регистр настройки умножителей PLL

Смещение (Address offset): 0x04

Reset value: 0x2400'3010

3130292827262524
Reserved PLLR[2:0] PLLQ[3:0]
---rwrwrwrwrwrwrw
00100100
2322212019181716
Reserved PLLSRC Reserved PLLP[1:0]
---rw------------rwrw
00000000


15141312111098
Reserved PLLN[8:0]
---rwrwrwrwrwrwrw
00110000
76543210
PLLN[8:0] HSITRIM[4:0]
rwrwrwrwrwrwrwrw
00010000


fPLL clock input - входная частота блока Main PLL. Выбирается битом PLLSRC: HSI или HSE.

fVCO = fPLL clock input *(PLLN / PLLM) - выходная частота умножителя блока Main PLL. Получается делением входной частоты fPLL clock input на коэффициент PLLM и последующим умножением на коэффициент PLLN.

fPLLP = fVCO / PLLP - частота тактовых импульсов на выходе блока Main PLL, используемая для формирования системной тактовой частоты SYSCLK.

fUSB OTG FS = fVCO / PLLQ - частота тактовых импульсов для USB OTG FS.

fPLLR = fVCO / PLLR - частота тактовых импульсов для аудио-периферии.

Bit 31
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bits 30:28
PLLR[2:0]
Main PLL division factor for I2Ss, SAIs, SYSTEM and SPDIF-Rx clocks
Коэффициент деления частоты Main PLL для аудио-периферии.

Доступен для записи только при отключенном PLL.

fPLLR = fVCO / PLLR   (где 2 ≤ PLLR ≤ 7)

 000 :  PLLR = 0, недопустимая конфигурация

 001 :  PLLR = 1, недопустимая конфигурация

 010 :  PLLR = 2

 011 :  PLLR = 3

 ...

 111 :  PLLR = 7

Bits 27:24
PLLQ[3:0]
Main PLL (PLL) division factor for USB OTG FS, SDIOclocks
Коэффициент деления частоты Main PLL для USB OTG FS и SDIO.

Доступен для записи только при отключенном PLL.

fUSB OTG FS = fVCO / PLLQ   (где 2 ≤ PLLQ ≤ 15)

Для правильной работы USB OTG FS требуется частота 48 МГц. Для правильной работы STUDIO требуется частота ниже или равная 48 МГц

 0000 :  PLLQ = 0, недопустимая конфигурация

 0001 :  PLLQ = 1, недопустимая конфигурация

 0010 :  PLLQ = 2

 0011 :  PLLQ = 3

 ...

 1111 :  PLLQ = 15

Bit 23
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bit 22
PLLSRC
Main PLL(PLL) and audio PLL (PLLI2S) entry clock source
Источник тактовых сигналов для блоков умножения частоты PLL

Доступен для записи только при отключенном PLL.

 0 :  HSI - как источник сигнала для блоков PLL

 1 :  HSE - как источник сигнала для блоков PLL

Bits 21:18
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bits 17:16
PLLP[1:0]
Main PLL (PLL) division factor for main system clock
Коэффициент деления частоты Main PLL для получения системной тактовой частоты SYSCLK. SYSCLK не должна превышать 180 МГц.

Доступен для записи только при отключенном PLL.

fPLLP = fVCO / PLLP

 00 :  PLLP = 2

 01 :  PLLP = 4

 10 :  PLLP = 6

 11 :  PLLP = 8

Bit 15
Reserved
Must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bits 14:6
PLLN[8:0]
Main PLL (PLL) multiplication factor for VCO
Коэффициент умножения входной частоты умножителя fVCO input для получения выходной частоты fVCO умножителя блока Main PLL.

Доступен для записи только при отключенном PLL. Доступ для записи только 16-битный (half-word) или 32-битный (word).

Работает совместно с коэффициентом деления PLLM.

fVCO = fVCO input * PLLN,   (где 50 ≤ PLLN ≤ 432).

100 МГц ≤ fVCO ≤ 432 МГц.

При низких тактовых частотах необходимо следить, чтобы связка коэффициентов умножения PLLN и деления PLLM обеспечивали минимальную частоту блока Main PLL не ниже 100 МГц.

 000000000 :  PLLN = 0, недопустимая конфигурация

 000000001 :  PLLN = 1, недопустимая конфигурация

 ...

 000110010 :  PLLN = 50

 000110011 :  PLLN = 51

 ...

 001100011 :  PLLN = 99

 001100100 :  PLLN = 100

 ...

 110110000 :  PLLN = 432

 110110001 :  PLLQ = 433, недопустимая конфигурация

 ...

 111111111 :  PLLQ = 511, недопустимая конфигурация

Bits 5:0
PLLM[5:0]
Division factor for the main PLL (PLL) input clock
Коэффициент деления входной частоты fPLL clock input для получения входной частоты умножителя fVCO input блока Main PLL

Доступен для записи только при отключенном PLL.

fVCO input = fPLL clock input / PLLM,   (где 2 ≤ PLLM ≤ 63).

Входная частота умножителя fVCO input должна быть в диапазоне от 1 до 2 МГц. Рекомендуемое значение 2 МГц.

 000000 :  PLLM = 0, недопустимая конфигурация

 000001 :  PLLM = 1, недопустимая конфигурация

 000010 :  PLLM = 2

 000011 :  PLLM = 3

 ...

 111111 :  PLLM = 63



//-  stm32f446xx.h

/********************  Bit definition for RCC_PLLCFGR register  ***************/
#define RCC_PLLCFGR_PLLM_Pos               (0U)                                
#define RCC_PLLCFGR_PLLM_Msk               (0x3FUL << RCC_PLLCFGR_PLLM_Pos)     /* 0x0000003F */
#define RCC_PLLCFGR_PLLM                   RCC_PLLCFGR_PLLM_Msk                
#define RCC_PLLCFGR_PLLM_0                 (0x01UL << RCC_PLLCFGR_PLLM_Pos)     /* 0x00000001 */
#define RCC_PLLCFGR_PLLM_1                 (0x02UL << RCC_PLLCFGR_PLLM_Pos)     /* 0x00000002 */
#define RCC_PLLCFGR_PLLM_2                 (0x04UL << RCC_PLLCFGR_PLLM_Pos)     /* 0x00000004 */
#define RCC_PLLCFGR_PLLM_3                 (0x08UL << RCC_PLLCFGR_PLLM_Pos)     /* 0x00000008 */
#define RCC_PLLCFGR_PLLM_4                 (0x10UL << RCC_PLLCFGR_PLLM_Pos)     /* 0x00000010 */
#define RCC_PLLCFGR_PLLM_5                 (0x20UL << RCC_PLLCFGR_PLLM_Pos)     /* 0x00000020 */

#define RCC_PLLCFGR_PLLN_Pos               (6U)                                
#define RCC_PLLCFGR_PLLN_Msk               (0x1FFUL << RCC_PLLCFGR_PLLN_Pos)    /* 0x00007FC0 */
#define RCC_PLLCFGR_PLLN                   RCC_PLLCFGR_PLLN_Msk                
#define RCC_PLLCFGR_PLLN_0                 (0x001UL << RCC_PLLCFGR_PLLN_Pos)    /* 0x00000040 */
#define RCC_PLLCFGR_PLLN_1                 (0x002UL << RCC_PLLCFGR_PLLN_Pos)    /* 0x00000080 */
#define RCC_PLLCFGR_PLLN_2                 (0x004UL << RCC_PLLCFGR_PLLN_Pos)    /* 0x00000100 */
#define RCC_PLLCFGR_PLLN_3                 (0x008UL << RCC_PLLCFGR_PLLN_Pos)    /* 0x00000200 */
#define RCC_PLLCFGR_PLLN_4                 (0x010UL << RCC_PLLCFGR_PLLN_Pos)    /* 0x00000400 */
#define RCC_PLLCFGR_PLLN_5                 (0x020UL << RCC_PLLCFGR_PLLN_Pos)    /* 0x00000800 */
#define RCC_PLLCFGR_PLLN_6                 (0x040UL << RCC_PLLCFGR_PLLN_Pos)    /* 0x00001000 */
#define RCC_PLLCFGR_PLLN_7                 (0x080UL << RCC_PLLCFGR_PLLN_Pos)    /* 0x00002000 */
#define RCC_PLLCFGR_PLLN_8                 (0x100UL << RCC_PLLCFGR_PLLN_Pos)    /* 0x00004000 */

#define RCC_PLLCFGR_PLLP_Pos               (16U)                               
#define RCC_PLLCFGR_PLLP_Msk               (0x3UL << RCC_PLLCFGR_PLLP_Pos)      /* 0x00030000 */
#define RCC_PLLCFGR_PLLP                   RCC_PLLCFGR_PLLP_Msk                
#define RCC_PLLCFGR_PLLP_0                 (0x1UL << RCC_PLLCFGR_PLLP_Pos)      /* 0x00010000 */
#define RCC_PLLCFGR_PLLP_1                 (0x2UL << RCC_PLLCFGR_PLLP_Pos)      /* 0x00020000 */

#define RCC_PLLCFGR_PLLSRC_Pos             (22U)                               
#define RCC_PLLCFGR_PLLSRC_Msk             (0x1UL << RCC_PLLCFGR_PLLSRC_Pos)    /* 0x00400000 */
#define RCC_PLLCFGR_PLLSRC                 RCC_PLLCFGR_PLLSRC_Msk              
#define RCC_PLLCFGR_PLLSRC_HSE_Pos         (22U)                               
#define RCC_PLLCFGR_PLLSRC_HSE_Msk         (0x1UL << RCC_PLLCFGR_PLLSRC_HSE_Pos) /* 0x00400000 */
#define RCC_PLLCFGR_PLLSRC_HSE             RCC_PLLCFGR_PLLSRC_HSE_Msk          
#define RCC_PLLCFGR_PLLSRC_HSI             0x00000000U                         

#define RCC_PLLCFGR_PLLQ_Pos               (24U)                               
#define RCC_PLLCFGR_PLLQ_Msk               (0xFUL << RCC_PLLCFGR_PLLQ_Pos)      /* 0x0F000000 */
#define RCC_PLLCFGR_PLLQ                   RCC_PLLCFGR_PLLQ_Msk                
#define RCC_PLLCFGR_PLLQ_0                 (0x1UL << RCC_PLLCFGR_PLLQ_Pos)      /* 0x01000000 */
#define RCC_PLLCFGR_PLLQ_1                 (0x2UL << RCC_PLLCFGR_PLLQ_Pos)      /* 0x02000000 */
#define RCC_PLLCFGR_PLLQ_2                 (0x4UL << RCC_PLLCFGR_PLLQ_Pos)      /* 0x04000000 */
#define RCC_PLLCFGR_PLLQ_3                 (0x8UL << RCC_PLLCFGR_PLLQ_Pos)      /* 0x08000000 */

#define RCC_PLLR_SYSCLK_SUPPORT            /*!< Support PLLR as system clock */
#define RCC_PLLR_I2S_CLKSOURCE_SUPPORT     /*!< Support PLLR clock as I2S clock source */

#define RCC_PLLCFGR_PLLR_Pos               (28U)                               
#define RCC_PLLCFGR_PLLR_Msk               (0x7UL << RCC_PLLCFGR_PLLR_Pos)      /* 0x70000000 */
#define RCC_PLLCFGR_PLLR                   RCC_PLLCFGR_PLLR_Msk                
#define RCC_PLLCFGR_PLLR_0                 (0x1UL << RCC_PLLCFGR_PLLR_Pos)      /* 0x10000000 */
#define RCC_PLLCFGR_PLLR_1                 (0x2UL << RCC_PLLCFGR_PLLR_Pos)      /* 0x20000000 */
#define RCC_PLLCFGR_PLLR_2                 (0x4UL << RCC_PLLCFGR_PLLR_Pos)      /* 0x40000000 */