0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PS端RTC中断实验

电子设计 来源:电子设计 作者:电子设计 2022-02-09 11:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:ALINX

* 本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。

适用于板卡型号:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

vivado工程目录为“ps_hello/vivado”

vitis工程目录为“ps_rtc/vitis”

1.RTC介绍

实时时钟(rtc)单元为系统和应用软件提供精确的时间基准。为了满足高精度的需要,实时时钟还包括校准电路,以补偿温度和电压波动。RTC 由 VCC-PSAUX 或 VCC-PSBATT 电源供电。当辅助电源可用时,RTC 使用它保持计数器活动。当辅助电源不可用时,RTC 自动切换到 VCC PSBATT 电源。RTC 功能如下:

1)系统掉电时,该单元自动切换至电池供电,实现时钟的不间断运行

2)支持报警设置和周期中断设置

3)校准电路以确保时间精准

4)三个计数器

时间秒计数器,32 位,可以计数约 136 年

32 KHz 参考时钟计数器,表示 1 秒的计数

用于校准的 4 位分数计数器

pIYBAGAJQaeAOxmbAACKkKzN9_o872.jpg

RTC控制器结构图

o4YBAGAJQeeAbAiNAACAZwA3DPk952.jpg

RTC功能图

2. 中断介绍

1)ARM cortex-A系列处理器,提供了4个管脚给soc,实现外界中断的传递。分别是:nIRQ、nFIQ、nVIRQ、nVFIQ。arm系统中,会有多个外设,均有可能产生中断发送给core,因此就需要有一个中断控制器来作为中间的桥接,收集soc的所有中断信号,然后仲裁选择合适(高优先级)的中断,再发送给CPU,等待CPU处理。

2)这里中间的桥接,就是arm公司推出的大名鼎鼎的gic(general interrupt controller)。gic其实是一个架构,版本历经了gicv1,gicv2,gicv3,gicv4。

3)Ultrascale+中断框图如下

o4YBAGAJQiWAFBOFAACq7bsFgBo393.jpg

图中包含两个GIC:

RPU GIC:PL390(arm公司设计的对应GICv1 IP)

APU GIC:GIC-400(arm公司设计的对应GICv2 IP)

4)RPU GIC,其系统功能框图如下:

pIYBAGAJQmSANoa2AACoe6w1F_w243.jpg

从图中可以看到,中断源主要有三种:

PPI:private peripheral interrupt,私有外设中断,该中断来源于外设,只对固定的core有效。

SPI:shared peripheral interrupt,共享外设中断,该中断来源于外设,可以对所有的core有效。

SGI:software-generated interrupt,软中断,软件产生的中断,用于给指定的core发送中断信号

控制器功能框图如下:

o4YBAGAJQrqAa4l_AACF_o5Pqfs423.png

上图中, ICD的控制寄存器主要如下:

pIYBAGAJQvmAdIznAAFAupdwVn4683.jpg

1)APU GIC,功能框图如下

pIYBAGAJQzeAdvV9AABYKsw1fDk775.png

GICv2,将中断分成了group0和group1。使用寄存器GICD_IGROUPRn来对每个中断,设置组。其中group0:安全中断,由nFIQ驱动,group1:非安全中断,由nIRQ驱动。支持最大1020个中断。其中断号分配如下:

o4YBAGAJQ3WAP7ZPAAAq21bxCLs671.jpg

GICv2,主要由两部分组成:distributor及cpu interface。

distributor,用来收集所有的中断来源,并且为每个中断源设置中断优先级,中断分组,中断目的core。当有中断产生时,将当前最高优先级中断,发送给对应的cpu interface。其功能有:全局中断使能、每个中断的使能、中断的优先级、中断的分组、中断的目的core、中断触发方式、对于SGI中断,传输中断到指定的core、每个中断的状态管理、提供软件,可以修改中断的pending状态

cpu interface,将GICD发送的中断信息,通过IRQ,FIQ管脚,发送给连接到该cpu接口的core。其功能有:将中断请求发送给cpu、对中断进行认可(acknowledging an interrupt)、中断完成识别(indicating completion of an interrupt)、设置中断优先级屏蔽、定义中断抢占策略、决定当前处于pending状态最高优先级中断

gicv2,定义了自己的一些寄存器,这些寄存器,都是使用memory-mapped的方式去访问的,也就是在soc中,会留有一片空间,给gic。cpu通过访问这部分空间,来对gic进行操作。主要寄存器如下:

