查看: 2986|回复: 7

[已解决] KL46Z使用ADC,转换结果总是输出0

[复制链接]

该用户从未签到

2

主题

8

帖子

0

新手上路

Rank: 1

积分
31
最后登录
2016-9-26
发表于 2016-9-25 13:22:45 | 显示全部楼层 |阅读模式
经过好几天的调试,根据datasheet设置了所有寄存器,还是不能得到正常的结果,不知道是怎么回事?还请大神指点,焦头烂额中。。。

ADC设置为软件触发方式,外接一个三轴加速度传感器,实现一个小DEMO,读出加速度传感器输出值,然后用显示到板子上的LCD。
我使用了PTE20 (ADC0_SE0),PTE16 (ADC0_SE1),PTE18 (ADC0_SE2),分别对应X Y Z轴
/*ADC 程序*/
void adc_init(void)
{
   SIM_SCGC5 |= SIM_SCGC5_PORTE_MASK;
   PORTE->PCR[20] = PORT_PCR_MUX(0);
   SIM_SCGC6 |= SIM_SCGC6_ADC0_MASK;

// Initialize ADC0

  Master_Adc_Config.CONFIG1  = ADLPC_NORMAL | ADC_CFG1_ADIV(ADIV_1) | ADLSMP_LONG | ADC_CFG1_MODE(MODE_10)
                              | ADC_CFG1_ADICLK(ADICLK_BUS);
  Master_Adc_Config.CONFIG2  = MUXSEL_ADCA | ADACKEN_DISABLED | ADHSC_NORMAL | ADC_CFG2_ADLSTS(ADLSTS_20) ;
  //Master_Adc_Config.COMPARE1 = 0x1234u ;
  //Master_Adc_Config.COMPARE2 = 0x5678u ;
  Master_Adc_Config.STATUS2  = ADTRG_SW | ACFE_DISABLED | ACFGT_LESS | ACREN_DISABLED | DMAEN_DISABLED | ADC_SC2_REFSEL(REFSEL_EXT);
  Master_Adc_Config.STATUS3  = CAL_OFF | ADCO_SINGLE | AVGE_DISABLED | ADC_SC3_AVGS(AVGS_4);
// Master_Adc_Config.PGA      = PGAEN_DISABLED | PGACHP_NOCHOP | PGALP_NORMAL | ADC_PGA_PGAG(PGAG_64);
  Master_Adc_Config.STATUS1A = AIEN_OFF | DIFF_SINGLE | ADC_SC1_ADCH(31);

  ADC_Config_Alt(ADC0_BASE_PTR, &Master_Adc_Config);  // config ADC
}

uint16_t adc_read(uint8_t channel)
{
   ADC0_SC1A = AIEN_OFF | DIFF_SINGLE | ADC_SC1_ADCH(channel) ;     // start conversion
   while((ADC0_SC1A & ADC_SC1_COCO_MASK)!= 0){};
   return ADC0_RA;
}


/*main*/
int main(void)
{
        //unsigned char uartStr[10];
        unsigned int  strNumX, strNumY, strNumZ = 0;

        unsigned char uLCDMsg[5] = "";
        /*初始化为1,以区别ADC实际输出*/
        uint16_t X_value = 1;
        uint16_t Y_value = 1;
        uint16_t Z_value = 1;

        //__disable_irq();

        //uart_init (UART1, SYSCLK, BAUDRATE);
        SLCD_Init();
        adc_init();

        //__enable_irq();

        X_value = adc_read(0);
        Y_value = adc_read(1);
        Z_value = adc_read(2);

        snprintf(uLCDMsg, 5, "%4d", X_value);
        SLCD_WriteMsg(uLCDMsg);
}


运行后LCD就一直显示输出0,实在不知道是什么原因,很简单的demo,也完全是按照datasheet的理解设置的,还望高手指正!!

最佳答案

直接用SDK里面的例程跑一下,不会有问题的,首先你得保证你得代码没有问题
回复

使用道具 举报

该用户从未签到

2

主题

8

帖子

0

新手上路

Rank: 1

积分
31
最后登录
2016-9-26
 楼主| 发表于 2016-9-25 13:23:45 | 显示全部楼层
比较了一些模板代码,没发现明显区别,估计是我水平有限没注意到?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-9-25 15:27:09 | 显示全部楼层
    nonlinearboy 发表于 2016-9-25 13:23
    比较了一些模板代码,没发现明显区别,估计是我水平有限没注意到?

    不知道你用的那个模板和SDK,建议先测1路ADC,不要测传感器,只测此IO口;如果没有问题,逐步增加IO口,直到3路ADC都OK,而后再 ...这样就好解决了。试试
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-20 16:19
  • 签到天数: 46 天

    连续签到: 1 天

    [LV.5]常住居民I

    3

    主题

    270

    帖子

    0

    高级会员

    Rank: 4

    积分
    591
    最后登录
    2023-1-9
    发表于 2016-9-25 17:41:22 | 显示全部楼层
    仔细学习数据手册
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    8

    帖子

    0

    新手上路

    Rank: 1

    积分
    31
    最后登录
    2016-9-26
     楼主| 发表于 2016-9-26 01:56:57 | 显示全部楼层
    zhjb1 发表于 2016-9-25 15:27
    不知道你用的那个模板和SDK,建议先测1路ADC,不要测传感器,只测此IO口;如果没有问题,逐步增加IO口, ...

    我用的NXP官网下载的SDK2.0做模板。用的是KENETIS开发环境。
    我就是先测的一路ADC啊,第一路都通不过怎么继续增加呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2023-5-11 17:59
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]常住居民I

    16

    主题

    396

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1381
    最后登录
    2023-9-15
    发表于 2016-9-26 08:49:54 | 显示全部楼层
    仔细学习数据手册 呵呵
    今天好忙啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2016-9-26 10:39:16 | 显示全部楼层
    直接用SDK里面的例程跑一下,不会有问题的,首先你得保证你得代码没有问题
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-9-26 10:52:35 | 显示全部楼层
    nonlinearboy 发表于 2016-9-26 01:56
    我用的NXP官网下载的SDK2.0做模板。用的是KENETIS开发环境。
    我就是先测的一路ADC啊,第一路都通不过怎么 ...

    看来我是偷懒了,我是将KL26或KL27的的工程文件直接拿来用的,一点没有问题。可以先试试。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-18 10:04 , Processed in 0.104965 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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