【经验】如何使用32位超低功耗MCU外设反射系统功能?
EFM32是SILICON LABS公司推出的32位超低功耗的MCU系列,其有很多低功耗的特性。其中外设反射系统(Peripheral Reflex System,简称PRS)是EFM32系列MCU专有的外设互联总线,它允许不同的外设无需CPU干预即可直接相互通信,从而能够降低系统的功耗。外设反射系统基于“生产者-消费者”模型进行工作,发送反射信号的外设模块称为生产者(Producers),接收反射信号的外设模块称为消费者(Consumers)。外设反射系统会将生产者发出的信号根据配置映射到对应消费者,消费者根据收到的信号作出相应的动作。本文档将为大家介绍如何使用EFM32的PRS功能。
一、原理介绍
图1给出了一个通道及4个不同外设被连接到PRS的框图,该PRS包含8个通道,每个通道都可以在生产者提供的所有输出反射信号中进行选择。消费者可以选择侦听哪个PRS通道,并根据通过该通道连接的反射信号执行相应的动作。反射信号既可以是脉冲信号,也可以是电平信号。同步PRS脉冲的宽度为一个HFPERCLK周期,可以由一个生产者发送(例如ADC转换结束),也可以由PRS通道中的边沿检测器产生。电平信号的波形可以是任意的,但会被同步到HFPERCLK。在图一所示的例子中,4个外设被连接到2个PRS通道。TIMER0和ADC0连接到一个通道,ACMP和TIMER1连接到第二个通道。TIMER0的溢出信号可启动一次ADC转换,ACMP的输出可用作TIMER1的一个捕获/比较通道的输入。
图1:PRS框图
二、一般操作
可将不同的功能应用于一个PRS内部的反射信号。每个通道都包含一个边沿检测器,以便从电平信号产生脉冲信号。还可以通过用软件写PRS_SWPULSE和PRS_SWLEVEL寄存器来产生输出反射信号。PRS_SWLEVEL用于为每个通道设置一个可编程的电平,并保持其编程值。如果向PRS_SWPULSE写1,它会给出一个周期的高电平脉冲,否则它会保持0电平。SWLEVEL和SWPULSE信号与来自生产者的所选信号进行异或,形成输出信号,发送给侦听该通道的消费者。
使用emlib函数void PRS_SourceSignalSet(unsigned int ch, uint32_t source, uint32_t signal, PRS_Edge_TypeDef edge)可很容易地配置PRS通道。通过指定PRS通道、生产者外设、来自外设的信号和脉冲产生边沿,该函数可相应地配置PRS。
生产者
每个PRS通道都可以在来自多个生产者的信号中选择,这可通过PRS_CHx_CTRL寄存器中的SOURCESEL域配置。每个生产者都能输出一个或多个信号,这可通过设置PRS_CHx_CTRL寄存器中的SIGSEL域选择。将SOURCESEL的位设置为0(Off)会导致输入多路选择器的输出恒为0。表1给出了可用生产者一览表。
表1:反射生产者
消费者
消费者外设(列于表2)可被设置为侦听一个PRS通道,并根据在该通道接收的信号执行相应的动作。大多数消费者要求脉冲输入,有些可处理电平输入。
表2:发射消费者
三、软件示例
本例(如图2所示)展示如何设置ADC0,以便每当定时器0溢出时即启动单次转换。定时器0每次溢出时通过PRS发送持续一个HFPERCLK周期的高电平脉冲,ADC进行单次转换,转换结果在LCD上显示。本示例的硬件为STK3700开发板,MCU型号为EFM32GG990F1024。
图2:使用PRS实现用定时器0溢出启动ADC0单次转换
上图展示出了在定时器0溢出时由定时器0发送给ADC0的一个HFPERCLK周期宽的脉冲。该信号触发一次ADC转换。ADC消费由定时器产生的同一信号。本例所示的情况不需要边沿检测,PRS保持输入信号不变。ADC被配置为8位分辨率,Vdd既作为参考电压,也作为输入信号。ADC在转换结束时产生单次转换结束中断。CPU随后读取转换结果并将其显示到LCD。显示的结果是ADC0_SINGLEDATA寄存器的直接读取值,该值总是为255,这是因为输入信号与参考电压相同。参考代码如下:
相关技术文档:
Silicon Labs EFM32 32位MCU选型指南 详情>>>
世强元件电商版权所有,转载请注明来源及链接。
- |
- +1 赞 0
- 收藏
- 评论 3
本网站所有内容禁止转载,否则追究法律责任!
评论
全部评论(3)
-
DavidLjx Lv4. 资深工程师 2022-02-08PRS!
-
嘿仔 Lv6. 高级专家 2017-10-29感谢分享
-
嘿仔 Lv6. 高级专家 2017-10-29感谢分享
相关推荐
【经验】32位MCU LEUART位周期抖动大,该如何解决?
Silicon Labs 32位MCU EFM32,当基于32.768kHz时钟使用LEUART(@9600bps)进行通讯的时候,发现存约1%误码,原因是什么?如何解决?
设计经验 发布时间 : 2019-09-06
【经验】32位MCU的LDMA实现ADC至RAM的数据传输调试方法
Silicon Labs的EFM32PG/ EFM32JG系列32位MCU具有超低功耗、高性能、丰富的外设等特点,其 LDMA相比于series 0的DMA具有更多的传输方式,更适合应用于电池供电的产品。
设计经验 发布时间 : 2018-02-08
【经验】EFM32和EZR32无线MCU系列硬件设计时要关注什么?
Silicon Labs EFM32 32位MCU和EZR32无线MCU设计时需要关注电源,外部调试接口以及外部时钟源等要点。
设计经验 发布时间 : 2017-10-09
世界上最节能的微控制器EFM32之十大低功耗奥秘
Silicon Labs EFM32 32 位微控制器系列是世界上最为节能的微控制器,特别适用于低功耗和能源敏感型应用,包括能源、水表和燃气表、楼宇自动化、警报及安防和便携式医疗/健身器材。本文着重强调10个Silicon Labs32位MCU功耗低的因素。
新产品 发布时间 : 2016-07-11
【应用】32位MCU在中高端音频处理系统中的应用
音频信号处理涉及多方面,如采集、去除噪声等等,普通MCU很难用一颗芯片集成如此众多的功能。
新应用 发布时间 : 2017-07-18
全球超低功耗MCU的关键:灵活的能源管理单元
Silicon Labs EFM32小壁虎系列MCU,作为当今全球功耗最低功耗的MCU,EFM32成为电池供电等对低功耗要求较高场合的不二之选!
技术探讨 发布时间 : 2019-07-19
Silicon Labs 32位低功耗MCU EFM32GG990芯片使用中,将OPAMP(运算放大器)组合成三运放差分放大器时可选的放大倍数为多少?
当将三个OPAMP组合成差分放大器时,差分放大器的增益是由OPA0和OPA1的组合增益所决定的,由于三运放差分电路的电阻网络对应的桥臂要对应成比例,所以只三种有 效的差分增益可供使用,它们分别为1/3、1和3,此时OPA0 RESSEL和OPA2 RESSEL的组合分别为0和4、1和1、4和0。
技术问答 发布时间 : 2017-10-10
如何为Silicon Labs 32位低功耗MCU EFM32GG230F512实现基于RTC的软件无滴答日历?
在Silicon Labs 32位低功耗MCU EFM32GG230F512上实现软件方式的无滴答日历,可以通过使用日历标准C库 time.h, 在time.h中实现的timer()函数基于RTC计数值来计 算日历时间。
技术问答 发布时间 : 2017-10-10
如何读取EFM32系列32位MCU的多通道AD扫描采样数据?
EFM32系列单片机ADC的数据保存寄存器有两个,一个是单通道模式的采样数据保存寄存器,一个是扫描模式的采样数据保存寄存器。如果使用多通道扫描采样,那么每个通道采样完成后会产生一个ADC扫描模式中断,用户需要在中断里面读取该通道的扫描采样数据以便存储下一个通道的采样数据。建议使用DMA读取方式,将DMA的触发源设置为ADC的扫描模式事件,这样就可以实现不用进入ADC中断以及MCU的参与即可完成ADC扫描采样数据的保存和读取。
技术问答 发布时间 : 2017-05-05
Silicon Labs EFM32系列32位低功耗MCU Cortex系列微控制器采用的软件接口标准CMSIS有哪些特性?
嵌入式系统越来越复杂,开发和软件测试的工作量也显著增加,为了减少开发时间并且降低产品中存在的风险,软件重用已经越来越普遍。为了各种软件产品间的配合,ARM同各大 微控制器供应商、工具供应商和软件解决方案提供商一起开发了CMSIS,一个涵盖了大多数Cortex-M处理器和Cortex-M微控制器产品的软件框架。 CMSIS的设计目标和特性包括以下几点: 1、提高软件的可用性。 2、提高软件的兼容性。 3、独立的工具链特性。 4、开放性。 5、易用性。
技术问答 发布时间 : 2017-10-10
32位低功耗MCU EFM32系列内部的LFRCO是32K还是32.768K?
EFM32系列32位低功耗MCU内部的LFRCO为32K。
技术问答 发布时间 : 2017-10-10
Silicon Labs EFM32系列32位低功耗MCU的硬件设计时要关注什么?
1、对于Silicon Labs EFM32系列32位低功耗MCU的系统设计者,有几个值得关注的因素,包括如何为芯片提供鲁棒性的电源,如何连接外部调试接口以及如何设计外部时钟源。 2、电源: 尽管EFM32支持宽的电压范围并且消耗很小的平均电流,但是正确的去耦是极其重要的。对于高频暂态信号去耦电容能使得电源和MCU以及地之间的电流回路尽量 短。 3、调试接口及外部复位引脚 (RESETn): 除了可选的SWO(串行线输出), 调试接口包括SWCLK(时钟输入)和SWDIO(数据输入输出)线, 除此之外可 选的SWO(串行线输出)。在无需外部复位的情况下因为复位引脚(RESETn)具有内部上拉电阻所以可以不做连接。强行拉低RESETn引脚将对产生EFM32触发复 位。 4、外部时钟源: EFM32除了内部低频和高频RC振荡器模式外也支持不同的外部时钟源来产生低频以及高频时钟。可能的低频LF和高频HF域外部时钟源是外部振荡器(方 波或者正弦波)或者晶体/陶瓷谐振器。
技术问答 发布时间 : 2017-10-10
Silicon Labs 32位低功耗MCU EFM32G232F128系列微控制器GPIO的最大翻转速度为多少?
EFM32G232F128系列微控制器GPIO的最大翻转速度为系统时钟的1/6。例如,当主频为32MHz时,GPIO最大翻转速度大约为5.3MHz。
技术问答 发布时间 : 2017-10-10
Silicon Labs EFM32系列32位低功耗MCU Cortex-M3内核嵌套向量终端控制器(NVIC)有哪些特性?
1、支持最多240个中断输入、不可屏蔽中断输入和多个系统异常。除了NMI外,每个中断都可以被单独使能或禁止。 2、中断和多个系统异常具有可编程的优先级。对于Cortex-M3/M4,优先级可以在运行时动态修改(注意,Cortex-M0/M0+不支持优先级的动态修改)。 3、嵌套中断/异常以及中断/异常按照优先级自动处理。 4、向量中断/异常。意味着处理器会自动取出中断/异常向量,无需软件确定产生的是哪个中断/异常。 5、向量表可以重定位在存储器中的多个区域。 6、低中断等待。对于具有零等待状态的存储器系统,中断等待仅为12个周期。 7、中断和多个异常可由软件触发。 8、多个优化用于降低不同异常上下文切换时的中断处理开销。 9、中断/异常屏蔽功能可以将所有的中断和异常(NMI除外)屏蔽掉,或者将中断/异常屏蔽为某个优先级之下。 为了支持这些特性,NVIC使用了多个可编程寄存器。这些寄存器经过了存储器映射,而CMSIS-Core则为大多数常见的中断控制任务提供了所需的寄存器定义和访问函数 (API),这些访问函数非常已于使用。
技术问答 发布时间 : 2017-10-10
Silicon Labs 32位低功耗MCU EFM32GG990芯片脉冲计数器(PCNT)是否可以通过其他引脚来控制PCNT的计数方向?
可以。PCNT可以作为外设反射系统(PRS)的消费者,将PRS输入信号作为S0IN和S1IN的输入。因此只需要将其它引脚作为PRS的生产者,并在PCNT中将相应 通道选择作为S1IN的输入,通过以上配置即可使用其它引脚控制PCNT的计数方向。
技术问答 发布时间 : 2017-10-10
电子商城
现货市场
登录 | 立即注册
提交评论