一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

MINI210開發(fā)板的ADC驅(qū)動(dòng) | 學(xué)步園

 XeonGate 2015-10-07

要使用MINI210開發(fā)板的adc采集電池電壓,來檢測電池電量問題

查看電路圖,AIN0用作可調(diào)電阻,不可用,AIN1沒有設(shè)備使用,正好可以用于我的電壓測量

事情沒有想象的那么順利,有點(diǎn)小曲折

使用購買開發(fā)板附帶的光盤上的內(nèi)核來測試

開始以為驅(qū)動(dòng)是在arch/arm/mach-s5pv210里面的adc.c文件

將其編譯進(jìn)內(nèi)核,查看內(nèi)核啟動(dòng)的信息,發(fā)現(xiàn)有重復(fù)的adc驅(qū)動(dòng)

后來仔細(xì)看代碼,發(fā)現(xiàn)adc的驅(qū)動(dòng)是在driver/char里面的mini210_adc.c

內(nèi)核編好燒錄到開發(fā)板

編寫應(yīng)用程序

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>

//#define ADC_INPUT_PIN   _IOW('S', 0x0c, unsigned long)

int main()
{
  int fp,ret;
  unsigned short data = 0;
  fp = open("/dev/adc", O_RDONLY);

  if(fp == -1)
  {
    perror("cannot open");
    return errno;
  }

  //ioctl(fp, ADC_INPUT_PIN, 1);
  //ioctl(fp, 0xc000fa01, 1);

  while(1)
  {
    //ret = read(fp, &data, 2);
    ret = read(fp, NULL, 0);
    //if(ret > 0)
      printf("adc = %d\n", ret);
    sleep(1);
  }
  return -1;
}

打印出的總是AIN0的adc信息,查看代碼,是程序設(shè)置死的,一直打印AIN0(可調(diào)電阻)的采集數(shù)據(jù),如下

static int s3c2410_adc_open(struct inode *inode, struct file *filp)
{
init_waitqueue_head(&(adcdev.wait));

adcdev.channel=0;
adcdev.prescale=0xff;

/* Bit 6 must be 1 for YP, bit 7 must be 0 for YM */
ADCTSC = 0x40;

DPRINTK("adc opened\n");
return 0;
}

然后將adcdev.channel改為1,再次測試,

打印出來的還是AIN0的可調(diào)電壓值,那問題出在哪呢?

在網(wǎng)上搜索一下有不少ADC驅(qū)動(dòng)的博客,但都是只使用AIN0采集的,好多都是轉(zhuǎn)載的,我想可能他們都沒做過測試,至少在AIN1上沒測試過

又咨詢過友善之背的客服,回復(fù)說最新出來的光盤修改好了

又去網(wǎng)上下了最新的光盤,確實(shí)有些修改,就是加了驅(qū)動(dòng)的ioctl接口

修改好再去測試還是老問題,總是打印出AIN0的采集數(shù)據(jù)

然后去看s5pv210的手冊,發(fā)現(xiàn)ADCCON的bit[3-5]是預(yù)留的,并不是代碼里面認(rèn)定的是ADC的選擇腳,查看2440確實(shí)是將adc通路選擇放在ADCCON寄存器的3、4、5bit,

仔細(xì)查看發(fā)現(xiàn)手冊里面ADC章節(jié)最下面還有個(gè)ADCMUX的寄存器,尼瑪,原來是這個(gè)寄存器作怪,我說怎么總是讀出AIN0的值

原來選擇ADC通道設(shè)置錯(cuò)了寄存器,并不在ADCCON里面,而是在ADCMUX里面

于是在設(shè)置ADCCON寄存器前加了一句

adcdev.channel = 1;

ADCMUX = adcdev.channel;

這下果然正確了,讀出的數(shù)據(jù)正是AIN1腳輸入的信號(hào)數(shù)據(jù)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多

    国产精品一区二区香蕉视频| 国产成人精品99在线观看| 91插插插外国一区二区婷婷| 欧美一区二区三区在线播放| 欧美胖熟妇一区二区三区| 神马午夜福利一区二区| 高潮少妇高潮久久精品99| 国产高清精品福利私拍| 国产美女网红精品演绎| 日韩亚洲精品国产第二页| 亚洲中文字幕高清视频在线观看 | 麻豆国产精品一区二区| 九九热精品视频在线观看| 日韩精品一区二区不卡| 国产一区二区三区口爆在线| 91麻豆精品欧美视频| 两性色午夜天堂免费视频| 九九热精彩视频在线播放| 精品国产日韩一区三区| 夜色福利久久精品福利| 视频在线播放你懂的一区| 午夜福利视频六七十路熟女| 日本高清二区视频久二区| 国产丝袜极品黑色高跟鞋| 精品人妻久久一品二品三品| 亚洲欧美日韩国产成人| 精品国产品国语在线不卡| 日本深夜福利在线播放| 午夜福利视频日本一区| 一区二区免费视频中文乱码国产| 熟女少妇一区二区三区蜜桃| 国内午夜精品视频在线观看| 国产熟女一区二区不卡| 久久成人国产欧美精品一区二区| 亚洲国产一级片在线观看| 91人妻丝袜一区二区三区| 黑人巨大精品欧美一区二区区| 福利在线午夜绝顶三级| 亚洲国产婷婷六月丁香| 欧美人妻少妇精品久久性色| 国产无摭挡又爽又色又刺激|