查看: 9007|回复: 6

[求助] 请教Kinetis K60 两路ADC同时采集问题

[复制链接]

该用户从未签到

1

主题

21

帖子

0

注册会员

Rank: 2

积分
84
最后登录
2022-1-24
发表于 2013-4-19 17:07:56 | 显示全部楼层 |阅读模式
Kinetis K60 两路同时软件触发ADC时,不知是采集的电压值很不稳,两个ADC有相互干扰

使用单个ADC依次软件触发采集时正常,信号采集稳定
代码如下
ADC1->SC1[0] = ADC_SC1_ADCH(AIN1); //启动ADC1
while((ADC1->SC1[0]&ADC_SC1_COCO_MASK) == 0x00);//等待ADC1采集完成
ADC1_Buffer = (uint16_t)(ADC1->R[0]);//取出AIN1
buffer_in[3] = (uint8_t)(ADC1_Buffer>>8);//
buffer_in[4] = (uint8_t)(ADC1_Buffer);

ADC0->SC1[0] = ADC_SC1_ADCH(AIN2);  //启动ADC0
while((ADC0->SC1[0]&ADC_SC1_COCO_MASK) == 0x00);//等待ADC0采集完成
ADC0_Buffer = (uint16_t)(ADC0->R[0]);//取出AIN2
buffer_in[5] = (uint8_t)(ADC0_Buffer>>8);//
buffer_in[6] = (uint8_t)(ADC0_Buffer);
上面代码采集电压正常
改为同时软件触发采 电压值很不稳,电压值比依次软件触发低  两个ADC可能有相互干扰
ADC1->SC1[0] = ADC_SC1_ADCH(AIN1); //启动ADC1
ADC0->SC1[0] = ADC_SC1_ADCH(AIN2);  //启动ADC0

while((ADC1->SC1[0]&ADC_SC1_COCO_MASK) == 0x00);//等待ADC1采集完成
ADC1_Buffer = (uint16_t)(ADC1->R[0]);
buffer_in[3] = (uint8_t)(ADC1_Buffer>>8);//
buffer_in[4] = (uint8_t)(ADC1_Buffer);
while((ADC0->SC1[0]&ADC_SC1_COCO_MASK) == 0x00);//等待ADC0采集完成
ADC0_Buffer = (uint16_t)(ADC0->R[0]);
buffer_in[5] = (uint8_t)(ADC0_Buffer>>8);//
buffer_in[6] = (uint8_t)(ADC0_Buffer);

ADC初始化代码是官方的 单端软件触发
我也试着改初始化代码,调试了一个三天 问题还是没有解决

求教
我知道答案 目前已有5人回答
回复

使用道具 举报

该用户从未签到

1

主题

21

帖子

0

注册会员

Rank: 2

积分
84
最后登录
2022-1-24
 楼主| 发表于 2013-4-19 17:15:35 | 显示全部楼层

回复:请教Kinetis K60 两路ADC同时采集问题

请各位用过的指点指点
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-4-20 09:04:55 | 显示全部楼层

    RE:请教Kinetis K60 两路ADC同时采集问题

    先试着只采集一个AD的值,然后看看这个AD的值是不是偏差比较大。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    21

    帖子

    0

    注册会员

    Rank: 2

    积分
    84
    最后登录
    2022-1-24
     楼主| 发表于 2013-4-20 10:33:42 | 显示全部楼层

    RE:请教Kinetis K60 两路ADC同时采集问题

    谢谢安的回复
    只采一路ADC0或一路ADC1
    或先后采集都正常16位相差10-20个点
    就是同时软件触发后,采集16位相差300以一个点
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-22 10:33
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    5

    主题

    422

    帖子

    1

    高级会员

    Rank: 4

    积分
    983
    最后登录
    2024-10-22
    发表于 2013-6-9 22:47:06 | 显示全部楼层

    回复:请教Kinetis K60 两路ADC同时采集问题

    采的什么信号?你怎么知到哪路AD先完成。用dma试一下。
     
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37

    主题

    327

    帖子

    1

    高级会员

    Rank: 4

    积分
    886
    最后登录
    2023-7-19
    发表于 2013-6-13 10:08:55 | 显示全部楼层

    RE:请教Kinetis K60 两路ADC同时采集问题

    我觉得16位精度 很坑。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    1970-1-1
    发表于 2013-6-18 14:58:26 | 显示全部楼层

    RE:请教Kinetis K60 两路ADC同时采集问题

    1. Kinetis K60 内部含有4路独立的ADC转换模块,每个模块可以配置不同的通道和单端/差分输入模式。独立的ADC如果正确使用,转换结果应该是互不干扰的。
    2. ADC可以使用硬件触发和软件触发两种方式。硬件触发源见参考手册,如使用软件触发,当向SC1A寄存器中写入配置后发起一次转换(如果ADCO连续转换设置,SC1A只需要写一次;如果连续转换没有允许,需要每次写如SC1A软件触发ADC)。
    3. ADC转换过程本身需要时间,同一个ADC联系两此采样时间间隔最快可达2.5us左右。在while(1){…………}中,建议先加入delay延时函数,来调用软件触发ADC0和ADC1,然后不断减少delay时间。
    4. 可以debug调试看看ADC各寄存器值,如COCO 位,ADACT位等,有利于楼主问题的判断。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 19:43 , Processed in 0.097020 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表