o4YBAGAJQ7SAOYBPAAAxtCmvcRA372.png

这里中断只是作简单介绍,需要详细了解的,请参照xilinx提供的文档:ug1085-zynq-ultrascale-trm.pdf。

软件工程师工作内容

以下为软件工程师负责内容。

3. Vitis程序编写

3.1 创建Platform工程

1)点击Tools-》Launch Vitis

pIYBAGAJQ_KABZ_LAABrenT6bXk766.png

2) 与前面的Hello World实验不同,我们只建立Platform工程

3) 填入工程名字,要与XSA文件的名字一样,点击Next

4) 点击Next

5) 选择XSA文件

保持默认,点击Finish

6) 点开platform.spr,并点开BSP

o4YBAGAJRWaAToxaAABpLaD4qPk590.png

7) 找到RTC驱动,并点击Import Examples

o4YBAGAJRauARgFrAABazE1UX-w236.jpg

8) 非常幸运,有中断的例子,怎么就知道这个例子就是中断的例子呢?是通过“intr”猜测的,所以,基本功很重要,不然你连找例程都不会。

o4YBAGAJRemAEC3lAABNRlqRG5A334.png

9) 在这里就导入了example工程

pIYBAGAJRiaACTgSAABtZ55sZcI160.jpg

下面就是阅读代码,然后修改代码了,当然,可能一下不能完全理解这些代码,只能在以后的应用中去反复练习

10)通过函数XRtcPsu_GetCurrentTime来获取系统秒计数器值,用函数XRtcPsu_SecToDateTime将计数值转换为我们能看明白的年月日时分秒。

o4YBAGAJRmSABD9jAAAsBFbwEpo516.jpg

11)设置中断时间,中断时间PERIODIC_ALARM_PERIOD宏定义为2,也就是2秒中断一次

o4YBAGAJRqOAba1pAAB36mqaTqs808.png

12)Build Project编译

o4YBAGAJRuKAGT8yAAB1o-L6ydE215.png

13)了解一下中断控制器的使用,主要分为几个步骤,初始化中断控制器GIC初始化中断异常中断服务函数注册在中断控制器中使能中断使能中断异常。有两步需要注意,在中断控制器中使能中断是要根据中断号使能相应的中断,比如本章介绍的RTC,是在中断控制器GIC中的使能中断,而后面的使能外设中断是指在外设中打开它的中断,正常情况下是不打开的,打开之后就可以产生中断传递到中断控制器GIC。在以后的实验中可以借鉴这种写法。

pIYBAGAJRzWAUIkQAAHXImWaNfg272.jpg

4. 下载调试

1)打开串口终端;

2)下载调试程序的方法前面教程已经讲解,不再复述;

3)和我们预期一样,串口每两秒会看断一次;

pIYBAGAJR6-AEExkAAAa9YCaCts641.png

5. 实验总结

