zgrfox110 发表于 2024-6-19 20:31:19

32G中断采集ADC速度

32G中断采集ADC速度采集20ms内读取19次,中断优先级调到2级。
采用同样配置用DMA方式采集256次。
请问什么原因会导致中断速度这么慢?
正常情况下DMA比中断读取快多少?

神农鼎 发表于 2024-6-19 20:47:32

用仿真功能仿真看下,程序错在哪

乘风飞扬 发表于 2024-6-20 10:23:58

中断采集速度跟ADC转换速度和中断执行时间有关。
所有中断都不要写太多程序,避免影响其它功能的响应速度。
附件例程供参考,在ADC中断里面加个IO口翻转,就可以测出产生中断的频率。

梁工 发表于 2024-6-22 23:26:37

可以看看我写的FFT频谱程序,采样25600Hz。也可以看看示波器程序,最高采样500KHz。

zgrfox110 发表于 2024-7-1 08:35:39

梁工 发表于 2024-6-22 23:26
可以看看我写的FFT频谱程序,采样25600Hz。也可以看看示波器程序,最高采样500KHz。 ...

我现在用DMA读ADC,采集市电,半波整流,ADC采集速度计算到12.8k,想20ms内采集256次。考虑到是一个完整的正弦波采集周期,所以采集的9路是一个DMA采集完成,中断保留结果,然后继续开始DMA读ADC。但是在读取过程中,测量市电压AD值会在2200-2600之间缓慢变化,吹风机电流会在150-350之间变化。DMA总线中断优先级都是3级。是这样循环采集原因还是说需要一个需要一个过零采样或是20ms中断启动?

zgrfox110 发表于 2024-7-1 09:09:21

梁工 发表于 2024-6-22 23:26
可以看看我写的FFT频谱程序,采样25600Hz。也可以看看示波器程序,最高采样500KHz。 ...

是市电频率在变?过零启动,固定一个20ms采集256次,还是计算市电频率,然后一个周期内采集采集256次?但是用DMA采集ADC如何微调时间?

梁工 发表于 2024-7-1 09:34:43

本帖最后由 梁工 于 2024-7-1 09:41 编辑

zgrfox110 发表于 2024-7-1 09:09
是市电频率在变?过零启动,固定一个20ms采集256次,还是计算市电频率,然后一个周期内采集采集256次?但 ...
你采样50Hz信号的?主楼一开始说采样的是市电50Hz信号,我就直接建议处理方法了。
采样50Hz交流信号计算RMS这类应用,使用均匀采样,采样时间按20ms的倍数采样20*N ms,20ms采样100次以上比较好,我一般使用10KHz~20KHz采样,对应20ms采样200~400次。
使用高级PWM自动触发是最佳方案,ADC中断读取结果并计算平方和或累加和,ADC中断设置为最高优先级。

梁工 发表于 2024-7-1 09:39:42

本帖最后由 梁工 于 2024-7-1 09:40 编辑

zgrfox110 发表于 2024-7-1 08:35
我现在用DMA读ADC,采集市电,半波整流,ADC采集速度计算到12.8k,想20ms内采集256次。考虑到是一个完整 ...
采样50Hz交流信号计算RMS这类应用,使用均匀采样,采样时间按20ms的倍数采样20*N ms,20ms采样100次以上比较好,我一般使用10KHz~20KHz采样,对应20ms采样200~400次。
1、使用定时器中断触发ADC,ADC中断读取结果并计算平方和或累加和。
2、使用高级PWM自动触发ADC,ADC中断读取结果并计算平方和或累加和。
3、多通道时,在定时器中断里触发DMA,DMA中断读取结果并计算平方和或累加和。
使用到的中断设置为最高优先级。

可以参考我的例子:
交流电压/直流电压ADC测量, 计算有效值 ,送【STC-ISP|调试接口】显示
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2199

zgrfox110 发表于 2024-7-2 13:22:57

梁工 发表于 2024-7-1 09:39
采样50Hz交流信号计算RMS这类应用,使用均匀采样,采样时间按20ms的倍数采样20*N ms,20ms采样100次以上比 ...

用了过零检测,采集了两个完整的正弦波,启动就把十个全部采集完。个位数跳动厉害,就这样吧,要求不高。

uyuway 发表于 2024-11-17 17:24:30

你Q多少想请教交流信号采集1276199975我QQ
页: [1] 2
查看完整版本: 32G中断采集ADC速度