打印

关于STM32 ADC用DMA采多通道时数据错位的问题New

[复制链接]
楼主: kingpower2018
手机看帖
扫描二维码
随时随地手机跟帖
21
kingpower2018|  楼主 | 2009-5-31 08:54 | 只看该作者 回帖奖励 |倒序浏览

请问楼上的有什么好的建议

请问楼上的有什么好的建议,不要说得太空洞?

使用特权

评论回复
22
kingpower2018|  楼主 | 2009-5-31 09:17 | 只看该作者

干拢发生数据错误

关键是在没有干拢或弱干拢下机器是完全正常的,但在强干拢(90kW电动机启停干拢时),就会发生数据错误.

使用特权

评论回复
23
kingpower2018|  楼主 | 2009-5-31 09:24 | 只看该作者

机器实验正常

我们机器在实验室做过EMC、变频、吊电、浪涌、静电放电15kV等实验,机器都很正常的数据显示,但在现场90kW电动机启停干拢时就有数据错误。真是不明白,望各位给予指点!!!

使用特权

评论回复
24
午夜霓虹| | 2009-5-31 10:35 | 只看该作者

哈哈 我跟你的用法是一样的

我跟你的用法是一样的,还没遇到问题,等遇到了我在试试看。

以前软件调试的时候遇到过,后来没事了。我也不知道怎么好的。

使用特权

评论回复
25
香水城| | 2009-5-31 12:37 | 只看该作者

楼主有没有考虑每个周期开始采样时,进行过零检测

另外,考虑在检测受到干扰时,在CPU能够正常工作的情况下,请使用第6.3.4节和第6.3.5节介绍的外设复位寄存器,对相应的模块单独复位。

使用特权

评论回复
26
午夜霓虹| | 2009-5-31 13:55 | 只看该作者

感觉应该和干扰没关系才对

如果是干扰引起的问题,我个人认为无论软件你怎么写,都不可能正常工作了,除非单片机自己能知道自己工作不正常了,但是既然已经不正常工作了,怎么判断自己工作不正常了,很难说明这个问题。

 声明一点,我觉得stm32的抗干扰能力还是十分强大的。我做的实验的时候也是很皮实,嘿嘿,反复折腾。

  另外,我觉得dsp中ad的使用还是十分方便的,好像nxp的也是这么做的,就是一个通道对应一个寄存器地址,使用起来很方便,这样如果错位的话,检测起来方便一些。

  dsp我们用了很多年了,stm32是刚刚使用,希望不要出什么乱子,否则我的努力就要回到原点了。
  

使用特权

评论回复
27
kingpower2018|  楼主 | 2009-6-1 08:48 | 只看该作者

CPU的ADC容易受干扰

如果CPU的ADC容易受干扰,从软件没法去干扰,只能是从错误中恢复来弥补,真是恼呀!

使用特权

评论回复
28
香水城| | 2009-6-1 09:32 | 只看该作者

CPU的ADC容易受干扰?楼主有确切的证据吗?

记得上次我们电话里沟通的时候,你们就提出这个怀疑但却不能肯定,经过一个星期的工作,请问你是否有了新的证据?

使用特权

评论回复
29
dvssy| | 2009-6-1 12:36 | 只看该作者

ST的MCU抗扰能力优于其他MCU

如LZ的26楼所述,一般的EMC都是通过的。
但是90KW的电机干扰有多大?那真的很厉害,比15KV的ESD高得多。不知道LZ产品在EMC保护方面做的工作有多少,我认为这的的项目,投入50%的人力物力在EMC方面都是必要的。

另外,顶15楼,LZ不妨从这个角度出发改进一下思路,说不定会有收获。

使用特权

评论回复
30
kingpower2018|  楼主 | 2009-6-2 08:40 | 只看该作者

CPU的ADC容易受干扰

我将第一次的ADC采样数据读出来,发现在干扰下采样的数据就是错误的,有时就是一个定值,ADC死了

使用特权

评论回复
31
香水城| | 2009-6-2 08:46 | 只看该作者

当ADC受干扰时,单独对ADC模块复位是否能够恢复?