实验中通过简单的修改Vitis的例程,就完成了RTC,中断的应用,看似简单的操作,但蕴含了丰富的知识,我们需要非常了解RTC的原理、中断的原理,这些基本知识是学习好ZYNQ的必要条件。

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22287

    浏览量

    630315
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RTC工作原理

    到这些影子寄存器中‌ ‌4、周期性自动唤醒‌:RTC有一个16位的自动重载递减计数器,可以产生周期性的唤醒中断,通常定时一秒‌ ‌5、可编程闹钟‌:RTC有两个可编程闹钟,当闹钟触发时会产生事件信号‌ ‌6、时间戳和入侵检测‌:
    发表于 11-28 07:14

    在CW32F030 MCU上设置外部中断RTC唤醒条件的示例

    ) { Enter_Sleep_Mode();// 进入Sleep模式,等待外部中断唤醒 // 唤醒后的处理代码(实际上,这部分代码将在中断处理函数中执行) } } 示例2:RTC唤醒 假设我们希望在特定
    发表于 11-25 08:00

    RVMCU课堂「20」: 手把手教你玩转RVSTAR—实时时钟RTC

    PCLK1时钟至少慢4倍) RTC时钟源: HXTAL时钟除以128 LXTAL振荡电路时钟 IRC40K振荡电路时钟 可屏蔽的中断源: 闹钟中断中断 溢出
    发表于 10-29 08:10

    淘汰纽扣电池:永铭SDV超级电容引领RTC备用电源新趋势

    RTC被称为“时钟芯片”,用于记录和跟踪时间。它的中断功能能够定时唤醒网络中的设备,使设备的其他模块在大部分时间可以休眠,从而大大降低设备的整体功耗。由于设备时间不能有任何的偏差,因此RTC时钟供电
    的头像 发表于 09-01 09:58 352次阅读
    淘汰纽扣电池:永铭SDV超级电容引领<b class='flag-5'>RTC</b>备用电源新趋势

    AT32的ERTC与RTC的区别

    的日历逻辑,直接给出年、月、日、时、分、秒,大大简化了软件操作和降低了出错概率 。 中断与闹钟功能 RTC :较为基础,通常只提供一个中断请求,用于闹钟功能 。 ERTC :提供多个中断
    发表于 07-11 10:48

    第二十八章 RTC——实时时钟

    本文介绍了W55MH32的RTC外设,其为掉电可运行的32位计数器,常用LSE 32.768KHz时钟源,引入UNIX时间戳概念。还介绍相关库函数,及配置RTC、处理中断、显示时间和校准LSI频率的
    的头像 发表于 06-20 14:08 1101次阅读
    第二十八章 <b class='flag-5'>RTC</b>——实时时钟

    【RA4L1-SENSOR】RTC实时时钟

    和周期型中断优先级 RTC时间结构体,用于配置时间或者读取时间 实验代码,使用串口发送时间,并在段码LCD屏上显示 rtc_time_t time_set = { .tm_year =
    发表于 06-13 12:10

    小安派BW21-CBV-Kit教程——基础RTC例程与简易RTC闹钟

    本例演示如何使用 RTC 库方法。本函数介绍如何使用 RTC API。RTC 功能由一个独立的 BCD 定时器/计数器实现。
    发表于 04-13 17:46 596次阅读
    小安派BW21-CBV-Kit教程——基础<b class='flag-5'>RTC</b>例程与简易<b class='flag-5'>RTC</b>闹钟

    【瑞萨RA2L1入门学习】03. RTC 时钟日历&amp;闹钟&amp;周期性中断

    、月、日、时、分、秒等时间信息;在计时模式下,RTC则用于产生固定周期的中断,如每秒一次的中断RTC 常见的操作包括设置时间、设置定时闹铃、配置周期性
    发表于 03-07 16:45

    【瑞萨RA2L1入门学习】+OLED显示RTC时钟实验

    【瑞萨RA2L1入门学习】+OLED显示RTC时钟实验 在给的资料包找到以下安装包和实例文件,标红的是带有fsp的e2s,当然也可以先安装e2s然后安装FSP支持包; 将实例放到设定的工作空间
    发表于 03-02 21:18

    利用CKS32F107xx系列RTC的闹钟实验

    本小节讲解的是如何在万年历实验的基础上,利用RTC的闹钟功能实现一个闹钟,在每天的[XX小时-XX分钟-XX秒]产生闹钟,然后通过闪烁LED模拟闹钟响效果。
    的头像 发表于 02-18 17:21 1126次阅读

    如何利用RTC外设实现万年历功能

    本小节讲解的是如何利用RTC外设实现万年历功能,本实验工程与RTC底层驱动相关的文件为bsp_rtc.c/h,在底层驱动之上我们添加了bsp_calendar.c/h和bsp_date
    的头像 发表于 02-18 16:56 1537次阅读

    RTC时钟芯片+电池的应用案例(一)

    实时时钟,简称RTC,是广泛应用于电子产品的重要元器件。爱普生RTC实时时钟具有高精度、高稳定性和多功能的特点,目前广泛应用于多个行业。下面通过几个视频来详细了解一下爱普生RTC实时时钟在工业以及
    的头像 发表于 01-08 11:25 2406次阅读
    <b class='flag-5'>RTC</b>时钟芯片+电池的应用案例(一)

    RTC与WebRTC的主要区别

    在数字通信领域,实时通信(RTC)和WebRTC是两个经常被提及的术语。它们都旨在提供即时的、高质量的通信体验,但它们在实现方式、应用场景和技术支持上有所不同。 1. 定义与起源 1.1 实时通信
    的头像 发表于 12-11 15:41 1898次阅读

    RTC技术在实时通信中的应用 RTC与VoIP的区别

    在数字化时代,实时通信(RTC)技术已经成为我们日常生活和工作中不可或缺的一部分。从视频会议到在线教育,从远程医疗到社交网络,RTC技术都在发挥着重要作用。 一、RTC技术在实时通信
    的头像 发表于 12-11 15:38 2310次阅读