【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件

时间:2024-03-27 16:08:39

目录

系统时钟

简介

CGU(Clock Generation Unit)

CCU(Clock Control Unit)

电路原理图

其它外设


TC264最小系统的大部分我们都在前面介绍了,只剩下了时钟电路和外部器件。下面我们来介绍一下

系统时钟

简介

对于一个单片机来说,时钟单元一定是最重要的一部分,因为它相当于单片机的心脏。TC264单片机的时钟单元叫做时钟及时钟控制单元(CCU),这个单元用来生成系统所需要的多种时钟信号,其相对于单片机内部的拓扑图如下:

【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件
图1  时钟系统

从图上可以看出,SCU单元输出的时钟信号被送到了单片机内部的各个部分。大家肯定纳闷,不是说系统时钟是由CCU生成的么,那为什么上面的图上没有指出CCU呢。实际上,这里的SCU手册里没有详细解释,不过根据我的猜测应该指的是System Clock Unit系统时钟单元,只是和后面的System Control Units(SCU)单元出现了名称冲突。

在手册里,描述建立一个完整的时钟需要四步,如同把大象放进冰箱一样简单易懂:

  1. Basic clock generation (Clock Source)
  2. Clock speed upscaling
  3. Clock distribution
  4. Individual clock configuration

这四个步骤在图上的表示大概是这样的:

【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件
图2  时钟建立步骤

怎么样,是不是感觉简单易懂?有一种三分钟就能学完的赶脚?实际上,它也确实不难理解。整个步骤里,第四部是相对各个时钟的分别配置,实际上重点的就是前三步,它们又分别由CGU和CCU两部分完成,所以它们也是重点,下面我们来详细介绍一下。

CGU(Clock Generation Unit)

CGU单元,顾名思义指时钟产生单元。实际上,我们所配置的外部时钟电路实际上就是广义上来说就是CGU。CGU本质上由两部分:振荡电路和PLL锁相环组成。前者手册里称作Basic clock generation (Clock Source),后者则称作Clock speed upscaling,其结构如图:

【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件
图3  CGU单元拓扑图

由OSC振荡电路产生基础时钟信号,这个输出的信号被送入后级的PLL中,与此同时,EVR稳压器内部也有一个备用时钟,可以在基础时钟出现问题时进行代替。然后,两个PLL模块会各生成一组PLL信号送入CCU(PLL和PLL2的区别只是最后分频系数K2和K3的区别),再由CCU对其进行选择和分频送给系统各部分。

CCU(Clock Control Unit)

【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件
图4  CCU单元拓扑图

CCU单元如图所示,就是简单的对输入信号针对各个部分分别处理,该分频的分频,该直接输出的就直接输出。这一块在手册里称作Clock distribution。总之,就像个保姆一样把内部各个部分的时钟都合理准备好,让各部分都可以工作在合适的条件下。

那究竟CCU输出的时钟信号是哪些呢?我从手册里将其摘录了一下,可以大概有一个了解:

【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件
图5  各个时钟简介

英文看的不爽,我给整理了一下,虽然我觉得貌似这翻译了和没翻译一样……

 

不同类型时钟简介
时钟类型 时钟作用
系统总线时钟
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 定义了SRI总线的运行性能,从而定义了所有连接的主从之间的数据交换率
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 定义了SPB总线的运行性能,从而定义了所有连接的主从机和中断系统之间的数据交换率
CPU控制时钟
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 定义CPU0的执行速度
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 定义CPU1的执行速度
PMU控制时钟
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 定义用于读取操作的PFlash的执行速度
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 定义所有其他flash操作的执行速度
外部选择时钟
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 为STMs(系统定时器)定义一个独立于系统其余部分的基本频率。这允许STMs(系统定时器)以恒定的频率运行
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 为GTM(通用定时器)定义一个独立于系统其余部分的基本频率。这使得GTM(通用定时器)可以在一个恒定的频率下工作
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 为“慢速”通信接口定义一个与系统其余部分无关的基本频率。这使得IIC可以在恒定的频率下运行
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 为“快速”通信接口定义一个与系统其余部分无关的基本频率。这使得QSPIs和PSI5S可以在恒定的baudrate(频率)上运行
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 为MultiCAN定义一个与系统其余部分无关的基本频率。这使得MultiCAN可以在一个恒定baudrate(频率)上运行
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 为ASCLINs定义一个与系统其余部分无关的基本频率。这使得ASCLINs可以在一个恒定baudrate(频率)上运行
调试系统时钟
【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件 由于调试基本不会对应用程序系统造成干扰,所以可以使用一个单独的时钟【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件来提供专用的调试资源。这允许在更改其他时钟配置期间进行调试(跟踪生成)。请注意,对于调试,【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件需要比【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件快或等于【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件

