Edit online

功能描述

PLL

模拟电路 PLL 用于产生时钟供给整个芯片。

下表列出了各个 PLL 的用途及特性。
注:
为保证 PLL 性能要求,PLL_VCO = 24 MHz ÷ (P + 1) × (N + 1) 频率建议在 720 MHz~1584 MHz 之间。
1. CMU PLL 用途及特性

名称

用途

典型频率

展频

PLL_INT0

CPU

480 MHz

不支持

PLL_INT1

DE/ GE/ VE/ UART/ DVP/ PWMCS/ ADCIM/ XPWM

1200 MHz

不支持

PLL_FRA0

XSPI/ SPI/ SDMC

396 MHz

展频

PLL_FRA1

AUDIO/ I2S

396 MHz

展频

PLL_FRA2

LCD/ DSI

-

展频

PLL 内部结构如下图所示, PLL 频率计算公式为:PLL_OUT = 24 MHz × (N + 1 + F÷0x1FFFF)/(P+1)/(M+1)。其中,F 为 FRA_IN 小数分频系数,当不使用小数分频时,F=0,频率计算公式简化为:PLL_OUT = 24 MHz × (N + 1)/(P + 1) ÷(M+1)



1. CMU PLL 内部框图

PLL 配置流程

为保证 PLL 正常开启,需要遵循以下的配置流程:
  • PLL 输出配置旁路为 24 MHz, PLL_FRAn_GEN.PLL_OUT_MUX = 0,选择为 24M 时钟
  • PLL 电路关闭, PLL_FRAn_GEN.PLL_EN = 0
  • PLL 频率系数配置, PLL_FRAn_GEN.FACTOR_P,PLL_FRAn_GEN.FACTOR_N,PLL_FRAn_GEN.FACTOR_M,PLL_FRAn_GEN.FACTOR_M_EN
  • PLL 展频/小数分频配置, PLL_FRAn_CFG PLL_FRAn_SDM
  • PLL 电路打开, PLL_FRAn_GEN.PLL_EN = 1,延迟 200 us
  • PLL 输出使能, PLL_FRAn_GEN.PLL_OUT_EN = 1
  • PLL 输出配置切换为高频时钟, PLL_FRAn_GEN.PLL_OUT_MUX = 1

展频配置

展频相关参数如下:
  • 展频幅度:寄存器为 PLL_FRAn_SDM.SDM_BOT,对应幅度为 24 MHz / (P + 1) × (0x1FFFF − SDM_BOT) ÷ 0x1FFFF
  • 展频频率:寄存器为 PLL_FRAn_SDM.SDM_FREQ,建议设置为 3 (33 KHz)
  • 展频模式:寄存器为 PLL_FRAn_SDM.SDM_MODE,建议设置为 2 (三角波)
展频配置公式如下:
  • 根据展频幅度需求,求得 SDM_BOT = 0x1FFFF − SDM_AMP*0x1FFFF × (P+1) / 24 MHz
  • 根据展频频率需求,求得 STEP_NUM = 24 MHz ÷ (P + 1) ÷ (SDM_FREQ ÷ 2) = 24000000 ÷ (P+1) ÷ (33000/2)
  • 根据展频幅度和展频步数,求得 SDM_STEP = (0x1FFFF− SDM_BOT) ÷ STEP_NUM
注:
  • PLL_FRAn_SDM.SDM_STEP 设置值需要和展频幅度和展频频率匹配,以产生正常的展频波形
  • 当 P=0 时,最大展频幅度为 24 MHz,如果 N=32,则 PLL 频率为 792 MHz,展频深度为 24/792 ≈ 3.0%
  • 当 P=1 时,最大展频幅度为 12 MHz,如果 N=65,则 PLL 频率为 792 MHz,展频深度为 12/792 ≈ 1.5%

模块时钟

模块名称

总线时钟

模块时钟源

除频器

模块时钟极限频率

备注

E907 CORE

-

PLL_INT0

1~16

480 MHz

PLL_INT0 480 MHz

E907 CLIC

