[MQX] 调试mqx下的adc例程出现的问题?例程似乎有误。(已解决)

[复制链接]

该用户从未签到

51

主题

307

帖子

0

高级会员

Rank: 4

积分
651
最后登录
2020-9-4
发表于 2013-12-3 11:30:04 | 显示全部楼层 |阅读模式
调试mqx下的adc例程出现的问题?例程似乎有误。大家看看我说的是否正确!
_mqx_int _adt_hw_channel_init(MQX_FILE_PTR f, ADT_CHANNEL_PTR adt_ch)
{
    ADC_CHANNEL_BUNDLE_PTR adc_ch_bundle = (ADC_CHANNEL_BUNDLE_PTR) f->DEV_DATA_PTR;
    uint_32  pdb_period;
    _mqx_uint adc_num = adc_ch_bundle->adc_num;
    _mqx_int ch_num;
    _mqx_int status;
    if ((adt_ch->g.trigger & ADC_PDB_TRIGGER) != ADC_PDB_TRIGGER)
        return ADC_ERROR_HWTRIGGER; /* the channel can be run only from HW trigger */
    if (pdb_internal.period != 0) {
        _mqx_int N;
        N = adt_ch->g.period / pdb_internal.period;
        if (N * pdb_internal.period != adt_ch->g.period)
            return ADC_ERROR_BAD_PARAM; /* it's only allowed to have periods as multiple of basic period */
        adc_ch_bundle->periods_preset = N;
        adc_ch_bundle->periods = 0;
    }
    else {
        adc_ch_bundle->periods_preset = 1;
        adc_ch_bundle->periods = 0;
        status = adt_period_prescaler(adt_ch->g.period);
        if (status != ADC_OK)
            return status;
    }
    PDB0_BASE_PTR->SC |= PDB_SC_TRGSEL_SWTRIG; /* set to software trigger by default */
    ch_num = adc_ch_bundle->ch_num;
    pdb_period = pdb_internal.period; /* : DON'T REMOVE THIS LINE! CW 6.2 COMPILER ERROR WITH DIVIDING OCCURS OTHERWISE */
    PDB0_BASE_PTR->SC |= PDB_SC_LDOK_MASK; /* write new MOD value */
    if (ch_num == 0) { /* temporary, we will make running channel A not actively, first trigger will move it to area within accesible boundary */
        pdb_internal.delayA[adc_num] = ((uint_64) adt_ch->g.offset * PDB0_BASE_PTR->MOD) / pdb_period;/* : we must use pdb_period */
        PDB0_BASE_PTR->CH[adc_num].DLY[0] = (PDB0_BASE_PTR->MOD == PDB_MOD_MOD_MASK ? PDB_MOD_MOD_MASK : PDB0_BASE_PTR->MOD + 1); /* move ChA behind accessible boundary */
        adc_ch_bundle->waste_channel = 1;
    }
    else
        PDB0_BASE_PTR->CH[adc_num].DLY[ch_num] = ((uint_64) adt_ch->g.offset * PDB0_BASE_PTR->MOD) / pdb_period;/* : we must use pdb_period */
     
 PDB0_BASE_PTR->SC |= PDB_SC_LDOK_MASK; /* write new DLY value */
    pdb_internal.used_channel[adc_num] |= 0x01 g.samples = adt_ch->g.samples_preset;
    adt_ch->b = adc_ch_bundle;
    return ADC_OK;
}
如果我要使用ADC的多通道的的话,ch_num可以大于1,那么对于 PDB0_BASE_PTR->CH[adc_num].DLY[ch_num] 超出其范围了,是不是有问题呀!!!
另外,如果我设置8通道的ADC的话,程序居然跑飞了。
我只修改了mqx的两个参数。
adc_conf.h中
#define ADC_MAX_SW_CHANNELS       (8)
adc_kadc_prv.h中
#ifndef ADC_CHANNELS_PER_ADC
    #define ADC_CHANNELS_PER_ADC (8) 

#endif
但程序跑飞了。请大侠指点一下!!!
 
