打印
[AURIX™]

英飞凌Aurix2G TC3xx系列--系统时钟详解

[复制链接]
100|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1、系统时钟模块介绍
Aurix2G TC3XX系列的主频最高支持300MHz。该系列时钟系统主要包括时钟源、锁相环、时钟分配器组成。

  系统时钟主要由以下几个时钟功能模块组成:

1、Basic clock generation(Clock Source)时钟源(一般由晶振提供)

2、Clock Speed up-scaling(PLLs)时钟倍频(锁相环)

3、Clock distribution(CCU)时钟分配单元

4、Individual clock configuration(Peripherals) 独立时钟配置(外设)



2、功能介绍
2.1、时钟源
TC3XX系列有两种外部时钟源可供选择。

1、外部直接接入时钟源,也就是通过其它芯片或者电路直接进行时钟Tick输入。硬件连接如下图:



2、第二种是采用晶振(石英或者陶瓷),外部电路连接如下图:



作为软件,一般只需关注外部的时钟频率,也就是图中的FOSC0。一般为20MHz。

2.2、时钟倍频(PLL)
TC3xx系列一共有两个锁相环,系统锁相环其产生的时钟主要供CPU、存储模块使用。外设锁相环,其产生

时钟主要供外设模块使用。

1、系统锁相环(System PLL)

系统锁相环可以将低频的外部输入时钟源进行倍频,提供给CPU等模块稳定高效的时钟源,同时提供安全

监控功能,当外部时钟源超出范围时执行紧急动作。系统锁相环模块示意图如下:



由图可知外部输入时钟源fOSC首先经过一个P-DIV进行预分频,在经过锁相环模块倍频得到fDCO,最后通过

K2-DIV分频得到最终的输出频率FPLL0。这就是系统时钟。



P:预分频值P-DIV+1,P-DIV对应寄存器SYSPLLCON0.PDIV

N:反馈分频值NDIV+1,NDIV对应寄存器SYSPLLCON0.NDIV

K2:输出分频值K2-DIV+1,K2-DIV对应寄存器SYSPLLCON1.K2DIV

在DataSheet中对FDCO时钟输入范围限制在10MHz---40MHz,也就是在20MHzfOSC下,P的范围为0/1,一般

P-DIV设为0。也就是fDOC输入为20MHz;然后fDCO时钟输出范围为400---800MHz,若要输出PLL0为主频最大

300MHz,fDCO最适合的输出频率为600MHz,即NDIV设置为29;然后将K2-DIV设置为1。进行二倍分频,

最终得到FPLL0=300MHz。

锁相环是一个反馈电路设计,在初始化设置完时钟后,可通过while循环SYSPLLSTAT.LOCK==0来等待锁相环

稳定。若需在运行中设置锁相环,需注意关闭SMU中的PLL监控(默认关闭),否则会产生误报Tick丢失故障。

2、外设锁相环

外设锁相环模块示意图如下:



由上图可知外部时钟源fOSC进入后同样会通过P-DIV分配,锁相环倍频,然后进行分频输出Fpll1、Fpll2、

fhsct三个输出时钟。其中fhsct是提供给HSSL模块使用的一路特殊时钟。需要关注的参数:预分频P-DIV、

反馈分频值NDIV、pll1输出分频值K2-DIV、pll2输出分频值K3-IDV、除数分频值DIVBY。







P:预分频值P-DIV+1,P-DIV对应寄存器PERPLLCON0.PDIV

N:反馈分频值NDIV+1,NDIV对应寄存器PERPLLCON0.NDIV

K2:输出分频值K2-DIV+1,K2-DIV对应寄存器PERPLLCON1.K2DIV

K3:输出分频值K3-DIV+1,K3-DIV对应寄存器PERPLLCON1.K3DIV

DIVBY:被除数变量,当寄存器PERPLLCON0.DIVBY为0时,DIVBY=1.6,为1时,DIVBY=2。

在DataSheet中同样存在相关外设锁相环的参数限制:



这里也是将P-DIV设置为0,外设时钟的设置需要考虑外设一般的使用情况,且要与CPU尽量避开倍数关系,

