激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

EM9280 Linux下AD驅動的應用

 2013-5-8              

1、Linux驅動程序調用方法概述

        在Linux環境中,通過驅動程序來操作相應硬件接口,對于應用程序來說就是打開特定文件名稱的文件,然后通過常規的對文件讀寫或控制的方法,來實現對硬件接口的訪問。在嵌入式系統中,對硬件的讀寫通常采用ioctl函數的形式,其典型的流程如下:

 


流程實現功能實現函數備注
第一步打開文件  fd = open(devname, …);  特定設備文件名稱
第二步訪問接口

  rc = ioctl(fd, cmd, …);

  rc = read(fd, buf, size);

  rc = write(fd, buf, size);

  可能調用多次,多種cmd
第三步關閉文件  close(fd);  不再操作,則關閉


 

        其中ioctl(…)的基本定義為:

        int ioctl(int fd, int cmd, unsigned long arg);

        輸入參數 fd: 為打開文件獲得的文件描述符
                         cmd: 操作命令碼,在EM9280_drivers.h頭文件中以定義
                         arg: 需要傳遞的參數指針,不同的命令必須嚴格匹配相應的參數類型

        返回值 = 0: 調用成功
                    = EBADF: 非法文件描述符
                    = EFAULT: arg指向不可訪問的內存空間 
                    = EINVAL: 非法的cmd或arg參數
                    = ENOTTY: 文件描述符未指向特殊的字符設備

 

2、EM9280 AD驅動的應用

        EM9280共有2路低速的模擬AD通道AIN1和AIN2,輸入量程為0 – 3.6V,AD分辨率12-bit。所謂低速通道,表示這兩個通道只能用于外部的直流或慢變化類型的信號。除此之外,EM9280還可提供對輸入的+5V電源電壓、+3.3V電源電壓以及核心CPU基片溫度的監測。

 

        EM9280 AD驅動是以模塊(module)形式提供給客戶,相應的驅動文件放在根文件系統中:/lib/modules/2.6.35.3/em9280_ad.ko,EM9280 AD驅動所對應的設備文件名稱為“/dev/em9280_ad”。

 

        首先需要加載em9280_ad驅動:
        #>insmod /lib/ modules/2.6.35.3/em9280_ad.ko

 

        然后應用程序可打開AD驅動程序對應的設備文件“/dev/em9280_ad”,可多次調用read( )來讀取各類數據。read( )函數需要帶上如下結構數據:

 

        struct daq_info
        {
                unsigned int cmd; // 命令碼 = 0, 1, 2, ....
                unsigned int data; // 返回的AD數據
                char unit[16]; // 返回的單位字串: 'mV', 'Kalvin'等 
        } ;

 

        其中cmd參數用于定義AD通道:
        0 ---- AD采集通道1
        1 ---- AD采集通道2 
        2 ---- +5V電源電壓
        3 ---- +3.3V電源電壓
        6 ---- 核心CPU基片溫度

 

        注意返回的溫度參數均為開氏溫度,轉換成攝氏溫度,大致減去273即可。在此基礎上,應用程序的典型代碼如下:

 

        int main(int argc, char** argv)
        {
                int fd;
                int i1, rc;
                int nChIndex;
                struct daq_info ad;

                printf('Driver em9280_ad test v1.0\n');

                nChIndex = 1;
                if(argc > 1)
                {
                        nChIndex = atoi( argv[1] );
                }

                fd = open('/dev/em9280_ad', O_RDWR);
                printf('open file = %d\n', fd);
                if( fd<0 )
                {
                        return -1;
                }

                ad.cmd = nChIndex;

                for( i1=0; i1<20; i1++)
                {
                        rc = read(fd, (void*)&ad, sizeof(ad) );
                        printf( 'nValue = %d (%s)\n', ad.data, ad.unit );
                        sleep(1);
                }

                close(fd);
                printf('close file\n');
                return 0;
        }

主站蜘蛛池模板: 新一级毛片国语版| 国产免费一级视频| 国产精品成人观看视频国产奇米| 亚洲一级二级| 一级片aaaaaa| 涩涩99| 国产欧美一区二区| 免费人成黄页在线观看日本| 女人被狂躁的免费视频高清| 欧美性一级交视频| 国产精品久久国产精品99| 樱花草在线社区www韩国| 激情婷婷成人亚洲综合| 青青青国产精品国产精品美女| 最新亚洲人成网站在线影院| 久久91精品综合国产首页| 中文在线观看永久免费| 成人在线观看网站| 国产美女视频黄a视频免费全过程| 国产网站在线免费观看| 欧美精品综合一区二区三区| 亚洲精品97福利在线| 久久鸭综合久久国产| 中文字幕久久综合伊人| 在线人成精品免费视频| 农村寡妇一级毛片免费看视频| 国内不卡1区2区| 国产在线一区观看| 国产黄色片视频| 国产精品成人免费福利| 黄色一级毛片免费| 黄色美女一级片| 喷潮白浆直流在线播放| 136福利导福航| 999国产高清在线精品| 久久久久夜色精品波多野结衣| 日本福利片| 日本69sex护士www| 欧美亚洲综合在线观看| 青青草99久久精品国产综合| 日韩欧美亚洲国产高清在线|