75

帖子

0

TA的资源

一粒金砂(初级)

41
 

ADC太不稳了

                                 ADC太不稳了
此帖出自stm32/stm8论坛
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

42
 

41说的有可能是对的

                                  
此帖出自stm32/stm8论坛
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

43
 

应是香水楼36楼说的问题

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

回复

66

帖子

0

TA的资源

一粒金砂(初级)

44
 

ST公司解决不了的问题

                                 ST公司解决不了的问题
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

45
 

LZ自己都没整明白,别人怎么给你明白?
说真的,对LZ公司的研发能力表示怀疑.象这种干扰问题,如果整体设计上不把关,全部都压到CPU身上去,多半哪家的CPU都受不了.

此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

46
 

我对顶楼的软件设计思路的理解。

楼主的描述:
DMA错位问题:
关于采样处理:
1.    小表采ADC1的三个通道CH1/ CH2/ CH3,用DMA1传送到缓冲区ADCRegValue[3] 中;
2.    然后用定进器Tim1定时中断(50*128 Hz)从ADCRegValue[3]读数据到数组ADC_ConvertedTEMP[3*128]中;
3.    当128次采完时启用DMA2将ADC_ConvertedTEMP[3*128]传到ADC_ConvertedValue[3*128]数组中用于计算;
4.    正常情况下,ADCRegValue [3]内的数据应为CH1/ CH2/ CH3
ADC_ConvertedTEMP[3*128] 内的数据应为CH1/ CH2/ CH3 / CH1/ CH2/ CH3…….
ADC_ ConvertedValue [3*128] 内的数据应为CH1/ CH2/ CH3 / CH1/ CH2/ CH3…….

我的个人看法,不是很成熟,望大家批评指正:
    第二步中,定时从ADCRegValue[3]读数据到数组ADC_ConvertedTEMP[3*128]中,楼主能保证CPU读取ADCRegValue[3]时,DMA肯定不从ADC读数据填写到该数组里吗?

    我的建议是省去这一步,使用DMA将数据直接存储到ADC_ConvertedTEMP[3*128]中,当128次转换结束时,生产DMA传输结束中断,在中断中再启用DMA2将ADC_ConvertedTEMP[3*128]传到ADC_ConvertedValue[3*128]数组中用于计算。这样省去中间多余操作可能引起的不可预知的问题。

另外:
    关于STM32受现场90kW电动机干扰的问题,肯定不存在,我支持的客户中将STM32用在电梯控制箱里,紧挨着500Kw的电动机,STM32的ADC、DMA、Timer、SPI、I2C也稳定运行,没有任何问题。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

47
 

此路不通呀

按楼上说的方法我也试过,一样出现问题,只要干扰就有了
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

48
 

问题没说清楚

仪器的数值显示错误,是短时间闪一下马上恢复正常还是一直是错的,如果一直是错的,还能变化吗?你用了什么算法?不同的算法在相同的数据下输出是不同的,这些不讲明白,没人能帮你。
如果使用积分算法做滤波,ADC不能运转了,TIMER启动的DMA就读到固定值,滤波后就是一个直流分量,交流量为0。只要还有显示,还能变化,ADC就是运转的,ADC就是一个比较的过程,受干扰后结果变化几倍是不可能的。
看你的描述,ADC是在连续转换模式,此方式不推荐使用。首先是功耗上升,结果是晶片局部发热,半导体器件对温度是很敏感的。如果只是实验还可以。
软件问题:你的ADC速度设置多少?如果是1M,每1微秒就是一次DMA!那要占多少总线时间?你的算法必然操作RAM,那么DMA期间CPU在空转,每20毫秒还有一次大的DMA,这些要考虑在内。在没有以上DMA打扰的情况下,你测试过整个计算程序的时间消耗吗?128点的算法在20毫秒内能计算完吗?如果算不完下一个DMA2是否把你当前点后的数据修改了?如果算不完,计算过程中禁止过DMA2吗?整个运算中的数据定义有无问题?计算中有数据溢出吗?有除0错吗?
如果以上问题都不存在,那么请把一段用于计算的128点数据发送出来,才可以判断是否一定是ADC的问题。方法很简单,智能测控肯定有通讯,写个调试程序,事先定义一个按键,在出现错显示的情况下按一下,CPU接到此键后停止DMA1和2,把所有缓冲区的数据包括ADC的缓冲通过通讯线发送出来,用电脑收一下,存起来就可以了。如果发现确实是ADC的数据不正常,没有按波形变化,就可以向ST兴师问罪了,如果是程序问题,还是静下心来,好好研究吧。
可以说一下我的测试结果:2层板,严格按照EMC有关要求布板,中心电平提高到1/2VREF,在ADC后减2048恢复波形数据,在交流无输入时,IAR下随机打断运行,可以看到大部分数据刷新变红,但数值漂动在-1~1之间,几百次试验仅出现过两次漂到2,对ADC精度无任何意见。
使用过各种恶劣手段对付此CPU,包括阳光暴晒,摸腿,拔8M晶体,多次出现IWDG复位,但未出现ADC数据失常问题。
我遇到的WWDG问题已经解决,正如版主所说,是没看到调试画面就RST了。在使能WWDG后很短时间内,把它的时钟关闭,就可以停到正确的断点上了。喂狗不成的主要原因是窗口太小,离0X40太近了,没喂到狗就先RST了。目前已经用在了设备的调试程序中,运转正常。
关于最近的调试收获,可以告诉大家两点:一是IIC操作24C16时,一定要给SDA和SCL充足的高电平时间,否则操作不能成功。二是IWDG和WWDG也是如此,其中WWDG要短一点,但是也要在上电后四万次空循环操作后才能稳定。
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

