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

EM9380多通道AD數據采集

 2013-8-6              

        在工業控制應用、特別是要求閉環控制的實時應用中,通常都需要實時采集模擬信號。因此作為一款面向實時控制應用的工控主板EM9380,配置了最多可達8路的AD轉換單元。為了實現閉環控制的高效操作,AD轉換是由板上獨立運行的硬件協處理器(Cortex-M3)來直接操作。應用程序通過驅動程序,其設備文件名為“MCU2:”,來操作AD的功能。在標準配置的EM9380中,其AD單元的基本技術特性包括: 

 

        ?  單端輸入采集,可進一步選擇單通道、雙通道、4通道及8通道模式。 
        ?  差分輸入采集,可進一步選擇單通道、雙通道及4通道模式。 
        ?  采集觸發模式方面,支持軟件觸發和閾值觸發兩種模式。軟件觸發指一旦應用程序調用相關API函數,即進行數據采集;而閾值觸發模式是指當應用程序啟動AD采集后,

            只有當輸入的數據超出所設置的門限閾值時,才開始采集數據,這種模式廣泛應用于狀態監測及波形捕捉等應用。 
        ?  采集數據方面,支持單點采集和波形采集兩種模式。單點采集指每個通道僅采集一個樣點;而波形采集則是按設置的采樣間隔,采集一定長度的數據序列,這種模式一般

            應用于需要分析波形數據的場合,如需要做FFT,獲得波形的頻譜特征。

 

        本文后續部分將針對EM9380的多通道AD在硬件、軟件方面的特性,具體介紹實現數據采集的相關步驟。

 

AD通道的硬件接口說明

 

        EM9380中與AD關聯的管腳是GPIO8 – GPIO15,這8路GPIO在上電時的缺省配置是數字輸入模式。只有當應用程序調用AD轉換的API時,其相應的管腳才會轉換為模擬輸入狀態。EM9380共支持7種輸入模式,每種模式使用固定的通道配置,未使用的管腳則保持在GPIO模式。輸入模式與具體管腳的關系列表如下:

 

        單通道單端輸入

 


AD通道號信號輸入管腳備注
AD_CH0GPIO8與公共GND構成信號回路


 

        雙通道單端輸入

 


AD通道號信號輸入管腳備注
AD_CH0GPIO8與公共GND構成信號回路
AD_CH1GPIO9與公共GND構成信號回路


 

        4通道單端輸入

 


AD通道號信號輸入管腳備注
AD_CH0GPIO8與公共GND構成信號回路
AD_CH1GPIO9與公共GND構成信號回路
AD_CH2GPIO10與公共GND構成信號回路
AD_CH3GPIO11與公共GND構成信號回路


 

        8通道單端輸入

 


AD通道號信號輸入管腳備注
AD_CH0GPIO8與公共GND構成信號回路
AD_CH1GPIO9與公共GND構成信號回路
AD_CH2GPIO10與公共GND構成信號回路
AD_CH3GPIO11與公共GND構成信號回路
AD_CH4GPIO12與公共GND構成信號回路
AD_CH5GPIO13與公共GND構成信號回路
AD_CH6GPIO14與公共GND構成信號回路
AD_CH7GPIO15與公共GND構成信號回路


 

        單通道差分輸入

 


AD通道號輸入管腳輸入信號實際輸入信號
AD_CH0GPIO8AD_CH0+AD_CH0+ / AD_CH0-
GPIO9AD_CH0-


 

        雙通道差分輸入

 


AD通道號輸入管腳輸入信號實際輸入信號
AD_CH0GPIO8AD_CH0+AD_CH0+ / AD_CH0-
GPIO9AD_CH0-
AD_CH2GPIO10AD_CH2+AD_CH2+ / AD_CH2-
GPIO11AD_CH2-


 

        4通道差分輸入

 


AD通道號輸入管腳輸入信號實際輸入信號
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-


 

        對于單端輸入,其輸入滿量程為0 – 2.5V,對應的量化數據分別為0 – 4095(12-bit AD分辨率)。差分輸入時,數據值與輸入電壓的關系如下表所示:

 


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


 

        在標準配置下,各AD通道的輸入阻抗大致為40KΩ。為了保證AD轉換的精度,建議前端輸入的模擬信號,應根據實際信號的特點,加入適當的信號調理單元。

 

接口軟件說明

 

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

        #include// 數據類型定義

        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)

 

        驅動程序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通道模式

 

        同時以上命令需通過以下的數據結構來設置相關參數:

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

 

        參數dwPeriod為采樣間隔,設置為0表示軟件觸發數據采集,不為0,則按設置的采樣間隔進行AD轉換。最短采樣間隔為25us,即最高采樣率40Ksps。注意若啟動多通道數據采集,則每通道的采樣周期為dwPeriod×通道數。

 

        當dwPeriod不為零時,wData[ ]的前三個值將作為輸入參數,其中wData[0]表示采集的總樣點數,wData[1]表示閾值窗口的上限值(最大值=4095),wData[2]表示閾值窗口的下限值(最小值=0)。通過這些參數的合理邏輯組合,就可實現以下4種數據形式的采集:

 


dwPeriodwData[0]wData[1]wData[2]采集數據
= 0---軟件觸發,單點采集
> 0通道數wData[1] > wData[2]閾值觸發,單點采集
> 0通道數×N00軟件觸發,N點波形采集
> 0通道數×NwData[1] > wData[2]閾值觸發,N點波形采集


 

        對單點數據采集,MCU2驅動將以MCU_ADC_INFO數據結構的形式回傳采集結果,其中采集數據包含在wData[ ]中,分別對應AD的CH0 – CH7。wData的數據格式為:

 


16-bit AD轉換數據

D15 – D12(4-bit)D11 – D0(12-bit)
通道號(0 – 7)ADC實際轉換輸出的數據值(0 – 4095)


 

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

 

        24個采集數據將根據AD采集命令所使用的通道數,順序循環排列。而每個數據的格式與單點采集數據的格式是一樣的。

 

        以下代碼實現單端輸入8通道,軟件觸發單點采集:
        MCU_ADC_INFO Info; //定義結構對象

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

        // 調用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)
        {
                // 出錯處理......
                return FALSE;
        }

        // 對采集的數據Info.wData[]進行處理......

主站蜘蛛池模板: 日韩区在线观看| 2022av视频| 亚洲欧美日韩高清一区二区三区| 国产欧美精品区一区二区三区| 精品国产日韩亚洲一区91| 久99久视频| 日韩欧美第一区二区三区| 一区二区三区久久精品| 九色91蝌蚪| 日韩一区二区不卡| 亚洲第一免费视频| 免费看欧美一级特黄a毛片| 国产成人 免费观看| 美国免费高清一级毛片| sese在线| 国产欧美日韩亚洲精品区2345| 麻豆精品久久精品色综合| 五月婷婷综合在线视频| 亚洲图片二区| 91老色批网站免费看| 一级毛片黄| 久久久精品在观看999| 日韩国产有码在线观看视频| 亚洲免费在线视频播放| 在线国产二区| 多女多p多杂交视频在线观看| 欧美一级黄色片视频| 国产一区二区三区不卡在线观看| 国产福利在线观看永久免费| 看一级黄色大片| 黄色一级片毛片| 麻豆射区| 菠萝菠萝蜜在线看7| 12306播播影院午夜爱我影院| 国产1区2区3区在线观看| 激情欧美成人狠狠色金八天国| 久久亚洲美女久久久久| 美女国产一区| 久久综合亚洲一区二区三区| 日本人爱爱视频| 中文字幕电影在线观看|