智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3654|回复: 15
打印 上一主题 下一主题

[咨询] XS128的AD问题

  [复制链接]

1

主题

10

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3921
威望
2050
贡献
1273
兑换币
795
注册时间
2012-3-27
在线时间
299 小时
跳转到指定楼层
1#
发表于 2013-4-5 13:25:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       XS128的AD的各个通道相互之间为什么会有影响的?比如说我要用到四个通道,0,1,2,3这四个,然后我烧程序进去单片机中用BDM查看AD转换后的值,我先不给输入信号,然后那四个通道的值好像就在200以上变化(8位精度),接着我再在其中一个通道那里接上地线,那个通道的值就变成了0,但是其他通道的值也受到了影响,相邻的下一个通道的值变得只有100多,其他两个通道的值也受到些许影响。单片机试过好几块了,还是一样的问题。我把AD设置和采集的程序贴在下面,求解救。求帮忙啊,弄车弄了好久,突然发现到这个问题,排除了好久,也没找到为什么,纠结。。。
//AD初始化
void AD_INIT(void){
  ATD0DIEN=0x00;   //禁止数字输入
  ATD0CTL1_SRES=0;//8位精度
  ATD0CTL2=0x40;//启动转换,快速清除标志,禁止中断
  ATD0CTL3=0xA0;//右对齐,转换序列长度8,非先进先出模式
  ATD0CTL4=0x13;//80M总线,采样频率2M
  ATD0CTL5=0x30;//连续转换序列,多通道AD0-AD3
}

//AD采集,在PIT0终端中调用
void AD_DO(unsigned int *AD_value){
  if(ATD0STAT0_SCF)
  *AD_value=ATD0DR0;
  AD_value++;
  *AD_value=ATD0DR1;
  AD_value++;
  *AD_value=ATD0DR2;
  AD_value++;
  *AD_value=ATD0DR3;
  AD_value++;
}

1

主题

10

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3921
威望
2050
贡献
1273
兑换币
795
注册时间
2012-3-27
在线时间
299 小时
2#
 楼主| 发表于 2013-4-5 21:38:53 | 只看该作者
求高手指点迷津啊~~~
回复 支持 反对

使用道具 举报

29

主题

598

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3536

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
1932
贡献
834
兑换币
199
注册时间
2012-2-5
在线时间
385 小时
毕业学校
保密
3#
发表于 2013-4-7 16:11:59 | 只看该作者
很高兴能为你解答问题,其实因为你采取了非先进先出模式 所以在只针对一个通道采集而其他通道并没有输入信号时,就会出现如上的这种情况(其他引脚也有信号,仔细观察你就会发现,信号变化惊人的一样 ,不过大小有所差异 ,这是因为后面没有接信号的引脚也采集了前一通道的值),解决这个问题的办法就是 在你需要的AD端口都连接上相应的信号,比如说AD0陀螺仪 AD1 加速度计 AD2 线性CCD 你将他们的信号线分别对应的连接在相应的传感器信号线就不会出现这种情况了;其实说实话如果 假设你只用到AD0,完全可以不用管其他引脚的情况。  不知道你明白了没有
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3921
威望
2050
贡献
1273
兑换币
795
注册时间
2012-3-27
在线时间
299 小时
4#
 楼主| 发表于 2013-4-7 17:23:34 | 只看该作者
verm 发表于 2013-4-7 16:11
很高兴能为你解答问题,其实因为你采取了非先进先出模式 所以在只针对一个通道采集而其他通道并没有输入信号 ...

十分感谢你细心的回答。我原来遇到的情况是0~3这四个通道都给了输入信号,接了四个电感传感器电路传回来的信号。电感布局是两排平放,前面一排两个电感信号给0和3通道,后面一排两个信号给1和2通道。0,1和3通道的值正常,但是2通道的值不对,无论是它对应的电感在漆包线附近还是离得比较远,它的值始终比通道1的值大,在漆包线附近时通道2的值大概为150多,远离时值还有六七十那么多,正常的话应该是小于十几的。我以为单片机的多通道采集之间有影响,于是我就一楼所描述的那样测试AD模块了。不知道你有没什么对策?

回复 支持 反对

使用道具 举报

29

主题

598

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3536

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
1932
贡献
834
兑换币
199
注册时间
2012-2-5
在线时间
385 小时
毕业学校
保密
5#
发表于 2013-4-7 17:38:23 | 只看该作者
你可以将正常的电感比如说是0通道连接的那个(0,1和3通道的值正常),接给通道2看看正不正常,或者是将不正常的通道2所连接的电感接到正常的通道上面观察一下,
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3921
威望
2050
贡献
1273
兑换币
795
注册时间
2012-3-27
在线时间
299 小时
6#
 楼主| 发表于 2013-4-7 23:40:55 | 只看该作者
verm 发表于 2013-4-7 17:38
你可以将正常的电感比如说是0通道连接的那个(0,1和3通道的值正常),接给通道2看看正不正常,或者是将不正 ...

    今晚鼓捣了一下,居然正常了。我晕,貌似是AD的通道2的外接口与插头之间接触不良导致的,不太确定~~后来打球去了,回复晚了~不过谢谢啦,那个先进先出什么的那里没仔细看datasheet,学到东西了。
回复 支持 反对

使用道具 举报

29

主题

598

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3536

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
1932
贡献
834
兑换币
199
注册时间
2012-2-5
在线时间
385 小时
毕业学校
保密
7#
发表于 2013-4-8 07:22:14 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
812
威望
214
贡献
110
兑换币
139
注册时间
2013-1-23
在线时间
244 小时
毕业学校
江苏理工学院
8#
发表于 2013-5-18 16:01:44 | 只看该作者
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

高级会员

Rank: 4

积分
604
威望
291
贡献
195
兑换币
193
注册时间
2013-9-12
在线时间
59 小时
9#
发表于 2014-4-11 20:12:00 | 只看该作者
估计是通道设置有问题,你这样设计是采集了16个通道加上 ATD0CTL0=0x03试试
回复 支持 反对

使用道具 举报

3

主题

180

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2074
威望
976
贡献
536
兑换币
648
注册时间
2013-12-7
在线时间
281 小时
10#
发表于 2014-4-20 15:05:26 | 只看该作者
我的电感值在没有输入时电感都在200多,怎么回事?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 15:00 , Processed in 0.079886 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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