8、ZYNQ PS外设之定时器
在 ZYNQ 嵌入式系统中,定时器的资源是非常丰富的,Zynq 的 PS 的 CPU0 和 CPU1 都有各自独立的 32 位私有定时器和 32 位看门狗定时器,这两个 CPU 同时共享一个 64 位的全局定时器( GT)。除此之外, PS 中还有一个 24 位的系统看门狗定时器( SWDT)和两个 TTC( Triple Timer Counters)定制控制器,每个 TTC 定时器里面包含三个定时器/计数器。系统看门狗定时器可以在系统发生灾难性的故障时(如 PS 中的 PLL 工作异常)发出信号, 使得系统程序重新启动,保证了系统安全可靠的运行。 TTC 用于计算来自 MIO 引脚或 EMIO 引脚的信号脉冲宽度,每个 TTC 都有三个独立的计数器。
看门狗需要不停的“喂狗”, 在这里就是不停的读预加载寄存器再写入预加载寄存器。 如果不能及时喂狗, 那么看门狗就会超时, 并且产生一个复位输出。
定时器的系统框图如下图所示:
图中的几种定时器都有连接到中断控制器( Interrupt Controller),我们可以很方便的使用定时器来完成定时器中断的实验。其中私有定时器( CPU Private Timer)是最为常用的。
Zynq 的私有定时器和看门狗定时器具有以下共同的特性:
(1)时钟频率为 CPU 时钟频率的一半,如 ARM 的工作时钟频率为 666.666Mhz,则私有定时器的时钟频率为 333.333Mhz。
(2)定时计数器位宽为 32 位, 当计数器递减至 0 后产生中断;
(3)有一个 8bit 预分频器, 可以对参考时钟进一步分频,更好的控制中断周期;
(4)可以配置单次模式或者自动重载模式;
(5)有一个可配置的预加载寄存器,通过配置起始计数值来设置定时时间,定时器时间可以通过下式计算:定时时间 = 1/定时器频率*(预加载值+1)
看门狗定时器多了以下功能:
(1)当看门狗没有及时“喂狗”导致的系统复位输出
(2)看门狗定时器可以设置为定时器模式或者看门狗模式
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期