你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32利用模拟看门狗如何实现ADC超范围次数计数

[复制链接]
nyszx 提问时间:2017-9-27 11:33 /
如题,目的是想实现多个脉冲信号计数,只有超过规定的脉冲幅度才会计数,且幅度可调。想利用ADC采集脉冲信号,通过模拟看门狗检测幅值,但是现在发现模拟看门狗在超幅值后会一直触发中断,不是超过后中断一次,没法计数。求助社区专家看看有没有什么方案。
比如单个通道可以这样实现:
幅值限定为:0x0c00 的信号进行计数cnt  
配置好ADC和模拟看门狗后,设置幅值0x0c00,然后启动ADC,之后在中断中这样写:
void ADC1_2_IRQHandler(void)
{
    static uint8_t i;
    if (i==0){
        ADC_AnalogWatchdogThresholdsConfig(ADC1, 0x0fff, 0x0100);//提高限值,防止再次中断,设定下限,实现信号下降后再次中断恢复限值
        i=1;
        cnt++;//超限计数
    }else{
        i=0;
        ADC_AnalogWatchdogThresholdsConfig(ADC1, 0x0c00, 0x0000);//恢复限值,准备下一次中断
    }
  /* Clear ADC1 AWD pending interrupt bit */
  ADC_ClearITPendingBit(ADC1, ADC_IT_AWD);
}
但是多个通道中断更改限值会不会有问题?

收藏 评论7 发布时间:2017-9-27 11:33

举报

7个回答
斜阳 回答时间:2017-9-27 11:42:08
你需要的是比较器+计数器。根据需要选择对应的器件

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

nyszx 回答时间:2017-9-27 13:07:24
斜阳__ 发表于 2017-9-27 11:42
你需要的是比较器+计数器。根据需要选择对应的器件

使用F3系列的带比较器的吗,但只有7个比较器。还是使用外部独立比较器,使用DAC控制比较电压,GPIO中断采集?
nyszx 回答时间:2017-9-27 13:36:34
至少12路比较计数,用F3得两个片子。找时间试试SOT封装的外部比较器
MrJiu 回答时间:2017-9-27 14:14:51
模拟看门狗?采样ADC?这两者啥关系?
测量脉冲,也要看脉冲的频率。。。用adc完全没问题的,adc+dma,采样一次然后中断。。。问题的关键是这个adc+dma的频率,如果太高了,可能MCU没法工作了。。。对了,这里的adc采样指的的是轮询采样。。。当然了,也可以非常高的频率采样,但是就需要增加dma的buffer,不过这时候就需要引入额外的计数中断了,比如10us?当然了,这个频率也很高,一般都说100us。。。那么这里的buffer就必须可以满足保存100us的数据。。。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

五哥1 回答时间:2017-9-28 21:50:41
一块芯片的资源看似不够,还是需要外部的额外的硬件资源,加个比较器吧

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

ryn4 回答时间:2018-1-19 18:28:25
小白求助楼主,你的问题正是我想用的。。现在我想实现的功能是电平检测,模拟电平是从0逐渐变大的,0到3.3v之间电平分成30阶,也是循环计数,先设置看门狗高、低阈值0-1/30*3.3时,若电平达到了1/30*3.3v,中断,串口打印信息;再设置看门狗高、低阈值为1/30*3.3v---2/30*3.3v,若电平达到2/30*3.3v,再中断,串口打印信息,如此循环30次,请问楼主觉得可行吗?
nyszx 回答时间:2018-1-21 20:27:52
ryn4 发表于 2018-1-19 18:28
小白求助楼主,你的问题正是我想用的。。现在我想实现的功能是电平检测,模拟电平是从0逐渐变大的,0到3.3v ...

一路,且变化不是很快的,应该可以的,因为你还要打印信息。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版