打印

关于用stm32进行交流采样算有效值的一个奇怪的问题。

[复制链接]
4800|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我想测量6路电压信号,信号是DC bias + AC signal. 测量思路如下:

   假定电压周期固定为20ms,定时器1ms中断一次,在定时器中断的ISR中软件触发AD采样。则在20ms内采样20次来算有效值于是AD配置成单次scan模式,采样结果用DMA来搬运到一个缓冲区中,缓冲区应能存放 20 *6 =120个数据。我把DMA配置成循环模式,并且把缓冲区大小设置成240 (两倍于120),并开启传输一半中断和传输完成中断,这样就可以实现AD采样的双缓冲结构。可是计算有效值一会是正常电压值,一会是一个很大的值,不过错误值也是稳定的。真不知问题出在哪?以下是代码片断,请大虾帮看看有什么问题:










tm_isr.jpg (36 KB )

tm_isr.jpg
沙发
FuckTheParty|  楼主 | 2010-7-26 18:54 | 只看该作者
开始怀疑信号有问题,用示波器看了下发现信号正常。估计是什么影响了AD采样值,造成了测量值时对时错。 这个AC采样方法我用在以前的一个项目上的,主控芯片是freescale的,效果还不错,现在用同样的方法用在了stm32上就出现了问题,这是第一次用stm32做项目,对stm32不熟悉再所难免,请各位大大看下我配置代码有什么问题。再此感谢。。。

使用特权

评论回复
板凳
jackpku| | 2010-7-30 17:52 | 只看该作者
也许你可以考虑用Timer的OC触发ADC自动采样?

使用特权

评论回复
地板
eydj2008| | 2010-7-31 08:06 | 只看该作者
第一,采样时间 加长。
第二,采用程序滤波处理。
就能解决这具问题了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

0

粉丝