回复
发帖数: 10
注册日期: ‎07-26-2016

EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

你好:
     我的EFM32应用场景是这样的:传感器信号的上升时间约100ns,现在希望用10路比较器来把信号的幅值分成10段,然后10路比较器的触发引脚接
EFM32的外部中断。EFM32从Stop Mode 靠 幅值最低的那路比较的外部触发来唤醒是,wake-up time 是2uS。
     那么我想知道的是,EFM32在从Stop Mode 到 Run Mode的状态下,EFM32的中断控制器在100ns内处理10个连续的中断信号,是否处理的过来?中断服务程序中只修改标志位,不做其它运算。
     如果不能处理过来,那么两个中断信号最少间隔多长时间?

发帖数: 473
注册日期: ‎02-06-2013

回复: EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

100ns还要分成10份, 每份10ns, 比较器的响应时间恐怕也难以满足要求.

发帖数: 2,386
注册日期: ‎10-14-2014

回复: EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

如Mark所说, 没理解这个需求.
1. 10路比较器, 哪个芯片提供这么多比较器.
2. "然后10路比较器的触发引脚接
EFM32的外部中断", 接外部中断? 怎么接?
3. 即使跑50M clock, 每个clock时间20nS, 中断延时怎么做到100/10=10nS.
4. 我的理解2uS的硬件唤醒过程是不能执行代码的. 你要在这段时间处理10个中断?
: My views are my own and do not necessarily represent the views of Silicon Labs
WeiguoLu
发帖数: 10
注册日期: ‎07-26-2016

回复: EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

感谢您的回复!比较器的处理时间是120ns。我的设计是想在唤醒2uS的时间内,响应10个连续的中断,在中断处理服务中修改标志位的值。在2uS唤醒后,在主程序中做实际的运算。之前发帖子问过您,在唤醒的时间内,是可以响应多个中断的。那么我是否可以这样理解,在唤醒的时间内,如果连续多个外部中断触发,EFM32只是中断寄存器置位,而中断服务程序是在2uS唤醒后再执行?如果我的理解没有问题的话,那么在唤醒的时间内,EFM32最多能接收多少个连续的中断。谢谢!

发帖数: 10
注册日期: ‎07-26-2016

回复: EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

首先,感谢您的回复!可能是我表述的不够明确。

1. 我的设计是打算在电路中加10个比较器,而不是希望1个比较器能比较10路,比较器的延时时间是120ns。

2. 我查看EFM32手册,知道EFM32有15个中断源(不知道对不对)。而比较器的输出引脚可以输出上升沿引号,我的设计是希望EFM32的外部中断设置为上升沿触发,从而来执行我的中断服务程序。

3,4. 这里我个人觉得也是不太实际的。之前发帖子问过Mark,Mark说在EFM32的唤醒时间内是可以响应连续的多个中断的。那么,我是否可以这样理解,在唤醒的时间内,如果连续多个外部中断触发,EFM32只是中断寄存器置位,而中断服务程序是在2uS唤醒后再执行?那么在唤醒的时间内,EFM32最多能接收多少个连续的中断。谢谢!

发帖数: 473
注册日期: ‎02-06-2013

回复: EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

Hi,

关于那个唤醒2us时间内来中断是否响应, 我做下面分析. 在MCU进入深度休眠的时候, 已经将许多外设的功能关闭, 只能响应有限的几个唤醒源. 如果被唤醒,在2us内需要做使能工作,使得MCU恢复到正常模式. 那么在这2us期间有中断进来的话, 也只能是设置中断标识位,而且还是要是指定的唤醒源的中断. 因为其他外设还没有恢复到正常状态, 2us过后,所有外设正常工作, 那么其他的中断可以正常进来.

 

Thanks.

Mark

发帖数: 10
注册日期: ‎07-26-2016

回复: EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

我在AN0007 - Application Note(Energy Modes)  的2.6节看到From EM1 to EM3 the EFM32 will wake up (enter EM0) on any interrupt. 根据您分析,EFM32从深度睡眠模式唤醒的2uS时间内要做很多恢复工作,影响中断源也只能设置中断标识位,这样也可以满足我的设计要求,只要在这个唤醒时间段内能记录哪些外部中断源触发了也可以。但是,您能给出2uS内,EFM32能记录(置位中断标识位)触发中断源的最大数目吗?另外问您一下,在唤醒的这期间,EFM32的主时钟是按照多少M来工作的?

发帖数: 473
注册日期: ‎02-06-2013

回复: EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

Hi,

  因为每个外设都会有独立的中断标识位, 只要发生中断, 相应的标志位就会被设置起来. 所以只要在EM1-EM3所允许的中断, 理论上都可以在触发时设置相应的标志位. 在唤醒的时间内, 应该都是该模式下允许的时钟在跑.

 

Thanks.

Mark

发帖数: 2,386
注册日期: ‎10-14-2014

回复: EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

我还有个疑问,

这里你有十个外部比较器,我的理解你连到10个gpio上. 不知道你使用哪个efm32芯片,如果使用假设zg芯片,在datasheet的25.3.5一节有如何使用的说明. 可能实现起来还很复杂. 在中断发生后如何判断哪个比较器触发了中断. 不知道你的信号变化多块, 要不要使能内部滤波器.
如果在唤醒后处理这10个中断,你有多长时间内要处理完的要求吗?
能否告知你的应用场景以及为什么会有这个需求,不知道如果知道需求后能否考虑其他方式实现.
WeiguoLu
发帖数: 10
注册日期: ‎07-26-2016

回复: EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

1. 应用场景:产品是用于探测放射性物质的能量的。探测器(传感器)出来的原始信号的上升时间期望是100nS(通过运放调节,最大不超过1uS,希望越小越好)。本底条件下(无放射性物质时)每秒内会有十几个这样的原始信号,而在有很强的放射性物质时可能会有10K甚至更多的这样的原始信号,信号的峰值也不固定。因此,设计10个比较器(不同的比较电平:24mV,60mV,150mV...663mV)去把信号的峰值分成10各区域,而每个区域对应我们设计好的计算公式,这样就不必用ADC了。

2. 我的设计:EFM32GG990的10个GPIO配置成EXTI中断源,接10片比较器(不同的触发电平),每个比较器和GPIO引脚是一一对应的,所以不需要在中断发生后判断是哪个比较器触发的中断。而唤醒后,中断服务里只做自定义Flags值的修改和简单的赋值(每个区间对应的公式是固定的),所以处理速度是非常快的。

3. 信号的上升时间为100nS至1uS可调,整个信号周期最大大约2.5uS。而10个比较器的比较电平最大的那个出来的触发信号高电平保持时间估计在几十nS,这样有必要使能内部滤波器吗?另外,请问内部滤波器的相关介绍在手册中的哪个部分。谢谢!

Highlighted
发帖数: 10
注册日期: ‎07-26-2016

回复: EFM32从Stop Mode 恢复到 Run Mode的过程中,能否在100ns内处理连续的10个中断信号?

您那边是否有渠道和EFM32的芯片设计者进行确定:关于EM1-EM3模式下,在100nS~1uS时间内,连续10个中断能否实现在触发时设置响应的标志位。这里主要是两个连续中断间响应标志位置位的时间间隔问题,这关系到我们设计几路比较器和把原始信号的上升时间调节到多大的问题。谢谢!