好了,对于时钟原理不深入介绍了,一方面对于我们电路原理没有深入分析的必要;另一方面,就算分析了你也不在乎,反正你只想当好一个代码搬运工。不信?那你不信也得信,有本事你自己配寄存器啊=-=。

电路原理图

时钟的电路原理图实际上是很简单,而且单说原理图我觉得上面的那些都没必要,因为基本和原理没太大关系。不过还是要稍微介绍一下。264内部实际上有一个OSC电路,它一般和我们外部的晶体振荡器构成一个皮尔斯振荡回路,从而可以产生一个固定频率的信号。皮尔斯振荡电路作为并联谐振电路,晶振两端需要负载电容对输出频率进行调整。这两个电容在264里既可以从外部接也可以直接使用内部的,当然内部的精度会有些差距。

【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件
图6  两种振荡器电路方式

所以我们按照惯例使用外部振荡器方式,搭建的电路如图所示。当然,如果直接使用内部电容的话,内部电容的参考值需参照数据手册来选择。

【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件
图7  时钟电路原理图

其它外设

本来这个不应该和时钟电路一起说的,不过想想也没啥不妥的,就放一起说了。我们的电路里一共留了两个外设芯片,一个是24C64的EEPROM,一个是W25Qxx系列spi flash芯片。

本来想讲一下原理的,但发现好像实在没啥好说的,那就贴个图简单介绍一下吧。

【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件
图8  24C64电路

电可擦写可编程只读存储器(Electrically Erasable Programmable Read-only Memory, EEPROM)实现掉电情况下保存数据,设计温湿度变送器采用M24C64芯片.芯片的1,2,3脚确定器件地址.5脚SDA和6脚SCL分别为串行数据引脚和串行同步时钟信号引脚,为IIC总线接口,均连接上拉电阻.7脚WP为写保护引脚,当接入高电平时,芯片数据均处于禁止写入状态,只有在接地时芯片处于正常读写状态.8脚和4脚分别为VCC和GND,分别连接电源正极和电源地。

【Aurix系列学习】TC264D最小系统搭建—时钟电路和外部器件
图9  W25Qxx系列flash芯片

以W25Q64为例:

W25Q64是华邦公司推出的大容量SPI FLASH产品,其容量为64Mb。该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。所以,这需要给W25Q64开辟一个至少4K的缓存区,这样必须要求芯片有4K以上的SRAM才能有很好的操作。 

W25Q64的擦写周期多达10W次,可将数据保存达20年之久,支持2.7~3.6V的电压,支持标准的SPI,还支持双输出/四输出的SPI,最大SPI时钟可达80Mhz。

  • CS:片选信号输入 
  • DO(IO1):数据输出(数据输入输出1) 
  • WP(IO2):写保护输入(数据输入输出2) 
  • GND:地信号 
  • DI(IO0):数据输入(数据输入输出0) 
  • CLK:串行时钟输入 
  • HOLD(IO3):Hold输入(数据输入输出3) 
  • VCC:电源 

 


如有疑问或错误,欢迎和我私信交流指正。
W.By ChenYX,未经授权,请勿转载!

over~