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

基于ESM335x主板的多通道波形數(shù)據(jù)采集方案

 2016-7-20             

1、綜述


  ETA108是英創(chuàng)公司推出的一款低成本高性能的AD采集模塊,相比英創(chuàng)公司的其他數(shù)據(jù)采集擴展模塊,ETA108的一個主要特點是支持硬件周期脈沖觸發(fā)AD采集,因此ETA108非常適合應用于要求高精度采樣間隔的波形數(shù)據(jù)采集。ETA108波形數(shù)據(jù)采集模塊可廣泛應用于多通道波形記錄儀、電力諧波分析、故障錄波、振動信號分析、瞬態(tài)信號采集、通用數(shù)據(jù)采集等多種應用領域。現(xiàn)ESM335x Linux已支持ETA108數(shù)據(jù)采集模塊。


ESM335x系列工控主板多通道數(shù)據(jù)采集方案.gif


  ETA108性能:

    ? 8通道單端輸入或4通道差分輸入

    ? 輸入量程0~4.096V

    ? 每通道具有獨立的高阻抗增益放大器(PGA),可實現(xiàn)各種傳感器之間的直接接口連接,并支持用戶配置通道增益Gain=1/2/4/8)

    ? AD轉換精度12bit

    ? AD最高采樣速度100ksps

    ? 可選擇多種平均操作模式,使輸出AD精度達到14bit。其中有快速平均和精確平均兩種模式可以選擇。快速平均模式:對4,8或16次采樣結果做平均,可增加AD分辨率到14bit,快速平均模式適用于輸入到PGA的信號比較穩(wěn)定的情況。精確平均模式:對4,8或16次采樣結果做平均,可得到比快速平均模式更精確的采樣結果。此模式在輸入信號不太穩(wěn)定的情況下適用。


  使用4次平均模式總采樣速率不得高于20ksps,使用8次平均模式總采樣速率不得高于10ksps,使用16次平均模式采樣速率不得高于5ksps。當用戶采用默認設置進行采樣時,我們的驅動會根據(jù)用戶設置的采樣速度進行設置,使用能夠達到的最高平均模式以提高采樣精度。用戶也可自行設置。


  關于ETA108更詳細的參數(shù)以及設置方法請參考《ETA108數(shù)據(jù)采集模塊應用手冊》(Linux)


2、應用程序接口


  1、驅動程序

  在使用ETA108之前,需要在系統(tǒng)中先加載ETA108的驅動程序。我們提供eta108.ko驅動模塊,用戶使用insmod   /(目錄)/eta108.ko 命令就可以加載驅動。


  為了實現(xiàn)ETA108的高速數(shù)據(jù)采集,在其驅動程序中,充分利用了ESM335x的高性能DMA技術,從而保證了ETA108與ESM335x主板之間僅靠簡單的4線制SPI接口就實現(xiàn)了硬件連接,同時,DMA技術的引入,也將數(shù)據(jù)采集對系統(tǒng)性能的影響降到最低。考慮到實際應用,ESM335x ETA108驅動程序支持單次采樣模式和連續(xù)采樣模式,兩種模式下驅動每采集到512個點的數(shù)據(jù)(1kB數(shù)據(jù)大小)或者采樣結束就會通知用戶程序,建議應用程序中select函數(shù)和read函數(shù)一起使用盡快讀出數(shù)據(jù),以避免驅動維護大量的數(shù)據(jù)緩存。


1.jpg

連續(xù)采樣處理流程


  驅動程序中進行設置的eta108_config結構體。


  eta108_config結構體是ETA108的配置數(shù)據(jù)結構體,包含了采樣率,采樣長度,采樣通道設置,通道寄存器配置等參數(shù)。其定義如下:


  struct eta108_config

  {

      unsigned int rate;

      unsigned int count;

      unsigned int channel;

      void *config;

      unsigned int config_len;

  };


  在我們提供的驅動程序中,eta108_config結構體即可用為函數(shù)的輸入?yún)⒖迹浣Y構體成員含義說明如下:


  ADS_CONFIG結構體定義

成員定義 / 輸入?yún)?shù)
rate

 設置總的采樣率,每通道采樣率= rate/通道數(shù)

count 設置每個AD通道的采樣次數(shù)  >0:單次采樣  =0:連續(xù)采樣
channel 設置需要采樣的通道,對應位置1
config 指向AD通道配置的buffer,此參數(shù)用于設置ETA108的寄存器,config =NULL時,系統(tǒng)將使用默認配置
config_len config指向buffer的長度


  ETA108單通道采樣時采樣速度可以達到100ksps,如果多通道采樣,由于內部通道轉換需要時間,最高只能達到50ksps,rate設置需要滿足此限制。channel的低8bit(bit0~bit7)依次對應AD通道0~通道7,如果要采集某個通道的數(shù)據(jù),需要將其對應的位置為1。比如要采集通道0、通道1和通道7的數(shù)據(jù),則應設置channel=0x83;差分模式下只需設置差分通道中的一個通道的對應位為1,比如通道0、通道1在差分模式下工作,只需將0通道位置1,設置channel=0x1。


  2、ETA108驅動輸入輸出數(shù)據(jù)格式:

  用戶可以對ETA108的進行設置以改變ETA108工作模式,eta108_config中config指向的buffer格式為:


bit

1514131211109876543210
data10A3A2A1A000D7D6D5D4D3D2D1D0

寄存器寫


  允許的設置及其意義詳見《ETA108數(shù)據(jù)采集模塊應用手冊》(Linux)


  讀取采樣數(shù)據(jù)的格式如下(unsigned short):


