<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>
  • EM9380多通道AD數(shù)據(jù)采集

     2013-8-6              

            在工業(yè)控制應(yīng)用、特別是要求閉環(huán)控制的實(shí)時(shí)應(yīng)用中,通常都需要實(shí)時(shí)采集模擬信號(hào)。因此作為一款面向?qū)崟r(shí)控制應(yīng)用的工控主板EM9380,配置了最多可達(dá)8路的AD轉(zhuǎn)換單元。為了實(shí)現(xiàn)閉環(huán)控制的高效操作,AD轉(zhuǎn)換是由板上獨(dú)立運(yùn)行的硬件協(xié)處理器(Cortex-M3)來直接操作。應(yīng)用程序通過驅(qū)動(dòng)程序,其設(shè)備文件名為“MCU2:”,來操作AD的功能。在標(biāo)準(zhǔn)配置的EM9380中,其AD單元的基本技術(shù)特性包括: 

     

            ?  單端輸入采集,可進(jìn)一步選擇單通道、雙通道、4通道及8通道模式。 
            ?  差分輸入采集,可進(jìn)一步選擇單通道、雙通道及4通道模式。 
            ?  采集觸發(fā)模式方面,支持軟件觸發(fā)和閾值觸發(fā)兩種模式。軟件觸發(fā)指一旦應(yīng)用程序調(diào)用相關(guān)API函數(shù),即進(jìn)行數(shù)據(jù)采集;而閾值觸發(fā)模式是指當(dāng)應(yīng)用程序啟動(dòng)AD采集后,

                只有當(dāng)輸入的數(shù)據(jù)超出所設(shè)置的門限閾值時(shí),才開始采集數(shù)據(jù),這種模式廣泛應(yīng)用于狀態(tài)監(jiān)測(cè)及波形捕捉等應(yīng)用。 
            ?  采集數(shù)據(jù)方面,支持單點(diǎn)采集和波形采集兩種模式。單點(diǎn)采集指每個(gè)通道僅采集一個(gè)樣點(diǎn);而波形采集則是按設(shè)置的采樣間隔,采集一定長度的數(shù)據(jù)序列,這種模式一般

                應(yīng)用于需要分析波形數(shù)據(jù)的場(chǎng)合,如需要做FFT,獲得波形的頻譜特征。

     

            本文后續(xù)部分將針對(duì)EM9380的多通道AD在硬件、軟件方面的特性,具體介紹實(shí)現(xiàn)數(shù)據(jù)采集的相關(guān)步驟。

     

    AD通道的硬件接口說明

     

            EM9380中與AD關(guān)聯(lián)的管腳是GPIO8 – GPIO15,這8路GPIO在上電時(shí)的缺省配置是數(shù)字輸入模式。只有當(dāng)應(yīng)用程序調(diào)用AD轉(zhuǎn)換的API時(shí),其相應(yīng)的管腳才會(huì)轉(zhuǎn)換為模擬輸入狀態(tài)。EM9380共支持7種輸入模式,每種模式使用固定的通道配置,未使用的管腳則保持在GPIO模式。輸入模式與具體管腳的關(guān)系列表如下:

     

            單通道單端輸入

     


    AD通道號(hào)信號(hào)輸入管腳備注
    AD_CH0GPIO8與公共GND構(gòu)成信號(hào)回路


     

            雙通道單端輸入

     


    AD通道號(hào)信號(hào)輸入管腳備注
    AD_CH0GPIO8與公共GND構(gòu)成信號(hào)回路
    AD_CH1GPIO9與公共GND構(gòu)成信號(hào)回路


     

            4通道單端輸入

     


    AD通道號(hào)信號(hào)輸入管腳備注
    AD_CH0GPIO8與公共GND構(gòu)成信號(hào)回路
    AD_CH1GPIO9與公共GND構(gòu)成信號(hào)回路
    AD_CH2GPIO10與公共GND構(gòu)成信號(hào)回路
    AD_CH3GPIO11與公共GND構(gòu)成信號(hào)回路


     

            8通道單端輸入

     


    AD通道號(hào)信號(hào)輸入管腳備注
    AD_CH0GPIO8與公共GND構(gòu)成信號(hào)回路
    AD_CH1GPIO9與公共GND構(gòu)成信號(hào)回路
    AD_CH2GPIO10與公共GND構(gòu)成信號(hào)回路
    AD_CH3GPIO11與公共GND構(gòu)成信號(hào)回路
    AD_CH4GPIO12與公共GND構(gòu)成信號(hào)回路
    AD_CH5GPIO13與公共GND構(gòu)成信號(hào)回路
    AD_CH6GPIO14與公共GND構(gòu)成信號(hào)回路
    AD_CH7GPIO15與公共GND構(gòu)成信號(hào)回路


     

            單通道差分輸入

     


    AD通道號(hào)輸入管腳輸入信號(hào)實(shí)際輸入信號(hào)
    AD_CH0GPIO8AD_CH0+AD_CH0+ / AD_CH0-
    GPIO9AD_CH0-


     

            雙通道差分輸入

     


    AD通道號(hào)輸入管腳輸入信號(hào)實(shí)際輸入信號(hào)
    AD_CH0GPIO8AD_CH0+AD_CH0+ / AD_CH0-
    GPIO9AD_CH0-
    AD_CH2GPIO10AD_CH2+AD_CH2+ / AD_CH2-
    GPIO11AD_CH2-


     

            4通道差分輸入

     


    AD通道號(hào)輸入管腳輸入信號(hào)實(shí)際輸入信號(hào)
    AD_CH0GPIO8AD_CH0+AD_CH0+ / AD_CH0-
    GPIO9AD_CH0-
    AD_CH2GPIO10AD_CH2+AD_CH2+ / AD_CH2-
    GPIO11AD_CH2-
    AD_CH4GPIO12AD_CH4+AD_CH4+ / AD_CH4-
    GPIO13AD_CH4-
    AD_CH6GPIO14AD_CH6+AD_CH6+ / AD_CH6-
    GPIO15AD_CH6-


     

            對(duì)于單端輸入,其輸入滿量程為0 – 2.5V,對(duì)應(yīng)的量化數(shù)據(jù)分別為0 – 4095(12-bit AD分辨率)。差分輸入時(shí),數(shù)據(jù)值與輸入電壓的關(guān)系如下表所示:

     


    AD轉(zhuǎn)換數(shù)據(jù)(HEX)CH+輸入電壓CH-輸入電壓備注
    4095(0xFFF)2.5V0V正向最大差
    2048(0x800)CH+ = CH-
    0(0x000)02.5V反向最大差


     

            在標(biāo)準(zhǔn)配置下,各AD通道的輸入阻抗大致為40KΩ。為了保證AD轉(zhuǎn)換的精度,建議前端輸入的模擬信號(hào),應(yīng)根據(jù)實(shí)際信號(hào)的特點(diǎn),加入適當(dāng)?shù)男盘?hào)調(diào)理單元。

     

    接口軟件說明

     

            為了操作EM9380的AD采集功能,首先需要打開硬件協(xié)處理器的驅(qū)動(dòng)程序,其設(shè)備文件名為”MCU2:”(注意是MCU2,而不是MCU1):

            #include// 數(shù)據(jù)類型定義

            HANDLE hMCU2;

            hMCU2 = CreateFile(_T(“MCU2:”), // name of device
                    GENERIC_READ|GENERIC_WRITE, // desired access
                    FILE_SHARE_READ|FILE_SHARE_WRITE, // sharing mode
                    NULL, // security attributes (ignored)
                    OPEN_EXISTING, // creation disposition
                    FILE_FLAG_RANDOM_ACCESS, // flags/attributes
                    NULL); // template file (ignored)

     

            驅(qū)動(dòng)程序MCU2通過DeviceIoControl,支持以下AD采集命令:

            MCU_GENERIC_ADC_SE1 // 單端輸入,單通道模式
            MCU_GENERIC_ADC_SE2 // 單端輸入,雙通道模式
            MCU_GENERIC_ADC_SE4 // 單端輸入,4通道模式
            MCU_GENERIC_ADC_SE8 // 單端輸入,8通道模式
            MCU_GENERIC_ADC_DI1 // 差分輸入,單通道模式
            MCU_GENERIC_ADC_DI2 // 差分輸入,雙通道模式
            MCU_GENERIC_ADC_DI4 // 差分輸入,4通道模式

     

            同時(shí)以上命令需通過以下的數(shù)據(jù)結(jié)構(gòu)來設(shè)置相關(guān)參數(shù):

            typedef struct
            {
                    BYTE ucSize; // 本數(shù)據(jù)結(jié)構(gòu)大小 = 24字節(jié)
                    BYTE ucCmd; // AD命令碼:MCU_GENERIC_ADC_XXX
                    DWORD dwPeriod; // 采樣間隔,單位為us,= 0:軟件觸發(fā) 
                    WORD wData[8]; // 返回的采集數(shù)據(jù)
                    bool bFlashed; // 保存本配置作為啟動(dòng)缺省功能
                    BYTE ucChkSum; // 校驗(yàn)和
            } MCU_ADC_INFO, *PMCU_ADC_INFO; // struct for ADC

     

            參數(shù)dwPeriod為采樣間隔,設(shè)置為0表示軟件觸發(fā)數(shù)據(jù)采集,不為0,則按設(shè)置的采樣間隔進(jìn)行AD轉(zhuǎn)換。最短采樣間隔為25us,即最高采樣率40Ksps。注意若啟動(dòng)多通道數(shù)據(jù)采集,則每通道的采樣周期為dwPeriod×通道數(shù)。

     

            當(dāng)dwPeriod不為零時(shí),wData[ ]的前三個(gè)值將作為輸入?yún)?shù),其中wData[0]表示采集的總樣點(diǎn)數(shù),wData[1]表示閾值窗口的上限值(最大值=4095),wData[2]表示閾值窗口的下限值(最小值=0)。通過這些參數(shù)的合理邏輯組合,就可實(shí)現(xiàn)以下4種數(shù)據(jù)形式的采集:

     


    dwPeriodwData[0]wData[1]wData[2]采集數(shù)據(jù)
    = 0---軟件觸發(fā),單點(diǎn)采集
    > 0通道數(shù)wData[1] > wData[2]閾值觸發(fā),單點(diǎn)采集
    > 0通道數(shù)×N00軟件觸發(fā),N點(diǎn)波形采集
    > 0通道數(shù)×NwData[1] > wData[2]閾值觸發(fā),N點(diǎn)波形采集


     

            對(duì)單點(diǎn)數(shù)據(jù)采集,MCU2驅(qū)動(dòng)將以MCU_ADC_INFO數(shù)據(jù)結(jié)構(gòu)的形式回傳采集結(jié)果,其中采集數(shù)據(jù)包含在wData[ ]中,分別對(duì)應(yīng)AD的CH0 – CH7。wData的數(shù)據(jù)格式為:

     


    16-bit AD轉(zhuǎn)換數(shù)據(jù)

    D15 – D12(4-bit)D11 – D0(12-bit)
    通道號(hào)(0 – 7)ADC實(shí)際轉(zhuǎn)換輸出的數(shù)據(jù)值(0 – 4095)


     

            對(duì)波形采集,為了提高效率,回傳的數(shù)據(jù)采用以下數(shù)據(jù)結(jié)構(gòu)的形式:
            typedef struct
            {
                    BYTE ucSize; // 本數(shù)據(jù)結(jié)構(gòu)大小 = 51字節(jié)
                    BYTE ucCmd; // AD命令碼:MCU_GENERIC_ADC_XXX
                    WORD wData[24]; // 返回的采集數(shù)據(jù)
                    BYTE ucChkSum; // 校驗(yàn)和
            } MCU_ADC_FLOW, *PMCU_ADC_FLOW; // struct for ADC

     

            24個(gè)采集數(shù)據(jù)將根據(jù)AD采集命令所使用的通道數(shù),順序循環(huán)排列。而每個(gè)數(shù)據(jù)的格式與單點(diǎn)采集數(shù)據(jù)的格式是一樣的。

     

            以下代碼實(shí)現(xiàn)單端輸入8通道,軟件觸發(fā)單點(diǎn)采集:
            MCU_ADC_INFO Info; //定義結(jié)構(gòu)對(duì)象

            memset(&Info, 0, sizeof(MCU_ADC_INFO));//清零
            //填寫所需的參數(shù)
            Info.ucSize = sizeof(MCU_ADC_INFO); 
            Info.ucCmd = MCU_GENERIC_ADC_SE8; //單端8通道輸入
            Info.dwPeriod = 0; //軟件觸發(fā),單點(diǎn)采集
            // 生成chksum字節(jié)
            Info.ucChkSum = ChkSum(&Info, sizeof(MCU_ADC_INFO)-1);

            // 調(diào)用DeviceIoControl
            if (!DeviceIoControl(hMCU2, // File handle to the driver
                    MCU_IOCTL_ACCESS, // I/O control code
                    &Info, // input buffer
                    sizeof(MCU_ADC_INFO), // in buffer size
                    &Info, // out buffer
                    sizeof(MCU_ADC_INFO), // out buffer size 
                    NULL, // pointer to number of bytes returned
                    NULL)) // ignored (=NULL)
            {
                    // 出錯(cuò)處理......
                    return FALSE;
            }

            // 對(duì)采集的數(shù)據(jù)Info.wData[]進(jìn)行處理......

    国产美女在线精品观看| 67194老司机精品午夜| 久久伊人精品青青草原日本| 国产精品成人免费观看| 九九免费久久这里有精品23| 中日韩精品视频在线观看| 国语自产拍精品香蕉在线播放| 久草热久草热线频97精品| 国自产精品手机在线观看视| 国产精品亚洲A∨天堂不卡| 亚洲国产精品一区二区第一页 | 牛牛本精品99久久精品| 精品国产乱码久久久久久| 国产精品嫩草影院线路| 国产乱人伦偷精品视频| 久久久99精品成人片中文字幕 | 2022精品天堂在线视频| 国产精品永久久久久久久久久| 国产精品亚洲а∨无码播放麻豆| 国产精品一品二区三区的使用体验| 亚洲国产精品18久久久久久| 2022国产成人福利精品视频| 精品国产a∨无码一区二区三区| 国产精品久久久久影院色| 95在线观看精品视频| 国产精品麻豆成人AV电影艾秋| 精品久久久无码中字| 日韩精品无码免费视频| 亚洲精品视频免费观看| 国产高清在线精品一区小说 | 2020国产欧洲精品视频| 亚洲爆乳精品无码一区二区| 国产精品蜜臂在线观看| 国产精品成人99久久久久| 国产在线观看高清精品| 国产精品三级在线观看无码| 97国产精品视频观看一| 在线精品自偷自拍无码中文| 国产精品亚洲а∨无码播放不卡 | 国产成人无码精品久久久性色| 久久亚洲AV午夜福利精品一区|