-

PLL_INT0÷2

-

240 MHz

PLL_INT0 480 MHz

E907 CLINT

-

PLL_INT0÷2

-

240 MHz

PLL_INT0 480 MHz

E907 DM

-

CLK_24M

-

24 MHz

-

AXI

AXI

CPU

2

240 MHz

CPU 480 MHz

AHB0/1

AHB0/1

CPU

2

240 MHz

CPU 480 MHz

APB0

APB0

AHB

2

120 MHz

AHB 480 MHz

APB1

APB1

CLK_24M

-

24 MHz

-

BROM

AXI

-

-

-

-

SRAM

AXI

-

-

-

-

AHB Matrix

AHB

-

-

-

-

DMA

AHB0

-

-

-

-

DCE

AHB0

-

-

-

-

USB DEV

AHB0

-

-

-

-

USB HOST

AHB0

-

-

-

-

USB PHY

-

CLK_24M

-

-

-

CAN_FD

AHB0

PLL_INT1

1~64

80 MHz

PLL_INT1 1200 MHz

XSPI

AHB0

PLL_FRA0

1~16

400 MHz

PLL _FRA0 400MHz

SPI0

AHB0

PLL_FRA0

1~16

100 MHz

PLL _FRA0 400MHz

SPI1

AHB0

PLL_FRA0

1~16

100 MHz

PLL _FRA0 400MHz

SPI2

AHB0

PLL_FRA0

1~16

100 MHz

PLL _FRA0 400MHz

SPI3

AHB0

PLL_FRA0

1~16

100 MHz

PLL _FRA0 400MHz

SPI4

AHB0

PLL_FRA0

1~16

100 MHz

PLL _FRA0 400MHz

SPI5

AHB0

PLL_FRA0

1~16

100 MHz

PLL _FRA0 400MHz

SPI_ENC

AHB0

-

-

240 MHz

-

SDMC0

AHB0

PLL_FRA0

1~16

200 MHz

PLL _FRA0 400MHz

SDMC1

AHB0

PLL_FRA0

1~16

200 MHz

PLL _FRA0 400MHz

AHBCFG

AHB0

-

-

240 MHz

-

GPIO

AHB0

-

-

240 MHz

-

PWMCS

AHB1

-

-

240 MHz

-

ADCIM

AHB1

PLL_INT1

1~64

100 MHz

PLL _INT1 1200MHz

GPAI

AHB1

-

-

240 MHz

-

THS

AHB1

-

-

240 MHz

-

RTP

AHB1

-

-

240 MHz

-

XPWM0

AHB1

-

-

240 MHz

-

XPWM1

AHB1

-

-

240 MHz

-

XPWM2

AHB1

-

-

240 MHz

-

XPWM3

AHB1

-

-

240 MHz

-

XPWM4

AHB1

-

-

240 MHz

-

XPWM5

AHB1

-

-

240 MHz

-

XPWM6

AHB1

-

-

240 MHz

-

XPWM7

AHB1

-

-

240 MHz

-

SYSCFG

APB0

CLK_24M

-

24 MHz

-

CMU

APB0

-

-

-

-

AXICFG

APB0

-

-

-

-

MTOP

APB0

-

-

-

-

I2S

APB0

PLL_FRA1

1~64

24.75 MHz

PLL_FRA1 396 MHz

AUDIO

APB0

PLL_FRA1

1~64

24.75 MHz

PLL_FRA1 396 MHz

UART0

APB0

PLL_INT1

1~64

100 MHz

PLL_INT1 1200 MHz

UART1

APB0

PLL_INT1

1~64

100 MHz

PLL_INT1 1200 MHz

UART2

APB0

PLL_INT1

1~64

100 MHz

PLL_INT1 1200 MHz

UART3

APB0

PLL_INT1

1~64

100 MHz

PLL_INT1 1200 MHz

UART4

APB0

PLL_INT1

1~64

100 MHz

PLL_INT1 1200 MHz

I2C0

APB0

-

-

-

I2C1

APB0

