目录
TC264最小系统的大部分我们都在前面介绍了,只剩下了时钟电路和外部器件。下面我们来介绍一下
系统时钟
简介
对于一个单片机来说,时钟单元一定是最重要的一部分,因为它相当于单片机的心脏。TC264单片机的时钟单元叫做时钟及时钟控制单元(CCU),这个单元用来生成系统所需要的多种时钟信号,其相对于单片机内部的拓扑图如下:
从图上可以看出,SCU单元输出的时钟信号被送到了单片机内部的各个部分。大家肯定纳闷,不是说系统时钟是由CCU生成的么,那为什么上面的图上没有指出CCU呢。实际上,这里的SCU手册里没有详细解释,不过根据我的猜测应该指的是System Clock Unit系统时钟单元,只是和后面的System Control Units(SCU)单元出现了名称冲突。
在手册里,描述建立一个完整的时钟需要四步,如同把大象放进冰箱一样简单易懂:
- Basic clock generation (Clock Source)
- Clock speed upscaling
- Clock distribution
- Individual clock configuration
这四个步骤在图上的表示大概是这样的:
怎么样,是不是感觉简单易懂?有一种三分钟就能学完的赶脚?实际上,它也确实不难理解。整个步骤里,第四部是相对各个时钟的分别配置,实际上重点的就是前三步,它们又分别由CGU和CCU两部分完成,所以它们也是重点,下面我们来详细介绍一下。
CGU(Clock Generation Unit)
CGU单元,顾名思义指时钟产生单元。实际上,我们所配置的外部时钟电路实际上就是广义上来说就是CGU。CGU本质上由两部分:振荡电路和PLL锁相环组成。前者手册里称作Basic clock generation (Clock Source),后者则称作Clock speed upscaling,其结构如图:
由OSC振荡电路产生基础时钟信号,这个输出的信号被送入后级的PLL中,与此同时,EVR稳压器内部也有一个备用时钟,可以在基础时钟出现问题时进行代替。然后,两个PLL模块会各生成一组PLL信号送入CCU(PLL和PLL2的区别只是最后分频系数K2和K3的区别),再由CCU对其进行选择和分频送给系统各部分。
CCU(Clock Control Unit)
CCU单元如图所示,就是简单的对输入信号针对各个部分分别处理,该分频的分频,该直接输出的就直接输出。这一块在手册里称作Clock distribution。总之,就像个保姆一样把内部各个部分的时钟都合理准备好,让各部分都可以工作在合适的条件下。
那究竟CCU输出的时钟信号是哪些呢?我从手册里将其摘录了一下,可以大概有一个了解:
英文看的不爽,我给整理了一下,虽然我觉得貌似这翻译了和没翻译一样……
时钟类型 | 时钟作用 |
系统总线时钟 | |
定义了SRI总线的运行性能,从而定义了所有连接的主从之间的数据交换率 | |
定义了SPB总线的运行性能,从而定义了所有连接的主从机和中断系统之间的数据交换率 | |
CPU控制时钟 | |
定义CPU0的执行速度 | |
定义CPU1的执行速度 | |
PMU控制时钟 | |
定义用于读取操作的PFlash的执行速度 | |
定义所有其他flash操作的执行速度 | |
外部选择时钟 | |
为STMs(系统定时器)定义一个独立于系统其余部分的基本频率。这允许STMs(系统定时器)以恒定的频率运行 | |
为GTM(通用定时器)定义一个独立于系统其余部分的基本频率。这使得GTM(通用定时器)可以在一个恒定的频率下工作 | |
为“慢速”通信接口定义一个与系统其余部分无关的基本频率。这使得IIC可以在恒定的频率下运行 | |
为“快速”通信接口定义一个与系统其余部分无关的基本频率。这使得QSPIs和PSI5S可以在恒定的baudrate(频率)上运行 | |
为MultiCAN定义一个与系统其余部分无关的基本频率。这使得MultiCAN可以在一个恒定baudrate(频率)上运行 | |
为ASCLINs定义一个与系统其余部分无关的基本频率。这使得ASCLINs可以在一个恒定baudrate(频率)上运行 | |
调试系统时钟 | |
由于调试基本不会对应用程序系统造成干扰,所以可以使用一个单独的时钟来提供专用的调试资源。这允许在更改其他时钟配置期间进行调试(跟踪生成)。请注意,对于调试,需要比快或等于 |
好了,对于时钟原理不深入介绍了,一方面对于我们电路原理没有深入分析的必要;另一方面,就算分析了你也不在乎,反正你只想当好一个代码搬运工。不信?那你不信也得信,有本事你自己配寄存器啊=-=。
电路原理图
时钟的电路原理图实际上是很简单,而且单说原理图我觉得上面的那些都没必要,因为基本和原理没太大关系。不过还是要稍微介绍一下。264内部实际上有一个OSC电路,它一般和我们外部的晶体振荡器构成一个皮尔斯振荡回路,从而可以产生一个固定频率的信号。皮尔斯振荡电路作为并联谐振电路,晶振两端需要负载电容对输出频率进行调整。这两个电容在264里既可以从外部接也可以直接使用内部的,当然内部的精度会有些差距。
所以我们按照惯例使用外部振荡器方式,搭建的电路如图所示。当然,如果直接使用内部电容的话,内部电容的参考值需参照数据手册来选择。
其它外设
本来这个不应该和时钟电路一起说的,不过想想也没啥不妥的,就放一起说了。我们的电路里一共留了两个外设芯片,一个是24C64的EEPROM,一个是W25Qxx系列spi flash芯片。
本来想讲一下原理的,但发现好像实在没啥好说的,那就贴个图简单介绍一下吧。
电可擦写可编程只读存储器(Electrically Erasable Programmable Read-only Memory, EEPROM)实现掉电情况下保存数据,设计温湿度变送器采用M24C64芯片.芯片的1,2,3脚确定器件地址.5脚SDA和6脚SCL分别为串行数据引脚和串行同步时钟信号引脚,为IIC总线接口,均连接上拉电阻.7脚WP为写保护引脚,当接入高电平时,芯片数据均处于禁止写入状态,只有在接地时芯片处于正常读写状态.8脚和4脚分别为VCC和GND,分别连接电源正极和电源地。
以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~