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

Linux IIO接口的低成本8通道AD

 2022-5-12     作者:黃志超          494次

  ESM7200主板是英創(chuàng)公司推出的帶有8路單端3.3V/12-bit AD的低成本主板。主板上提供了8路AD,能夠支持多個(gè)通道單次采樣,或者單個(gè)通道連續(xù)采集。經(jīng)過(guò)測(cè)試在保證數(shù)據(jù)準(zhǔn)確性和系統(tǒng)讀取的情況下,連續(xù)采樣速率最高約為58kSPS。由于這8路AD都是CPU自帶的資源,性能上和專(zhuān)門(mén)的AD芯片還是有一定差距,所以主要面向的是需要單次采集或者單通道連續(xù)采集的應(yīng)用場(chǎng)景。


  如果應(yīng)用只是定時(shí)讀取一次AD的采樣值,那么使用ESM7200主板上提供的8路AD是可以滿(mǎn)足要求的。如果需要高速采集,ESM7200主板可以提供一路最高58kSPS采樣率的通道,還需要到達(dá)更高的要求的話(huà),就可以參考英創(chuàng)公司推出的專(zhuān)門(mén)的高速AD擴(kuò)展方案,比如:《ESM7000異構(gòu)CPU實(shí)時(shí)應(yīng)用之三 8路并行數(shù)采應(yīng)用程序》


  Linux系統(tǒng)中,AD功能都是基于IIO(Industrial I/O)子系統(tǒng)提供的,這是一個(gè)專(zhuān)門(mén)用于傳感器,ADC或DAC的子系統(tǒng),具體的介紹可以參考資料Linux Industrial I/O Subsystem。在ESM7200主板中,8路AD對(duì)應(yīng)的設(shè)備如下表:


管腳AD通道對(duì)應(yīng)設(shè)備名稱(chēng)索引號(hào)
E2AIN_CH1/sys/bus/iio/devices/iio:device0/ in_voltage0_raw0
E3AIN_CH2/sys/bus/iio/devices/iio:device0/ in_voltage1_raw1
E4AIN_CH3/sys/bus/iio/devices/iio:device0/ in_voltage2_raw2
E5AIN_CH4/sys/bus/iio/devices/iio:device0/ in_voltage3_raw3
E6AIN_CH5/sys/bus/iio/devices/iio:device0/ in_voltage4_raw4
E7AIN_CH6/sys/bus/iio/devices/iio:device0/ in_voltage5_raw5
E8AIN_CH7/sys/bus/iio/devices/iio:device0/ in_voltage8_raw8
E9AIN_CH8/sys/bus/iio/devices/iio:device0/ in_voltage9_raw9


  可以看到每一路AD都對(duì)應(yīng)一個(gè)IIO設(shè)備節(jié)點(diǎn),當(dāng)要讀取AD的值的時(shí)候,就需要使用這些設(shè)備節(jié)點(diǎn)。我們首先介紹單次采樣的讀取方法。


  本次測(cè)試使用的是ESM7200主板加上ESMARC系列通用評(píng)估底板,在評(píng)估底板上8路AD信號(hào)被引到了CN25(ISA)的端子上,因?yàn)镋SMARC系列部分主板型號(hào)是支持ISA總線的,而ESM7200沒(méi)有ISA總線,取而代之的是8路AD,具體的定義可參考下表:


信號(hào)名稱(chēng)及簡(jiǎn)要描述CN25信號(hào)名稱(chēng)及簡(jiǎn)要描述
PIN#PIN#

12
AIN_CH134AIN_CH5
AIN_CH256AIN_CH6
AIN_CH378AIN_CH7
AIN_CH4910AIN_CH8

1112

1314

1516

1718

