查看: 4279|回复: 8

[已解决] MKE02在按照数据手册例程编写AD模块的FIF功能,发现读取AD数据全是第一个通道,其他通道没有值(已解决)

[复制链接]

该用户从未签到

5

主题

32

帖子

0

注册会员

Rank: 2

积分
99
最后登录
1970-1-1
发表于 2014-6-10 22:28:41 | 显示全部楼层 |阅读模式
 MKE02在按照数据手册例程编写AD模块的FIF功能,发现读取AD数据全是第一个通道,其他通道没有值?求大神 多多指点
我知道答案 目前已有7人回答
回复

使用道具 举报

该用户从未签到

5

主题

32

帖子

0

注册会员

Rank: 2

积分
99
最后登录
1970-1-1
 楼主| 发表于 2014-6-10 22:30:14 | 显示全部楼层

AD的FIFO功能,

是AD的FIFO功能,望大神指点,膜拜
回复 支持 反对

使用道具 举报

该用户从未签到

16

主题

705

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1745
最后登录
1970-1-1
发表于 2014-6-11 16:24:00 | 显示全部楼层

回复:MKE02在按照数据手册例

 楼主,看你的结果应该是配置不对呢,
你有没有配置AD CHANNEL FIFO呢?
KE02官方不是有例程吗,而且还有FIFO的例程,在我们坛子里也有一个该例程的中文讲解,你可以看看这里的配置:
https://www.nxpic.org.cn/bbs/article_1280_565650.html
也没有几步,而且还有结果,你对照着看看你的配置对不对。
肯定是程序问题。
 
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-6-12 09:17:40 | 显示全部楼层

RE:MKE02在按照数据手册例程编写AD模块的FIF功能,发现读取AD数据全是第一个通道,其他通道没有值

楼主,你程序是怎么配置的呢?
请按照楼上链接中的代码配置,如果还有问题,欢迎继续交流。
回复 支持 反对

