智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1031|回复: 4
打印 上一主题 下一主题

ad转换一直为0 怎么回事

[复制链接]

14

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2775
威望
1231
贡献
784
兑换币
794
注册时间
2014-4-3
在线时间
380 小时
跳转到指定楼层
1#
发表于 2015-4-21 11:49:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
k60 ad转换一直位0    ad=Get_AD_Channel(); 这样调用行吗?初始化话出了问题?分频有什么要求没?
回复

使用道具 举报

49

主题

848

帖子

1

精华

知名人物

说和做是两码事

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
32825

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章资源大师奖章

威望
29437
贡献
1934
兑换币
1870
注册时间
2013-12-10
在线时间
727 小时
2#
发表于 2015-4-21 19:50:58 | 只看该作者
Get_AD_Channel(); 内容是啥
回复 支持 反对

使用道具 举报

4

主题

275

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3251

优秀会员奖章活跃会员奖章

威望
1608
贡献
1033
兑换币
1055
注册时间
2014-2-12
在线时间
305 小时
3#
发表于 2015-4-22 09:19:49 | 只看该作者
谁知道你怎么回事啊,都没有程序
回复 支持 反对

使用道具 举报

14

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2775
威望
1231
贡献
784
兑换币
794
注册时间
2014-4-3
在线时间
380 小时
4#
 楼主| 发表于 2015-4-22 12:15:01 | 只看该作者
uint16 Get_AD_Channel()
{
  uint16 result=0;
PORT_PCR_REG(PORTE_BASE_PTR,1) =  PORT_PCR_MUX(0);
    result = ADC_Once(1,5,8,0);//     0--a  1---b

  return result;
回复 支持 反对

使用道具 举报

14

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2775
威望
1231
贡献
784
兑换币
794
注册时间
2014-4-3
在线时间
380 小时
5#
 楼主| 发表于 2015-4-22 12:16:17 | 只看该作者
uint16 ADC_Once(int MoudelNumber,int Channel,uint8 accuracy,uint8 ab)//采集某路模拟量的AD值
{
                uint16 result = 0;
                uint8 ADCCfg1Mode = 0;
                ADC_MemMapPtr ADCMoudel;//保存ADC模块地址指针
                               
                switch(accuracy)
                {
                         case 8:
                           ADCCfg1Mode = 0x00;
                           break;
                         case 12:
                           ADCCfg1Mode = 0x01;
                           break;
                         case 10:
                           ADCCfg1Mode = 0x02;
                           break;
                         case 16:
                           ADCCfg1Mode = 0x03;
                           break;
                         default:
                           ADCCfg1Mode = 0x00;
                }
               
               
                if(MoudelNumber==0)//选择ADC模块0
                {
                   ADCMoudel = ADC0_BASE_PTR;
                }
                else               //选择ADC模块1
                {
                   ADCMoudel = ADC1_BASE_PTR;
                }
               
                //配置正常电源模式,总线时钟,总线时钟4分频,长采样时间使能,设置精度
                ADC_CFG1_REG(ADCMoudel) = ADLPC_NORMAL
                                                                 | ADC_CFG1_ADIV(ADIV_4)
                                                                 | ADLSMP_LONG
                                                                 | ADC_CFG1_MODE(ADCCfg1Mode)
                                                                 | ADC_CFG1_ADICLK(ADICLK_BUS);
                  
                //配置禁止异步时钟使能输出,ADxxat通道选择,高速配置,长采样时间   
                if(ab==0)
                {
                    ADC_CFG2_REG(ADCMoudel)  =    MUXSEL_ADCA
                                                     | ADACKEN_DISABLED
                                                     | ADHSC_HISPEED
                                                     | ADC_CFG2_ADLSTS(ADLSTS_20) ;
                }
                else
                {
                    ADC_CFG2_REG(ADCMoudel)  =    MUXSEL_ADCB
                                                     | ADACKEN_DISABLED
                                                     | ADHSC_HISPEED
                                                     | ADC_CFG2_ADLSTS(ADLSTS_2) ;
                }

                                                               
                       
                ADC_SC1_REG(ADCMoudel,A) = AIEN_OFF |DIFF_SINGLE | ADC_SC1_ADCH(Channel);
            
             // hw_adc_config_alt(ADC1_BASE_PTR, &Master_Adc_Config);  // 配置ADC1
        
                                
            //等待转换完成
            while (( ADC_SC1_REG(ADCMoudel,A) & ADC_SC1_COCO_MASK ) != ADC_SC1_COCO_MASK)
                {

                }
            //读取转化结果
                result = ADC_R_REG(ADCMoudel,A);      
                //清ADC转换完成标志
                ADC_SC1_REG(ADCMoudel,A) &= ~ADC_SC1_COCO_MASK;

    return result;
}
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-16 04:49 , Processed in 0.045930 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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