智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6970|回复: 18
打印 上一主题 下一主题

[软件类] AD的转换问题

  [复制链接]

11

主题

65

帖子

0

精华

高级会员

Rank: 4

积分
541
威望
378
贡献
59
兑换币
0
注册时间
2011-12-10
在线时间
52 小时
跳转到指定楼层
1#
发表于 2012-2-19 15:01:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问一下:XS128中AD转换中转换队列长度与单多通道的设置还有连续队列转换方式之间是怎样的关系?
转换队列的长度是不是反映多通道转换的数目?单通道时又对应着什么东西?

4

主题

117

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2100
威望
1066
贡献
440
兑换币
107
注册时间
2011-11-28
在线时间
297 小时
2#
发表于 2012-2-19 15:28:08 | 只看该作者
MUL位:如果是单通道,那就只采样一个通道的值,具体哪个通道由ATDCTL5的CD-CA决定;
多通道就是从一个选定的通道开始一个个通道转换下去,ATDCTL5的CD-CA决定从哪个通道开始采样,ATDCTL3 的S8C,S4C,S2C,S1C决定连续采样通道的数目。
MC9S12XS的AD只有一个转换器,选择多通道的话,它得一个个转换下来。
回复 支持 反对

使用道具 举报

11

主题

65

帖子

0

精华

高级会员

Rank: 4

积分
541
威望
378
贡献
59
兑换币
0
注册时间
2011-12-10
在线时间
52 小时
3#
 楼主| 发表于 2012-2-19 22:17:46 | 只看该作者
wuqt 发表于 2012-2-19 15:28
MUL位:如果是单通道,那就只采样一个通道的值,具体哪个通道由ATDCTL5的CD-CA决定;
多通道就是从一个选定 ...

如果我设置为单通道,队列长度为4,那么就会在ATDCTL5的CC-CA决定的通道处采集模拟信号,会采集出4个值,分别放在对应的结果寄存器里,此时我可以取平均,得到较为准确的AD转换值。
如果我设置为多通道,队列长度为4,就表示会采集4路模拟信号。那么我如果想多通道取平均怎么办?
还想问一下:SCAN  连续与单次转换模式 是个什么概念?作用是什么?
麻烦你啦!
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2100
威望
1066
贡献
440
兑换币
107
注册时间
2011-11-28
在线时间
297 小时
4#
发表于 2012-2-19 23:03:25 | 只看该作者
自由的飞 发表于 2012-2-19 22:17
如果我设置为单通道,队列长度为4,那么就会在ATDCTL5的CC-CA决定的通道处采集模拟信号,会采集出4个值 ...

不是的,单通道是只采一个通道的值,S8C~S1C这时不作用。多通道时就从SD~SA决定的通道开始 连续采样S8C~S1C个通道。
SCAN模式就是不停地转换队列,反之就是只转换一次队列。
回复 支持 反对

使用道具 举报

11

主题

65

帖子

0

精华

高级会员

Rank: 4

积分
541
威望
378
贡献
59
兑换币
0
注册时间
2011-12-10
在线时间
52 小时
5#
 楼主| 发表于 2012-2-20 11:31:07 | 只看该作者
wuqt 发表于 2012-2-19 23:03
不是的,单通道是只采一个通道的值,S8C~S1C这时不作用。多通道时就从SD~SA决定的通道开始 连续采样S8C~ ...

不是啊,我在很多书上见到的都是单通道,队列长度为4,就表示在确定的通道采集4个值,然后可取平均进行滤波。
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2100
威望
1066
贡献
440
兑换币
107
注册时间
2011-11-28
在线时间
297 小时
6#
发表于 2012-2-20 17:19:53 | 只看该作者
自由的飞 发表于 2012-2-20 11:31
不是啊,我在很多书上见到的都是单通道,队列长度为4,就表示在确定的通道采集4个值,然后可取平均进行滤 ...

这样貌似意义不大,所以忽略队列长度了。你可以试试单通道到底会不会转换多次。。。
回复 支持 反对

使用道具 举报

8

主题

68

帖子

0

精华

高级会员

Rank: 4

积分
579
威望
397
贡献
86
兑换币
0
注册时间
2012-2-14
在线时间
48 小时
7#
发表于 2012-3-5 15:42:53 | 只看该作者
wuqt 发表于 2012-2-19 15:28
MUL位:如果是单通道,那就只采样一个通道的值,具体哪个通道由ATDCTL5的CD-CA决定;
多通道就是从一个选定 ...

我通过硬件调试。一经过AD初始化函数  标志位CCF0-8就为1了, ATD0DR0-8为1500左右的初值是怎么回事?


   初始化 函数 是 AD7-15位,9通道  从AD7开始转换 多通道连续
void ADC_Init(void)
{
     ATD0DIEN = 0;  
ATD0CTL1 = 0x57;       //AD分辨率选择12位,且采样前放电
ATD0CTL2 = 0x40;//AD模块快速清零, 无等待模式, 禁止外部触发, 中断禁止
ATD0CTL3 = 0xC8;//AD转换结果右对齐,每个序列9次转换, No FIFO, Freeze模式下继续转换
ATD0CTL4 = 0x0f;  //采样时间4个周期,PRS=15  
TD0CTL5 = 0x37;   //多通道连续采样,通道7-----15,
}
  能不能麻烦你帮我看下,这个程序哪个地方出了问题。  我按照寄存器来设定的呀。
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2100
威望
1066
贡献
440
兑换币
107
注册时间
2011-11-28
在线时间
297 小时
8#
发表于 2012-3-5 17:27:18 | 只看该作者
春风 发表于 2012-3-5 15:42
我通过硬件调试。一经过AD初始化函数  标志位CCF0-8就为1了, ATD0DR0-8为1500左右的初值是怎么回事?

...

开始转换是通过写ATDCTL5来启动的,你写完ATDCTL5它就开始转换了。1500初值可能是引脚悬空着的吧?
回复 支持 反对

使用道具 举报

8

主题

68

帖子

0

精华

高级会员

Rank: 4

积分
579
威望
397
贡献
86
兑换币
0
注册时间
2012-2-14
在线时间
48 小时
9#
发表于 2012-3-5 17:53:24 | 只看该作者
wuqt 发表于 2012-3-5 17:27
开始转换是通过写ATDCTL5来启动的,你写完ATDCTL5它就开始转换了。1500初值可能是引脚悬空着的吧?

刚才试了下, AN7接了陀螺仪 还是一样。  1500左右。而且变成FIFO 现在标志位都为1了。。。。

  会是什么造成的。。?
回复 支持 反对

使用道具 举报

4

主题

117

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2100
威望
1066
贡献
440
兑换币
107
注册时间
2011-11-28
在线时间
297 小时
10#
发表于 2012-3-5 19:46:05 | 只看该作者
春风 发表于 2012-3-5 17:53
刚才试了下, AN7接了陀螺仪 还是一样。  1500左右。而且变成FIFO 现在标志位都为1了。。。。

  会是 ...

AFFC下完成标志位你读了结果寄存器,它就会自动清零的。SCAN模式下要是没来得及读结果,前一结果就会被自动覆盖了,FIFOR就会置1 ,你是用的NonFIFO模式,FIFOR没什么用的。至于结果对不对,你可以把通道接到参考电压下 看它是不是FFF。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 00:47 , Processed in 0.046991 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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