1920GND,模擬地


  客戶(hù)如果考慮自己設(shè)計(jì)底板,可以參考表1查詢(xún)每一路AD在主板上對(duì)應(yīng)的管腳。如果是使用ESMARC評(píng)估底板進(jìn)行測(cè)試和評(píng)估,可以參考表2連接外部模擬信號(hào)進(jìn)行測(cè)試。


  為了方便客戶(hù)操作IIO子系統(tǒng)提供的各種功能,我們移植了ADI公司提供的libiio,這個(gè)庫(kù)文件抽象了和硬件相關(guān)的底層細(xì)節(jié),并提供了簡(jiǎn)單而完整的編程接口,可用于高級(jí)項(xiàng)目的編程。下面我們就基于libiio實(shí)現(xiàn)單次讀取操作。


  首先是獲取IIO設(shè)備,這部分代碼在ESMARC系統(tǒng)主板上是固定的,用戶(hù)可以直接使用。


struct iio_device *dev;  
  
/* 獲取IIO設(shè)備 */  
ctx = iio_create_context_from_uri("local:");  
  
dev = iio_context_get_device(ctx, 0);  
if (!dev) {  
    fprintf(stderr"Device not found\n");  
    iio_context_destroy(ctx);  
    return EXIT_FAILURE;  
}

 

  然后是指定對(duì)應(yīng)的通道,這里填入AD通道對(duì)應(yīng)的index號(hào)(參考表1),根據(jù)實(shí)際使用的通道填寫(xiě)就行了。


/* 獲取對(duì)應(yīng)的IIO通道,可以根據(jù)實(shí)際情況修改成需要的通道 */  
ch = iio_device_get_channel(dev, 9);  
if (!iio_channel_is_scan_element(ch) ||  
    iio_channel_is_output(ch)) {  
    printf("Can not get channel %d\n", ch);  
    return -1;  
}

 

獲取到對(duì)應(yīng)的通道后,就可以直接讀取通道的原始值了,注意讀取來(lái)的數(shù)據(jù)是字符串。


const char *attr = "raw";  
char *val[10];  
  
/* 讀取channel的原始值 */  
ret = iio_channel_attr_read(ch, attr, &val, 10);  
if (ret <= 0) {  
    printf("ERROR: while reading '%s': %d\n",  
    attr, ret);  
}  
  
/* 數(shù)據(jù)處理,這里將數(shù)據(jù)直接打印出來(lái) 
 * 用戶(hù)可以根據(jù)實(shí)際的情況進(jìn)行處理,比如寫(xiě)入到記錄文件中 
 * */  
printf("raw value: %s\n", val);

 

  通過(guò)libiio很簡(jiǎn)單就能夠?qū)?duì)應(yīng)通道的值讀取出來(lái),單次讀取的方式還可以采用標(biāo)準(zhǔn)的文件讀取方式(Linux系統(tǒng)中所有設(shè)備都是文件),在之前的文章中我們已經(jīng)介紹過(guò)了《英創(chuàng)公司Linux主板低成本AD方案介紹》,用戶(hù)可以根據(jù)自己的習(xí)慣選擇。


  感興趣的客戶(hù)可以聯(lián)系英創(chuàng)的工程師索要例程的代碼。在后續(xù)的文章中,我們將介紹低成本方案中如何實(shí)現(xiàn)單路的連續(xù)采樣。

主站蜘蛛池模板: 夜色55夜色66亚洲精品网站| 青青草在线视频免费观看| 日本特黄一级| 在线亚洲国产精品区| 国产99久9在线视频| 国产精品情侣| 黑人一区二区| 国产精品第二页在线播放| 麻豆网站| 手机看片日韩在线| 伊人222综合| 一区二区三区www| 天天玩夜夜操| 中文字幕专区高清在线观看| 成人mv高清在线| 国产乱码在线精品可播放| 日本中文字幕乱码aa高清电影| 亚洲综合电影| pans写真福利视频在线| 久久精品国产国产精品四凭| 毛片网站在线观看| 亚洲精品aaa揭晓| 色播在线永久免费视频网站| 欧美黄www免费| 国产大片免费观看网站| 国产精品区网红主播在线观看| 特黄特色大片免费播放| 最新欧美一级视频| 91视频精选| www.色中色| 国产成人精品视频免费大全| 国产亚洲欧美日韩v在线| 久久国产免费一区| 久久性视频| 乱色美www女麻豆| 欧美日韩第一区| 欧美午夜影院| 欧美日穴| 美日韩黄色大片| 欧美成人精品手机在线观看| 欧美亚洲国产精品第一页|