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

查看: 12874|回复: 12

STM8 多通道ADC采集故障,望指点

[复制链接]

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2020-6-9
发表于 2013-9-24 18:44:55 | 显示全部楼层 |阅读模式
 
 
小弟目前在做项目的时候遇到一个很费解的ADC故障...
在ADC采集的时候,我用的是单次采集的用法.
在2个ADC通道采集过程中,如果仅仅只采集一个通道,不采集另外一个通道,发现数据都能正常读取.
但是把2个通道同时放入主函数轮流采集的时候.发现读数就发现巨大变化,正常情况下,我采集的到AD电压数据换算后是0.8V,但是现在读数换算后居然是21V!!!!!!!!!    但是只要不开启任一一路ADC通道,则另外那一路ADC通道的读数又恢复正常..
有大大能帮我答疑解惑吗?不胜感激...
<
回复

使用道具 举报

5

主题

303

回帖

0

蝴蝶豆

金牌会员

最后登录
1970-1-1
发表于 2013-9-25 11:23:50 | 显示全部楼层

RE:STM8 多通道ADC采集故障,望指点

是不是有什么共用的资源(比如寄存器)你没处理好
回复 支持 反对

使用道具 举报

3

主题

161

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-9-25 13:23:24 | 显示全部楼层

RE:STM8 多通道ADC采集故障,望指点

检查adc的配置吧,这样也不好说,贴代码出来看看就知道
回复 支持 反对

使用道具 举报

22

主题

456

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-7-20
发表于 2013-9-25 15:16:15 | 显示全部楼层

RE:STM8 多通道ADC采集故障,望指点

你的2个通道是用DMA方式采集的吗?建议贴代码看看,看你的描述,好像两个数据的内容都挤到一个数据存储区里面了。这样造成结果非常大了。举个例子:A 16位存储 B 16位存储 你定义一个16位的 BUFFER[2];就没啥问题,但是如果不小心定义成 32位 BUFFER[2];那A B的结果就会全部挤到 BUFFER[0]里面。
  还是上代码看的明白,这个只是猜呢
回复 支持 反对

使用道具 举报

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2020-6-9
 楼主| 发表于 2013-9-26 10:10:37 | 显示全部楼层

回复:STM8 多通道ADC采集故障,望指点

代码如下:

u8 ADC1_change(u8 change)                                                //AD信号采集函数
{
                 u8 ADData;
                 u16        AD_result,AD_sum,AD_data0,AD_data1;
                 u8 i;
                       
                        for(i=0;iCSR = change&amp;0x0F;      // 选择AD转换通道
                                ADC1-&gt;CR1 |= 0x01;                   // 启动AD转换
                                while(!(ADC1-&gt;CSR &amp; 0x80));    // 等待AD转换完成
                                ADC1-&gt;CSR = 0x7F;
                        }
                       
                        for(i=0;iCSR = change&amp;0x0F;      // 选择AD转换通道
                         ADC1-&gt;CR1 |= 0x01;                   // 启动AD转换
       
                        while(!(ADC1-&gt;CSR &amp; 0x80));    // 等待AD转换完成
                       
                        AD_data1 = ADC1-&gt;DRH;
                        AD_data0 = ADC1-&gt;DRL;
                        ADC1-&gt;CSR &amp;= ~0x80;
                       
                        AD_result = (AD_data1*256)+AD_data0;
                       
                        AD_sum+=(AD_result*50/1024);
                        }
                        AD_sum/=10;
                        ADData=AD_sum;
                       
                       
                       
                        return(ADData);
}

void ADC1_init(void)
{
                 ADC1-&gt;CR1 = 0x40;           // 设置AD转换时钟1/8,单次   转换模式
     ADC1-&gt;CR2 = 0x08;           // 设置数据为右对齐
     ADC1-&gt;CR3 = 0x00;           // 不使用数据缓冲
     //ADC1-&gt;TDRL = 0xff;            //关闭施密特触发器
                 ADC1-&gt;CR1 |= 0x01;          // 打开AD模块电源
}

while(1)
{
accel=ADC1_change(0x04);
                                                                                                Bat=ADC1_change(0x01);
                                                        mode=ADC1_change(0x00);
}
回复 支持 反对

使用道具 举报

1

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
2019-1-16
发表于 2013-9-26 19:59:46 | 显示全部楼层

RE:STM8 多通道ADC采集故障,望指点

你的AD_sum定义为16位不对,至少32位
回复 支持 反对

使用道具 举报

0

主题

5

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-9-27 22:56:34 | 显示全部楼层

RE:STM8 多通道ADC采集故障,望指点

楼主这是正常的,我也遇到这样的问题,开始以为硬件问题搞了好久,最后发现单次转换一样的,不用DMA准确多了
回复 支持 反对

使用道具 举报

4

主题

27

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-1-3 14:15:34 | 显示全部楼层

RE:STM8 多通道ADC采集故障,望指点

两个通道互相影响,这个我也遇到过。
我采用的是STM32F103C8芯片。
你可以做这样一个试验:第一步:两个通道是不加任何内容的,即一般说的是零值采样;第二步:一个通道是满量程,另一个通道是零值;第三步,量这两步的零值电压有什么变化。
我是第一次接触,我觉得是由于两个通道之间切换过快引起的。楼主可以再切换完成后延时在采集。在配置的时候我将采样周期由ADC_SampleTime_41Cycles5改为ADC_SampleTime_239Cycles5。采样点就比较稳定了
回复 支持 反对

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-3-24 18:39:42 | 显示全部楼层

RE:STM8 多通道ADC采集故障,望指点

楼主原因找到了没?我现在的也是是这个问题?
回复 支持 反对

使用道具 举报

0

主题

16

回帖

0

蝴蝶豆

初级会员

最后登录
2018-3-9
发表于 2017-4-10 14:48:33 | 显示全部楼层
这是多通道切换时,相互影响造成的,我也不知道怎么解决。
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版