请看STM32参考手册的第6.3.4节,有关于单独复位外设模块的寄存器:

使用特权

评论回复
32
wh6ic| | 2009-6-2 09:57 | 只看该作者

LZ问题可能比较复杂

  不一定仅硬件受干扰, 信号也可能发生歧变. 模拟前端也会受到影响. 而且信号扰动比较复杂.
  建议增加异常结果处理流程, 比如在结果与上次转换结果相差悬殊或异常时再启动一次或数次测量计算流程. ADC模块死的处理香版方法就行.
  但LZ言ADC死状比较诡异, 没理由受到干扰ADC死, 其它模块不出问题. 若都会被干扰则LZ需要采取强化措施, 否则仅ADC死就需要分析具体情况了.

使用特权

评论回复
33
香水城| | 2009-6-2 12:03 | 只看该作者

请楼主确认33楼提出的问题,你是如何判断ADC采样数据错误

你是直接看到了ADC采样得到的、未经软件处理的数据,还是仅根据软件处理后的数据作出的判断?如果是后者,就要考虑计算过程中用到的参数受到干扰被破坏的可能性。

据我向我们的FAE了解,在你的程序中,系统上电后进行了软件校准,校准的参数存放在了RAM中;系统运行后,ADC采样得到的数值经过与上述校准值参与的运算后得到结果。计算结果的错误,有可能是ADC采样错误造成,也有可能是因为保存在RAM中的校准参数被干扰破坏,导致计算错误。你应该在怀疑有干扰时,校验一下校准参数是否还是正确的,比如通过重复存储在不同地方和存储数据的反码等方式,我想这些建议我们的FAE已经和你讨论过了。

使用特权

评论回复
34
kingpower2018|  楼主 | 2009-6-2 16:33 | 只看该作者

存放在RAM中的值会无故丢失吗

以楼上的说法是:存放在RAM中的值会无故丢失吗?如果是这样,那就麻烦了,
其实我认为RAM中的值丢失的机率比较小,因为我得到的是ADC采样值,ADC的采样值就不对了,有时是一个定值?还没到较准计算那一步呀?

使用特权

评论回复
35
香水城| | 2009-6-2 18:03 | 只看该作者

在干扰严重的情况下,任何可能性都是存在的

如果能够确认ADC的采样值不对,那么我在34楼的建议有效吗?

使用特权

评论回复
36
kingpower2018|  楼主 | 2009-6-3 15:57 | 只看该作者

在34楼的建议有效?

在34楼的建议有效在实验室的用不15KV的静电放火测试是有效的,可恢复的,但客户现场还是不行呀?

使用特权

评论回复
37
香水城| | 2009-6-3 16:12 | 只看该作者

我认为你的问题应该不单单是ADC的问题

我的同事上周到你们办公室与你们交流了很长时间,我记得他们说你的系统在现场出现问题时,如果不复位(调电)整个系统而只是在面板上重新初始化系统,则系统能够恢复,这意味着硬件并没有处于不能恢复的死锁状态,通过重新初始化(不是复位)是可以恢复的;当然,重新初始化系统不但重新设置了硬件的配置,更重要的是重新初始化了软件的流程或变量,要知道RAM也是硬件的一部分,外设受干扰可能造成工作不正常,RAM也有可能受干扰造成工作不正常。结合39楼的测试结果,这些都说明,问题不一定在ADC部分,至少ADC部分不是唯一受到干扰的部分。

使用特权

评论回复
38
kingpower2018|  楼主 | 2009-6-23 18:48 | 只看该作者

ADC太不稳了

ADC太不稳了

使用特权

评论回复
39
渤海三叠浪| | 2009-6-24 08:32 | 只看该作者

41说的有可能是对的

使用特权

评论回复
40
yangshaowu| | 2009-6-24 14:30 | 只看该作者

应是香水楼36楼说的问题

还有我不知道AD用不用复位,如能的话每周波复一下.只是不是做保护不存在.
我在AVR时与你的问题相似.
还有布板要减小干扰.
我也是做电力.我想问题差不多.

使用特权

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

本版积分规则