49
 

(*^__^*) 嘻嘻……

DMA错位问题:
关于采样处理:
1.    小表采ADC1的三个通道CH1/ CH2/ CH3,用DMA1传送到缓冲区ADCRegValue [3] 中;
2.    然后用定进器Tim1定时中断(50*128 Hz)从ADCRegValue [3]读数据到数组ADC_ConvertedTEMP[3*128]中;
3.    当128次采完时启用DMA2将ADC_ConvertedTEMP[3*128]传到ADC_ConvertedValue[3*128]数组中用于计算;
4.    正常情况下,ADCRegValue [3]内的数据应为CH1/ CH2/ CH3
ADC_ConvertedTEMP[3*128] 内的数据应为CH1/ CH2/ CH3 / CH1/ CH2/ CH3…….
ADC_ ConvertedValue [3*128] 内的数据应为CH1/ CH2/ CH3 / CH1/ CH2/ CH3…….
================================
把后三部分的程序都删除
只留下第一部分

看看还能不能正确收到???
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

50
 

我也遇到过,不过现在解决了.

我也是,只要停止a/d后再启动a/d,就有可能错位。即使停止a/d后,重新初始dma也没用。主要是要关断a/d的dma位,并且同时关断cont,在一条语句完成。我是用的ADC1->CR2&=0xfffffefd;才行。开启用ADC->CR2|=0X102;才能不错位。为这个事我用了一周的时间。不知道对楼主有没有帮助。

此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

51
 

谢谢50楼

其实我们在没有强干扰条件下,一切正常,只是在强干扰下才出现数据错位.
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

52
 

其实ADC的稳定性值得考虑?

                                 我们用像49楼的方法,用一路ADC在强干扰也出现数据错误,跟本不是我要的数据
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

53
 

请求支招

                                 请求支招,请高手支招解决此问题.
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

54
 

哈哈。

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

55
 

这个就不用高手了,学过模拟电路的农民都知道...

不是CPU的A/D问题(因为不干扰的时候是正常的),想办法解决电路板被干扰的问题才是正道

就软件处理来讲,你那算法也不好,如果不是CPU快,早死了...
我曾用AVR单片机在7.3728MHZ的工作频率下做4路电机的PWM调速,每路采样计算点为64个...
我当时的算法基本思想是(这公式高中就学过):Sn=Sn-1 + An,所以,每采到一个样点,都能计算出一个新的64阶平均值的新点;不需要等到采样够64点才开始处理,那是最不好的做法...
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

56
 

ST呀

                                 ST呀,没反应?
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

57
 

这个问题太难了吧 估计ST的人不会

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

58
 

不是ST没反应

                                 从深圳同事反馈回来的信息是:我们的同事到现场,对你的电路板的设计提出了一些改进性建议,可楼主依然我行我素,如此行事,我们该如何应对呢?
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

59
 

已经按你们的建议改了呀

                                 已经按你们的建议改了呀,没多大效果,也没提出一些有效的建议,我们都改板了,我们想你们能从自身CPU的ADC抗干扰上提一些有效的解决建议
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

60
 

有意思。

                                  
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表