• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 多通道AD转换的问题,急! 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 77924
精华: 0
发帖: 92
金钱: 460 两
威望: 92 点
综合积分: 184 分
注册时间: 2012-09-13
最后登录: 2016-02-20
楼主  发表于: 2013-05-08 14:18

 多通道AD转换的问题,急!

您好,我的问题是这样的:
我现在用如下应用程序来测试多通道ad转换
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/fs.h>
#include <errno.h>
#include <string.h>
#define ADC_SET_CHANNEL         0xc000fa01
#define ADC_SET_ADCTSC          0xc000fa02
/*
1) cd Linux-2.6.38
2) make menuconfig
3) enter Device Drivers--->Input device support  --->Touchscreens
4) unselect "S3C touchscreen driver for Mini6410"
5) make
*/
#define CHANNELCOUNT 6
int main(int argc, char* argv[])
{
    //int channels[CHANNELCOUNT] = {0,1,4,5,6,7}; //for 6410
     int channels[CHANNELCOUNT] = {0,1,6,7,8,9}; //for 210
    int channel;
    int i=0;
fprintf(stderr, "press Ctrl-C to stop\n");
int fd = open("/dev/adc", 0);
if (fd < 0) {
  perror("open ADC device:");
  return 1;
}
    char output[255];
for(;;) {
        puts("\033[2J");
        output[0] = 0;
        for (i=0; i<CHANNELCOUNT; i++) {
            channel = channels;
            if (ioctl(fd, ADC_SET_CHANNEL, channel) < 0) {
                perror("Can't set channel for /dev/adc!");
                close(fd);
                return 1;
            }
            char buffer[30];
            int len = read(fd, buffer, sizeof buffer -1);
            if (len > 0) {
                buffer[len] = '\0';
                int value = -1;
                sscanf(buffer, "%d", &value);
                char outbuff[255];
                sprintf(outbuff, "AIN%d %d\n", channel, value);
                strcat(output, outbuff);
            } else {
                perror("read ADC device:");
                close(fd);
                return 1;
            }
        }
        printf("%s",output);
        usleep(300* 10000);
    }
close(fd);
}
结果是:
AIN0 123
AIN1 4028
AIN6 3322
AIN7 0
AIN8 0
AIN9 3874

用万用表测各通道引脚的电压,结果如下:
0、   0v
1、   -200mv
2、  1.5mv
3、   2.7mv
4、   190mv
5、   -100mv
我的输入是每个通道都是0V,但是通道1、6、9都不是0,而且如果我改变各通道的输入电压,通道1、6、9的输出是不随输入变化的,其他通道正常。
请问,这是什么原因造成的呢?硬件问题还是软件问题?
我还是过裸板的ADC程序,用的是mini210的裸板教程那套代码,发现同样的问题。
我现在给变一个通道的输入,另一个通道的值也会受到影响。
这个真的没法琢磨呀。
感觉好像是底板的问题。
期盼您的解答,谢谢!

自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
1楼  发表于: 2013-05-08 14:37
我们的210板没有提供过2.6.38内核,估计你搞错了
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 侠客
UID: 77924
精华: 0
发帖: 92
金钱: 460 两
威望: 92 点
综合积分: 184 分
注册时间: 2012-09-13
最后登录: 2016-02-20
2楼  发表于: 2013-05-08 14:45

 回 1楼(mindee) 的帖子

我就是用tiny210光盘里面的测试代码呀,路径是
tiny210光盘\Linux\examples-mini210-20120912\examples\adc-test
文件名是:adc-test.c
另外我跑裸板程序也出现这样的问题呀,
这个AD真的很不稳定,希望你们好好测一下哈,把问题解决掉肯定好的哈
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
3楼  发表于: 2013-05-08 14:47
可能你的光盘太老了,新光盘驱动+Android 4可以支持多通道
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 侠客
UID: 77924
精华: 0
发帖: 92
金钱: 460 两
威望: 92 点
综合积分: 184 分
注册时间: 2012-09-13
最后登录: 2016-02-20
4楼  发表于: 2013-05-08 14:47

 回 1楼(mindee) 的帖子

我跑过linux2.6.35.7、linux3.0的内核,都存在这样的问题
级别: 侠客
UID: 77924
精华: 0
发帖: 92
金钱: 460 两
威望: 92 点
综合积分: 184 分
注册时间: 2012-09-13
最后登录: 2016-02-20
5楼  发表于: 2013-05-08 14:50
我用的是这个版本的光盘
Tiny210用户手册
版本:2012 -09 -12
(本手册正在不断更新中,建议您到网站下载最新版本)
你们测一下行吗?如果ok我就去找你们买那块好的板,我现在急用哈,昨天我到你们公司试过另一块核心板,也出现多通道ad不稳定的问题,希望你们重视一下呀
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
6楼  发表于: 2013-05-08 14:51
建议下载最新光盘试试
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
7楼  发表于: 2013-05-08 14:53
ad通道是从CPU直接引出的,没有经过任何处理,实际应用一般要加一些电容等器件过滤或者根据不同的电压再分压处理。

如果我们加了多余的器件,就不方便用户自己做产品外接了。
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
8楼  发表于: 2013-05-08 14:54
210光盘从2012.9到2013.3,中间都更新过好几轮了。
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 侠客
UID: 77924
精华: 0
发帖: 92
金钱: 460 两
威望: 92 点
综合积分: 184 分
注册时间: 2012-09-13
最后登录: 2016-02-20
9楼  发表于: 2013-05-08 15:00

 回 7楼(mindee) 的帖子

电路原理图我也看过,是直接引出的,难道是cpu的问题吗?可是触摸屏可以正常使用哈,触摸屏不是也用cpu的ad通道吗?
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go