使用道具 举报

  • TA的每日心情

    2018-10-30 22:37
  • 签到天数: 28 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    9

    主题

    435

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1107
    最后登录
    2020-8-28
    发表于 2014-6-12 10:25:40 | 显示全部楼层

    RE:MKE02在按照数据手册例程编写AD模块的FIF功能,发现。。。

    我在KE02xxx4上用库做的,4通道目测毫无鸭梨
    ZJJ MM顺便帮我看下逻辑有没有问题呗~
    void adc_init(void)
    {
        ADC_ConfigType sADC_Config = {0};
        ad_trigger = FALSE;
        ad_conver_count = 0;
        ad_not_complete = TRUE;
        /* initiaze ADC module */
        sADC_Config.u8ClockDiv = ADC_ADIV_DIVIDE_4;
        sADC_Config.u8ClockSource = CLOCK_SOURCE_BUS_CLOCK;
        sADC_Config.u8Mode = ADC_MODE_12BIT;
        sADC_Config.sSetting.bIntEn = 1;
        sADC_Config.u8FiFoLevel = ADC_FIFO_LEVEL4;
        ADC_SetCallBack(adc_callback);
        ADC_Init(ADC, &sADC_Config);
        ad_run();
    }
    void ad_run(void)
    {
        ADC_SetChannel(ADC, ADC_CH_xxxx1);
        ADC_SetChannel(ADC, ADC_CH_xxxx2);
        ADC_SetChannel(ADC, ADC_CH_xxxx3);
        ADC_SetChannel(ADC, ADC_CH_xxxx4);
    }
    void adc_callback(void)
    {
        while (!ADC_IsFIFOEmptyFlag(ADC)) {
            if (ad_conver_count < AD_COUNTS) {
                ad_data_xxxx1[ad_conver_count] = ADC_ReadResultReg(ADC);
                ad_data_xxxx2[ad_conver_count] = ADC_ReadResultReg(ADC);
                ad_data_xxxx3[ad_conver_count] = ADC_ReadResultReg(ADC);
                ad_data_xxxx4[ad_conver_count] = ADC_ReadResultReg(ADC);
                ad_conver_count++;
                ad_run(); // continue
            } else {
                ADC_ReadResultReg(ADC);
            }
        }
    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2014-6-12 10:29:59 | 显示全部楼层

    回复:MKE02在按照数据手册例程编写AD模块的FIF功能,发现读取AD数据全是第一个通道,其他通道没有值

    回复第 5 楼 于2014-06-12 10:25:40发表:
    我在KE02xxx4上用库做的,4通道目测毫无鸭梨
    ZJJ MM顺便帮我看下逻辑有没有问题呗~
    void adc_init(void)
    {
    ADC_ConfigType sADC_Config = {0};
    ad_trigger = FALSE;
    ad_conver_count = 0;
    ad_not_complete = TRUE;
    /* initiaze ADC module */
    sADC_Config.u8ClockDiv = ADC_ADIV_DIVIDE_4;
    sADC_Config.u8ClockSource = CLOCK_SOURCE_BUS_CLOCK;
    sADC_Config.u8Mode = ADC_MODE_12BIT;
    sADC_Config.sSetting.bIntEn = 1;
    sADC_Config.u8FiFoLevel = ADC_FIFO_LEVEL4;
    ADC_SetCallBack(adc_callback);
    ADC_Init(ADC, &sADC_Config);
    ad_run();
    }
    void ad_run(void)
    {
    ADC_SetChannel(ADC, ADC_CH_xxxx1);
    ADC_SetChannel(ADC, ADC_CH_xxxx2);
    ADC_SetChannel(ADC, ADC_CH_xxxx3);
    ADC_SetChannel(ADC, ADC_CH_xxxx4);
    }
    void adc_callback(void)
    {
    while (!ADC_IsFIFOEmptyFlag(ADC)) {
    if (ad_conver_count < AD_COUNTS) {
    ad_data_xxxx1[ad_conver_count] = ADC_ReadResultReg(ADC);
    ad_data_xxxx2[ad_conver_count] = ADC_ReadResultReg(ADC);
    ad_data_xxxx3[ad_conver_count] = ADC_ReadResultReg(ADC);
    ad_data_xxxx4[ad_conver_count] = ADC_ReadResultReg(ADC);
    ad_conver_count++;
    ad_run(); // continue
    } else {
    ADC_ReadResultReg(ADC);
    }
    }
    }
     

    你测试结果有什么问题吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-10-30 22:37
  • 签到天数: 28 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    9

    主题

    435

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1107
    最后登录
    2020-8-28
    发表于 2014-6-12 10:40:15 | 显示全部楼层

    回复:MKE02在按照数据手册例程编写AD模块的FIF功能,发现。。。。。。

    回复第 6 楼 于2014-06-12 10:29:59发表:
    回复第 5 楼 于2014-06-12 10:25:40发表:
    我在KE02xxx4上用库做的,4通道目测毫无鸭梨
    ZJJ MM顺便帮我看下逻辑有没有问题呗~
    void adc_init(void)
    {
    ADC_ConfigType sADC_Config = {0};
    ad_trigger = FALSE;
    ad_conver_count = 0;
    ad_not_complete = TRUE;
    /* initiaze ADC module */
    sADC_Config.u8ClockDiv = ADC_ADIV_DIVIDE_4;
    sADC_Config.u8ClockSource = CLOCK_SOURCE_BUS_CLOCK;
    sADC_Config.u8Mode = ADC_MODE_12BIT;
    sADC_Config.sSetting.bIntEn = 1;
    sADC_Config.u8FiFoLevel = ADC_FIFO_LEVEL4;
    ADC_SetCallBack(adc_callback);
    ADC_Init(ADC, &sADC_Config);
    ad_run();
    }
    void ad_run(void)
    {
    ADC_SetChannel(ADC, ADC_CH_xxxx1);
    ADC_SetChannel(ADC, ADC_CH_xxxx2);
    ADC_SetChannel(ADC, ADC_CH_xxxx3);
    ADC_SetChannel(ADC, ADC_CH_xxxx4);
    }
    void adc_callback(void)
    {
    while (!ADC_IsFIFOEmptyFlag(ADC)) {
    if (ad_conver_count < AD_COUNTS) {
    ad_data_xxxx1[ad_conver_count] = ADC_ReadResultReg(ADC);
    ad_data_xxxx2[ad_conver_count] = ADC_ReadResultReg(ADC);
    ad_data_xxxx3[ad_conver_count] = ADC_ReadResultReg(ADC);
    ad_data_xxxx4[ad_conver_count] = ADC_ReadResultReg(ADC);
    ad_conver_count++;
    ad_run(); // continue
    } else {
    ADC_ReadResultReg(ADC);
    }
    }
    }
     

    你测试结果有什么问题吗?
     

    目测正常啊,就是不知道这么写合不合理。我是想用4个通道,都采了AD_COUNTS次后才拿去用。
    补上一个关键函数。
    void ad_handler(void) // 这个在main()的while(1)里循环调
    {
        if (ad_trigger) {
            ad_trigger = FALSE; // 1ms定时中断里会把这个改成TRUE
            ad_conver_count = 0;
            ad_not_complete = TRUE; // Continuous Conversion
            /* set channel to start a new conversion */
            ad_run();
        }
        if (ad_conver_count > (AD_COUNTS - 1)) {
            ad_conver_count = 0;
            ad_not_complete = FALSE;
            ad_get_xxxx1(); // 拿去用啦
            ad_get_xxxx2();
            ad_get_xxxx3();
            ad_get_xxxx4();
        }
    }
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    32

    帖子

    0

    注册会员

    Rank: 2

    积分
    99
    最后登录
    1970-1-1
     楼主| 发表于 2014-6-20 16:38:41 | 显示全部楼层

    MKE02Z64VLC2按照文档添加CM0+_MMCLIB库,出现报错

    MKE02Z64VLC2按照文档添加CM0+_MMCLIB库,出现报错。编译环境code warrior 10.6 ,芯片MKE02Z64VLC2,添加电机函数库CM0+_MMCLIB,按照要求文档添加,报错c:/freescale/cw mcu v10.6/cross_tools/arm-none-eabi-gcc-4_7_3/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../../arm-none-eabi/bin/ld.exe: cannot find -lC:FreescaleworkspaceMKE02Z64VLC2CM0+_MMCLIB_r1.0CM0+_MMCLIB_CW.a,反复尝试不知道为什么总是找不到0CM0+_MMCLIB_CW.a库文件,我已经添加到该工程目录了?求大神指点,小弟对code warrior 10.6编译环境及其配置还不是横清楚,谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2014-6-23 10:49:14 | 显示全部楼层

    RE:MKE02在按照数据手册例程编写AD模块的FIF功能,发现读取AD数据全是第一个通道,其他通道没有值

    楼主,你0CM0+_MMCLIB_CW.a库放在什么地方的呢?
    路径下面有这个文件吗?
    你要把库的路径加到CW中哦:右键点击工程,-》Properties, 在properties中选择C/C++ General-&gtaths and Symbols
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 08:01 , Processed in 0.107573 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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