我知道答案 目前已有9人回答
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2013-12-3 13:58:44 | 显示全部楼层

RE:调试mqx下的adc例程出现的问题?例程似乎有误。

Hi 楼主,我会将你的问题尽快转给MQX的工程师。
回复 支持 反对

使用道具 举报

该用户从未签到

51

主题

307

帖子

0

高级会员

Rank: 4

积分
651
最后登录
2020-9-4
 楼主| 发表于 2013-12-3 14:12:06 | 显示全部楼层

回复:调试mqx下的adc例程出现的问题?例程似乎有误。

谢谢!非常期待!!!
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

196

帖子

0

中级会员

Rank: 3Rank: 3

积分
380
最后登录
1970-1-1
发表于 2013-12-4 09:26:55 | 显示全部楼层

RE:调试mqx下的adc例程出现的问题?例程似乎有误。

MQX ADC 由PDB trigger, 驱动只支持2个channel /ADC, 在代码中已经固化了
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

196

帖子

0

中级会员

Rank: 3Rank: 3

积分
380
最后登录
1970-1-1
发表于 2013-12-4 09:32:43 | 显示全部楼层

RE:调试mqx下的adc例程出现的问题?例程似乎有误。

如果你需要使用第三个channel, 一个临时解决方案是关闭ADC driver, 再重新打开。
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

196

帖子

0

中级会员

Rank: 3Rank: 3

积分
380
最后登录
1970-1-1
发表于 2013-12-4 09:36:31 | 显示全部楼层

RE:调试mqx下的adc例程出现的问题?例程似乎有误。

我建议你使用 MQX 4.0 lwadc 驱动,它更好使用,特别是你需要更多的channel. 例程在c:\Freescale\Freescale_MQX_4_0\mqx\examples\lwadc\test.c
回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

459

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2024-10-24
发表于 2013-12-4 10:14:13 | 显示全部楼层

回复:调试mqx下的adc例程出现的问题?例程似乎有误。

好贴,顶起来!有空研究一下!
回复 支持 反对

使用道具 举报

该用户从未签到

51

主题

307

帖子

0

高级会员

Rank: 4

积分
651
最后登录
2020-9-4
 楼主| 发表于 2013-12-4 10:35:48 | 显示全部楼层

回复:调试mqx下的adc例程出现的问题?例程似乎有误。

好,谢谢!还有一个问题。AD2(DADP2)端口是否只支持PGA方式,不支持单通道模拟输入??
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2013-12-4 11:20:26 | 显示全部楼层

回复:调试mqx下的adc例程出现的问题?例程似乎有误。

回复第 8 楼 于2013-12-04 10:35:48发表:
好,谢谢!还有一个问题。AD2(DADP2)端口是否只支持PGA方式,不支持单通道模拟输入??
 
你好,楼主。这个问题您可以查看芯片的参考手册的第三章中的Connections/channel assignment小节
 
 
回复 支持 反对

使用道具 举报

该用户从未签到

51

主题

307

帖子

0

高级会员

Rank: 4

积分
651
最后登录
2020-9-4
 楼主| 发表于 2013-12-5 10:50:34 | 显示全部楼层

回复:调试mqx下的adc例程出现的问题?例程似乎有误。

回复第 9 楼 于2013-12-04 11:20:26发表:
回复第 8 楼 于2013-12-04 10:35:48发表:
好,谢谢!还有一个问题。AD2(DADP2)端口是否只支持PGA方式,不支持单通道模拟输入??
 
你好,楼主。这个问题您可以查看芯片的参考手册的第三章中的Connections/channel assignment小节
 
 

 

我使用的芯片是K60系列,而且需要8个通道。
我看了 MQX 4.0 lwadc驱动及 例程在c:\Freescale\Freescale_MQX_4_0\mqx\examples\lwadc\test.c,但好像得移植到我使用的芯片的mqx下。需要改动的地方比较多。!!它更好使用,特别是你需要更多的channel. 又没有关于它移植的指导文档呀!!
 
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-9-10 06:29 , Processed in 0.105762 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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