工作生活

02.ARM - 时钟体系

2019-07-02  本文已影响0人  柏666

一、时钟:

        1、一些时钟控制逻辑可以通过设置引脚,使用外接晶振通过内部电路产生时钟源;或者直接使用外部时钟源。它提供三种时钟:

            ①、高频时钟:用于CPU

            ②、中频时钟:用于AHB总线上高性能设备(CPU、存储器控制器、中断控制器、LCD控制器、DMA和USB;主机模块等)

            ③、低频时钟:用于APB总线上低带宽设备(WatchDog、IIS、IIC、PWM定时器、MMC接口、ADC、UART、GPIO、RTC、SPI)

        2、获得时钟的一般流程:外部晶振 -> 锁相环 -> 高频时钟 -> 中频时钟 -> 低频时钟。

        3、时钟的设置:上电等待晶振输出稳定(此时FCLK=Fin),reset 信号恢复高电平,CPU 开始执行指令。设置分频器(三种时钟比值) -> 必要时还需设置CPU总线为异步模式 -> 设置锁相环确定高频时钟。

            ①、clock diveder 分频器:FCLK、HCLK、PCLK 通过分频器设置,其存在比例关系。某些情况还需设置其他寄存器。

            ②、有些芯片需要设置 CPU 总线为异步模式。

            ③、设置 MPLL,此时 FCLK 停振,CPU 不工作。设置等待时间。之后 MPLL 稳定,使用新 FCLK:(MPLL用于CPU及外围器件。UPLL用于USB)

                Ⅰ、MPLL 寄存器:设置 FCLK 与 Fin 的倍数。FCLK Fin 与 MDIV、PDIV、SDIV 有计算公式。

                Ⅱ、lock time 寄存器:设置等待 MPLL 稳定的时间。


二、定时器:

        1、软件延时:当程序还要执行其他操作(键盘扫描、显示等)时需占用CPU机器周期,会影响精度。

             硬件中断定时器:利用定时器溢出中断,在中断服务程序中改变电平的高低。

        2、定时器原理:

                ①、TCMPx 和 TCNTx 初值来自 TCMPBx, TCNTBx。

                ②、每来一个时钟,预设的计数器 TCNTx 数值" -1 "。

                ③、当TCNTx == TCMPx,可以产生中断,也可以让对应的SPWM引脚反转(原来是高电平,之后转换成低电平)

                ④、TCNTx 继续减1。当TCNTx == 0 时,可以产生中断,pwm引脚再次反转(可设置自动加载初始)

        3、操作定时器:(设置对应的寄存器。以上图为例)

                ①、设置时钟:TCFG0, TCFG1。配置 TCFG1 之前先清零。

                ②、设置初值:TCNTB0。因为暂未用到TCMP,所以不设置。次数减到0会触发中断,相当于周期。

                ③、加载初值,设为自动加载并启动:TCON。加载完初值后,需在启动 timer 前清除手动更新位。

                ④、设置 timer 中断:设置中断控制器中 timer 对应的位。

                ⑤、执行中断程序:在中断模式中读取,如果是定时器中断则处理。

                ⑥、检查中断:TCNTO0 寄存器的值能显示各寄存器状态。出错时需要用到。

上一篇 下一篇

猜你喜欢

热点阅读