<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • 基于ESM335x主板的多通道波形數據采集方案

     2016-7-20             

    1、綜述


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


    ESM335x系列工控主板多通道數據采集方案.gif


      ETA108性能:

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

        ? 輸入量程0~4.096V

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

        ? AD轉換精度12bit

        ? AD最高采樣速度100ksps

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


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


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


    2、應用程序接口


      1、驅動程序

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


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


    1.jpg

    連續采樣處理流程


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


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


      struct eta108_config

      {

          unsigned int rate;

          unsigned int count;

          unsigned int channel;

          void *config;

          unsigned int config_len;

      };


      在我們提供的驅動程序中,eta108_config結構體即可用為函數的輸入參考,其結構體成員含義說明如下:


      ADS_CONFIG結構體定義

    成員定義 / 輸入參數
    rate

     設置總的采樣率,每通道采樣率= rate/通道數

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


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


      2、ETA108驅動輸入輸出數據格式:

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


    bit

    1514131211109876543210
    data10A3A2A1A000D7D6D5D4D3D2D1D0

    寄存器寫


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


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


    bit

    1514131211109876543210
    dataD13D12D11D10D9D8D7D6D5D4D3D2D1D000

    ETA108轉換結果


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


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


      理想情況下的AD轉換結果

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


      3、接口函數

      1) 加載設備驅動:

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

      會自動創建設備文件 /dev/eta108


      2) 打開設備文件-open:

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


      3) 設置采樣參數-write:

      struct eta108_config transfer;

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

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

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

        transfer.count = 10000; //每通道采樣次數

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

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

        transfer.config_len = 2; //2字節

        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) 讀取采樣數據-read:

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


      int count_in_byte = 0;

        int read_count=0;

        char read_buf[transfer.count*2*1]; // 1個通道,每個數據2個字節

        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數據采集模塊,請和我們聯系。

    精品一区二区三区在线播放视频| 在线观看精品国产福利片87| 亚洲精品第一国产综合境外资源 | 99精品在线观看| 最新国产成人亚洲精品影院| 亚洲精品V欧洲精品V日韩精品| 少妇人妻精品一区二区| 久久久一本精品99久久精品88 | 91精品国产综合久久四虎久久无码一级 | 久久精品国产亚洲AV电影| 亚洲精品成人区在线观看| 久久夜色精品国产噜噜亚洲a| 久久夜色精品国产亚洲| 一本一本久久a久久精品综合麻豆 一本色道久久88综合日韩精品 | segui久久综合精品| 香蕉久久精品日日躁夜夜躁| 久久青青草原精品国产| 思99热精品久久只有精品| 国产精品亚洲一区二区三区| 精品国产乱码久久久久久呢| 久久精品亚洲视频| 丰满人妻熟妇乱又仑精品| 国产伦精品一区二区三区免.费| 97热久久免费频精品99| 人妻熟妇乱又伦精品视频 | 久草精品视频在线播放| 国产亚洲美女精品久久久| 国产69久久精品成人看| 欧美日韩精品乱国产| 国产精品视频一区二区三区经 | 国产VA免费精品高清在线| 国产av影片麻豆精品传媒| 99久热任我爽精品视频| 久久99精品久久久久久久不卡| 国产精品第12页| 亚洲日韩精品一区二区三区| 在线私拍国产福利精品| 国产精品超碰12396| 亚洲国产精品一区二区第四页| 国产精品无码专区在线播放| 成人久久精品一区二区三区|