英創(chuàng)公司推出了支持多通道同步采樣ADC的工控主板ESM7080,板載了8路16位同步AD,最高采樣率可達(dá)200KSPS,關(guān)于具體的指標(biāo)可以參考文章《英創(chuàng)推出多通道同步采樣ADC工控主板》中的介紹。
這套方案利用了CPU i.MX7D的異構(gòu)核心優(yōu)勢,使用Cortex-M4核心來控制8路AD,保證了數(shù)據(jù)讀取的實時性,M4讀取到數(shù)據(jù)后會通知Linux系統(tǒng),再由Linux系統(tǒng)從緩沖區(qū)中將M4存放的數(shù)據(jù)一次性讀出。為了方便客戶的使用,英創(chuàng)公司提供了Linux系統(tǒng)上的專用驅(qū)動,將這8路AD作為了IIO子系統(tǒng)(Linux Industrial I/O Subsystem)中的設(shè)備,這樣用戶就可以通過標(biāo)準(zhǔn)的IIO接口操作來讀取AD數(shù)據(jù),而不必關(guān)心和Cortex-M4核心相關(guān)的交互操作。下面就來介紹在ESM7080主板上采集數(shù)據(jù)的相關(guān)設(shè)置。
因為是實現(xiàn)的同步采樣,所以Linux系統(tǒng)中,將8路AD作為了一個整體的設(shè)備,設(shè)備目錄為/sys/bus/iio/devices/iio:device0/,目錄中的文件如下圖
其中比較重要的幾個文件的說明如下:
設(shè)備或目錄名稱 | 簡介 |
in_voltage_sampling_frequency | 設(shè)置或讀取當(dāng)前采樣率 |
sampling_frequency_available | 讀取in_voltage_sampling_frequency可以設(shè)置的有效值,具體見表2 |
in_voltage_scale | 設(shè)置或讀取當(dāng)前采樣電壓范圍,有兩個范圍,0表示-5v~+5v,1表示-10v~+10v |
in_voltage_scale_available | 讀取in_voltage_scale可以設(shè)置的值,即0和1 |
scan_elements(目錄) | 用于使能連續(xù)采樣通道 |
trigger(目錄) | 用于使能連續(xù)采樣的trigger |
buffer(目錄) | 用于開啟連續(xù)采樣 |
表1
sampling_frequency_available可以讀取出支持的采樣率:
設(shè)備名稱 | 支持的采樣率(Hz) |
sampling_frequency_available | 20,40,100,200,400,1000,2000,4000,10000,20000,40000,100000,200000 |
表2
表1中文件的讀取和寫入都可以通過標(biāo)準(zhǔn)文件的讀寫操作來實現(xiàn),也可以通過libiio庫提供的函數(shù)接口來進(jìn)行設(shè)置。
英創(chuàng)公司建議客戶還是通過libiio庫來實現(xiàn)連續(xù)采樣,在之前的文章中我們已經(jīng)做過詳細(xì)的介紹《基于Linux IIO接口的波形采集》。因為ESM7080主板的AD也是基于IIO子系統(tǒng)提供的接口,所以程序是完全一致的,這里就不再贅述了。下面說明關(guān)于ESM7080的AD在使用的時候需要注意的一些地方。
因為將8個同步采樣的AD通道作為了一個整體設(shè)備,所以一次讀取出的數(shù)據(jù)是以16字節(jié)為單位的(一個通道16位為2個字節(jié),一共8個通道),數(shù)據(jù)的具體排列方式如下:
字節(jié)偏移量 | 對應(yīng)數(shù)據(jù) |
0 | 通道1 |
2 | 通道2 |
4 | 通道3 |
6 | 通道4 |
8 | 通道5 |
10 | 通道6 |
12 | 通道7 |
14 | 通道8 |
16 | 通道0 |
... | ... |
表3
關(guān)于采集數(shù)據(jù)的時候負(fù)載情況,我們實際測試在100K和200K采樣率下,連續(xù)采集并將數(shù)據(jù)寫入到磁盤的過程中,系統(tǒng)負(fù)載的情況如下:
采樣率 | 負(fù)載情況 |
200K | 30% |
100K | 15% |
表4
根據(jù)表3的情況,可以看到在200K采樣率的情況下,還留有足夠的CPU資源給用戶進(jìn)行處理數(shù)據(jù)。
下面是在100K采樣率下進(jìn)行的一次波形采集測試。我們在通道1和通道2上分別接入了100Hz的正弦波和三角波,其余通道接入了一個固定電平信號,使用基于libiio實現(xiàn)的例程采樣了16000個點(每個通道2000個點),然后利用gnuplot工具將采樣值按照通道排列的格式繪制成曲線圖,結(jié)果如下:
可以看到圖中繪制每個通道采集的2000個點中,通道1和通道2剛好是2個周期。100K采樣率下,100Hz的波形每個周期應(yīng)該是采樣1000個點,剛好是對應(yīng)上的。另外6通道接入了固定電平信號,所以是一條直線。
對這套方案感興趣的客戶可以與英創(chuàng)公司的工程師聯(lián)系,索取相關(guān)資料和例程.
成都英創(chuàng)信息技術(shù)有限公司 028-8618 0660