-

-

-

LCD

APB0

PLL_FRA2

1~8

200 MHz

PLL_FRA2 1200 MHz

DSI

APB0

PLL_FRA2

1~8

200 MHz

PLL_FRA2 1200 MHz

DVP

APB0

PLL_INT1

1~16

150 MHz

PLL_INT1 1200 MHz

DE

APB0

PLL_INT1

1~16

150 MHz

PLL_INT1 1200 MHz

GE

APB0

PLL_INT1

1~16

150 MHz

PLL_INT1 1200 MHz

VE

APB0

PLL_INT1

1~16

200 MHz

PLL_INT1 1200 MHz

WDOG

APB1

CLK_32K

32 KHz

-

WRI

APB1

CLK_24M

24 MHz

-

SID

APB1

CLK_24M

24 MHz

-

GTC

APB1

-

-

-

RTC

APB1

-

-

-

CIR

APB1

-

-

-

UART 在 PLL_INT1=1.2GHz 下波特率精度

2. UART 波特率与误差率

设定波特率

实际波特率

波特率偏差

CMU 除频

Over sampling

Clock source

UART 除频

300

300

0

25

16

48000000

10000

600

600

0

25

16

48000000

5000

1200

1200

0

25

16

48000000

2500

2400

2400

0

25

16

48000000

1250

4800

4800

0

25

16

48000000

625

9600

9615

0.16

25

16

48000000

312

14400

14423

0.16

25

16

48000000

208

19200

19230

0.16

25

16

48000000

156

38400

38461

0.16

25

16

48000000

78

57600

57692

0.16

25

16

48000000

52

115200

115384

0.16

25

16

48000000

26

230400

230769

0.16

25

16

48000000

13

380400

378787

-0.42

22

16

54545454

9

460800

462963

0.47

27

16

44444444

6

921600

925925

0.47

27

16

44444444

3

1000000

1000000

0

25

16

48000000

3

1152000

1136363

1.36

22

16

54545454

3

1500000

1500000

0

25

16

48000000

2

2500000

2500000

0

30

16

40000000

1

3000000

3000000

0

25

16

48000000

1

模块开关控制和时序

模块一般有三个控制位:

  • MOD_RSTN(模块复位控制):同时复位模块和模块总线。
  • MOD_BUS_EN(模块总线时钟开关):控制模块的所有总线时钟,包括 AX、AHB 和 APB,如果模块使用到多个总线,由于只有一个控制位,该控制位同时控制多个总线时钟。
  • MOD_CLK_EN(模块时钟开关): 控制除了总线时钟以外的模块时钟,如果模块用到多个时钟,由于只有一个控制位,该控制位同时控制多个模块时钟。
模块开启和关闭具有一定的时序要求,其中 SP_USBD 时序要求较为特殊,其他模块统一开关时序,具体描述如下:
3. 模块开关时序描述
模块 打开时序 关闭时序
USB_DEV
  • 打开控制器时钟
  • 打开模拟 PHY 时钟
  • 延迟 100 微秒
  • 放开模拟 PHY 复位
  • 放开控制器复位
  • 使能控制器复位
  • 使能模拟 PHY 复位
  • 关闭模拟 PHY 时钟
  • 关闭控制器时钟
标准模块
  • 打开模块时钟
  • 打开总线时钟
  • 放开复位控制
  • 使能复位控制
  • 关闭总线时钟
  • 关闭模块时钟
  • 关闭控制器时钟
标准模块
  • 设置模块时钟除频系数
  • 打开模块时钟预使能
  • 打开模块时钟使能
  • 打开 APB 总线时钟
  • 打开 AHB 总线时钟
  • 打开 AXI 总线时钟
  • 放开复位控制
注:
模块无对应控制位即不进行设置
  • 使能复位控制
  • 关闭 AXI 总线时钟
  • 关闭 AHB 总线时钟
  • 关闭 APB 总线时钟
  • 关闭模块时钟使能
  • 关闭模块时钟预使能
注:
模块无对应控制位即不进行设置