防止硬件EMC问题。考虑到外设如CAN等模块的使用情况,一般PLL1输出320MHz(PLL1到外设之间还有一层

二分频,所以作用到外设上一般是160MHz),PLL2输出200MHz,配置NDIV=31,K2-DIV=3,K3-DIV=1,DIVBY=0。

2.3、时钟分配单元(CCU)
我们得到了系统时钟PLL0,两个外设时钟PLL1和PLL2和一个特殊外设时钟HSCT。除HSCT专供HSSL使用。其它

几个主要的时钟源需要和CPU及外设模块进行连接,并设置对应的时钟分频他,CCU就是负责该功能。

CCU模块和PLL时钟源之间存在选择转换关系,如下图所示:



由上图可知,PLL1到fsource1之间存在一个可配置2倍分频器,仅当fsource1选择PLL1且CCUCON1.PLL1DIVDIS=0时

Fsource1 = Fpll1/2其余情况不分频。

各个模块所使用的时钟源如下表所示:



fSRI:SRI总线时钟,决定SRI总线数据交互的频率,通过CCUCON0.SRIDIV进行设置分频参数

fCPUx:CPUx的主频,通过CCUCONi.CPUxDIV来进行设置,具体参考芯片核数量

fSPB:系统外设总线时钟,决定外设总线数据交互的频率,通过CCUCON0.SPBDIV来进行设置

fFSI2:PFlash时钟,决定PFlash读取速度,通过CCUCON0。FSI2DIV来设置

fFSI: 除PFlash以外的其它Flash时钟,通过CCUCON0。FSIDIV来设置

fREFCLK1/2:调试参考时钟,分别为PLL0/1的24倍分频值

fBBB:BBB总线时钟,决定BBB总线访问速度,通过CCUCON0.BBBDIV来进行设置

fERAY:ERAY模块时钟,固定分频比,fERAY=fSOURCE1/2

fGTM:GTM模块主时钟,可变时钟源,当CCUCON0.GTMDIV=1时,fGTM=fSPB*2;否则fGTM=fSOURCE/GTMDIV

fSTM:STM模块主时钟,决定STM工作频率,通过CCUCON0.STMDIV来进行设置

fMSC:MSC模块主时钟,决定MSC工作频率,通过CCUCON1.MSCDIV来进行设置

fGETH:GETH以太网模块主时钟,通过CCUCON5,GETHDIV来进行设置

fADAS:SPU与RIF内核时钟,不可访问

fMCANH:CAN模块主时钟,决定CAN模块工作及CANRAM访问速度,通过CCUCON5.MCANHDIV来配置。

fMCAN:CAN模块时钟,用来配置CAN的波特率,必须小于fMCANH,通过CCUCON1.MACANDIV来进行配置

fASCLINF/S:ASCLIN模块快/慢时钟源,用来配置ASCLIN模块波特率,fASCLINF通过CCUCON2.ASCLINFDIV配置

fASCLINS可选时钟源,通过CCUCON2.CLKSELASCLINS选择时钟源,通过CCUCON2.ASCLINSDIV

配置分频比

fQSPI:QSPI模块主时钟,可变时钟源,通过CCUCON1.CLKSELQSPI选择时钟源,通过CCUCON1.QSPIDIV配置

fADC:ADC模块主时钟,不可配置分频,fADC=fSOURCE1

fI2C:I2C模块主时钟,通过CCUCON1.I2CDIV配置

fEBU:EBU模块主时钟,不可配置分频,fEBU=fSOURCE1

fHSPDMx:HSPDM主时钟,不可配置分频,fHSPDMx=fSOURCE1

时钟的设置还存在一些关系限制,如下表:



如下图,以一个20MHz的晶振源时钟配置如下图所示:



3、MACL配置实例
TC3xx时钟的配置在MCU模块中,首先我们配置系统的锁相环参数:



外设锁相环配置如下图:



各个模块的时钟频率设置,工具会自动计算分频比,不合理值会报错



MACL代码对于MCU时钟配置直接调用Mcu_InitClock()接口即可,然后等锁相环稳定,最后进行时钟分配使用

Mcu_DistributePllClock()接口。如下图:



————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/sinat_37508529/article/details/141818753

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

4056

帖子

2

粉丝