bit

1514131211109876543210
dataD13D12D11D10D9D8D7D6D5D4D3D2D1D000

ETA108轉換結果


  其中第0、1位總是0,第2、3位為平均模式下增加的2位分辨率,如沒有采用平均模式則此兩位為0,第3-15位為12bit的AD數(shù)據(jù)。多通道采樣模式下,應用程序從驅動中讀得的AD數(shù)據(jù)是按通道依次存放的,低通道在前,比如應用程序同時連續(xù)采集CH1,CH2,CH5三個通道,read()函數(shù)讀得的AD數(shù)據(jù)存放為CH1、CH2、CH5、CH1、CH2、CH5、CH1………,每個通道16bit。


  ETA108的量程為0~4.096V,則可得D13~D2這12bit的數(shù)據(jù)對應的轉換關系如下表,用戶可據(jù)此換算數(shù)值:


  理想情況下的AD轉換結果

描述模擬量輸入數(shù)字量輸出
滿量程范圍4.096V­REF二進制十六進制
最小分辨率(LSB)V­REF/4096
滿量程V­REF-1LSB1111 1111 1111FFFF
1/2量程V­REF/21000 0000 00008000
1/2量程 - 1 LSBV­REF/2-1LSB0111 1111 11117FFF
0V0000 0000 00000000


  3、接口函數(shù)

  1) 加載設備驅動:

  #:insmod  /(目錄)/eta108.ko

  會自動創(chuàng)建設備文件 /dev/eta108


  2) 打開設備文件-open:

  int fd = open ( "/dev/eta108", O_RDWR, S_IRUSR | S_IWUSR );


  3) 設置采樣參數(shù)-write:

  struct eta108_config transfer;

    memset ( &transfer, 0, sizeof(transfer) );

    transfer.rate = 100000; //采樣速率

    transfer.channel = 0x1; //采樣通道

    transfer.count = 10000; //每通道采樣次數(shù)

    //自定義設置,此處為0通道設置GPA放大2倍,設置為NULL時采用默認設置

    unsigned short cmd[1] = {0x8004};

    transfer.config_len = 2; //2字節(jié)

    transfer.config = cmd;

    if(write ( fd, &transfer, sizeof(transfer) )<0)

    {

        printf ( "WRONG!!!!!!!!!!!!!!!!\n" );

        exit ( 1 );

    }


  4) 啟動采樣:

  if(ioctl ( fd, ETA108_START, &transfer )<0)

    {

        printf ( "START WRONG!!!!!!!!!!!!!!!!\n" );

        exit ( 1 );

    }


  5) 停止采樣:

  if(ioctl ( fd, ETA108_STOP, &transfer )<0)

    {

        printf ( "STOP WRONG!!!!!!!!!!!!!!!!\n" );

        exit ( 1 );

    }


  6) 讀取采樣數(shù)據(jù)-read:

  驅動內部每采集512個點(1kB)的數(shù)據(jù)或者采樣結束就會通過select函數(shù)通知應用程序,建議應用程序中盡快讀出數(shù)據(jù),進行存儲或者計算,read函數(shù)返回實際讀取的字節(jié)數(shù)。


  int count_in_byte = 0;

    int read_count=0;

    char read_buf[transfer.count*2*1]; // 1個通道,每個數(shù)據(jù)2個字節(jié)

    char *real_read = read_buf;

    for ( i=0; count_in_byte<transfer.count*2*1; i++ )

    {

        FD_ZERO(&fdRead);

        FD_SET(fd,&fdRead);

 

        aTime.tv_sec = 2;

        aTime.tv_usec = 0;

        ret = select ( fd+1, &fdRead, NULL, NULL, &aTime );

        if ( ret<0 )

            printf( "select, something wrong!\n " );

        if ( ret>0 )

        {

            if ( FD_ISSET(fd, &fdRead) )

            {

                read_count = read(fd, real_read, 1024);

                if ( read_count<0 )

                {

                    printf ( "READ WRONG!!!!!!!!!!!!!!!!\n" );

                    exit ( 1 );

                }

                real_read += read_count;

                count_in_byte += read_count;

            }

        }

    }


  7) 關閉設備文件:

  close ( fd );


  用戶如需使用ETA108數(shù)據(jù)采集模塊,請和我們聯(lián)系。

主站蜘蛛池模板: 欧美黑人换爱交换乱理伦片| 网站污污| 美女性高潮视频| 国产或人精品日本亚洲77美色| 日韩伦理中文字幕| 中文在线免费不卡视频| 久久精品国内一区二区三区| 亚洲欧美日韩综合一区| 免费黄片毛片| 国内精品999| 国产高清亚洲精品26u| 黄色片视频在线播放| 国产成人久久精品激情91| 久久亚洲人成网站| 婷婷月| 一亚洲精品一区| a黄色片| 久久成人免费视频| 中文字幕日韩一区二区| 成人免费精品视频| 免费视频不卡一区二区三区| 国产freexxxx性播放麻豆| 国产精品99在线观看| 狠狠色丁香婷婷综合| 精品国产1区| 1769国内精品观看视频| 国产精品麻豆| 加勒比一本大道香蕉在线视频| 在线观看亚洲一区| 欧美一级乱理片免费观看| 国产一区二区久久| 国产成人精品久久免费动漫| 国产精品毛片| 国产精品喷水在线观看| 美日韩在线| 特黄特黄| 美女一级毛片免费观看| 涩久久| 高清国产亚洲va精品| 黄色大片免费播放| 最新国产在线视频|