0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

IIO子系統(tǒng)是什么

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-30 11:48 ? 次閱讀

IIO子系統(tǒng)簡介

IIO 全稱是 Industrial I/O,翻譯過來就是工業(yè) I/O,大家不要看到“工業(yè)”兩個字就覺得 IIO 是只用于工業(yè)領(lǐng)域的。大家一般在搜索 IIO 子系統(tǒng)的時候,會發(fā)現(xiàn)大多數(shù)講的都是 ADC,這是因為 IIO 就是為 ADC 類傳感器準備的,當然了 DAC 也是可以的。大家常用的陀螺儀、加速度計、電壓/電流測量芯片、光照傳感器、壓力傳感器等內(nèi)部都是有個 ADC,內(nèi)部 ADC 將原始的模擬數(shù)據(jù)轉(zhuǎn)換為數(shù)字量,然后通過其他的通信接口,比如 IIC、SPI 等傳輸給 SOC。

因此,當你使用的傳感器本質(zhì)是 ADC 或 DAC 器件的時候,可以優(yōu)先考慮使用 IIO 驅(qū)動框架。

1、iio_dev 結(jié)構(gòu)體

IIO 子系統(tǒng)使用結(jié)構(gòu)體 iio_dev 來描述一個具體 IIO 設(shè)備,此設(shè)備結(jié)構(gòu)體定義在include/linux/iio/iio.h 文件中

2、iio_dev 申請與釋放

在使用之前要先申請 iio_dev,申請函數(shù)為 iio_device_alloc,函數(shù)原型如下:

struct iio_dev *iio_device_alloc(int sizeof_priv)

sizeof_priv:私有數(shù)據(jù)內(nèi)存空間大小,一般我們會將自己定義的設(shè)備結(jié)構(gòu)體變量作為 iio_dev 的私有數(shù)據(jù),這樣可以直接通過 iio_device_alloc 函數(shù)同時完成 iio_dev 和設(shè)備結(jié)構(gòu)體變量的內(nèi)存申請。申請成功以后使用 iio_priv 函數(shù)來得到自定義的設(shè)備結(jié)構(gòu)體變量首地址。

返回值:如果申請成功就返回 iio_dev 首地址,如果失敗就返回 NULL。

3、iio_dev 注冊與注銷

前面分配好 iio_dev 以后就要初始化各種成員變量,初始化完成以后就需要將 iio_dev 注冊 到內(nèi)核中,需要用到 iio_device_register 函數(shù)

4、iio_info

iio_dev 有個成員變量:info,為 iio_info 結(jié)構(gòu)體指針變量,這個是我們在編寫 IIO 驅(qū)動的時候需要著重去實現(xiàn)的,因為用戶空間對設(shè)備的具體操作最終都會反映到 iio_info 里面。iio_info結(jié)構(gòu)體定義在 include/linux/iio/iio.h 中

5、iio_chan_spec

IIO 的核心就是通道,一個傳感器可能有多路數(shù)據(jù),比如一個 ADC 芯片支持 8 路采集,那么這個 ADC 就有 8 個通道。Linux 內(nèi)核使用 iio_chan_spec 結(jié)構(gòu)體來描述通道,定義在 include/linux/iio/iio.h 文件中。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2551

    文章

    51170

    瀏覽量

    754189
  • 子系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    109

    瀏覽量

    12412
收藏 人收藏

    評論

    相關(guān)推薦

    請問IIO軟件是做什么的?

    IIO軟件是做什么的?剛接觸AD9361,SD卡中的系統(tǒng)帶的軟件,可我看了半天,不知道具體該怎么設(shè)置波形,還有設(shè)置好的波形是輸出波形,還是輸入波形???
    發(fā)表于 08-03 06:58

    HC-SR04超聲波測距模塊調(diào)試方法

    ;okay";};2. 驅(qū)動編寫,筆者在iio子系統(tǒng)下進行驅(qū)動編寫,在路徑 kernel/drivers/iio/下創(chuàng)建ultrasonic/,參考這款傳感器的規(guī)格書,下面是部分驅(qū)動代碼
    發(fā)表于 02-14 16:16

    請問IIO Oscilloscope master代碼在linux系統(tǒng)下怎么打開

    `目前在學IIO Oscilloscope,在ubuntu系統(tǒng)下,不知道github下載的IIO Oscilloscope master代碼怎么打開,百度教程沒有找到,希望誰知道幫忙解答一下,萬分感激!!謝謝??!`
    發(fā)表于 02-27 12:09

    嵌入式Linux系統(tǒng)ADC按鍵驅(qū)動的相關(guān)資料分享

    設(shè)備樹節(jié)點RK3308支持SAR-ADC,我們工程默認已經(jīng)支持了該驅(qū)動,在rk3308.dtsi中可以找到節(jié)點:這個設(shè)備節(jié)點是在rk3308-evb-v10.dtsi中被開啟的:3 應用3.1 了解IIO子系統(tǒng)IIO
    發(fā)表于 12-24 08:24

    rk3288平臺上的adc驅(qū)動使用步驟與方法

    adc現(xiàn)在使用了iio子系統(tǒng),文件位置位于driver/iio/adc/rockchip_adc.c設(shè)備樹文件、adc: adc@ff100000 {compatible = "
    發(fā)表于 05-11 10:16

    分享一下如何在用戶空間操作IIO設(shè)備

    1、手把手教如何用Linux下IIO設(shè)備  IIO是 Industrial I/O 的縮寫,是Linux下為工業(yè)輸入輸出所設(shè)計的子系統(tǒng)。其主要目的是為模數(shù)轉(zhuǎn)換 (ADC) 或數(shù)模轉(zhuǎn)換 (DAC)或
    發(fā)表于 09-21 15:37

    請問IIO觸發(fā)緩沖區(qū)如何使用?

    我使用 ASM330LHH 作為 Linux IIO。添加了源和 DTS。我們發(fā)現(xiàn)/sys/bus/iio也增加了一個設(shè)備。我還檢查了從 sysfs 以直接模式讀取數(shù)據(jù)。因此,我認為H/W連接
    發(fā)表于 01-04 09:11

    OpenHarmony:全流程講解如何編寫ADC平臺驅(qū)動以及應用程序

    adc_iio_adapter.c決定,不可修改。adc_iio_adapter.c實際是對Linux IIO子系統(tǒng)進行操作來控制ADC。注意: channelNum:表示通道數(shù)量
    發(fā)表于 09-04 16:34

    Linux 開發(fā)IIO子系統(tǒng)入門

    前陣子工作上做了一些關(guān)于 ADC 的支持,由于現(xiàn)在 ADC 相關(guān)的支持都被移動到了 IIO (Industrial I/O) 子系統(tǒng)下,我查閱了一些關(guān)于 IIO 資料,包括書籍、文章、內(nèi)核文檔和代碼
    的頭像 發(fā)表于 10-27 10:44 ?4555次閱讀
    Linux 開發(fā)<b class='flag-5'>IIO</b><b class='flag-5'>子系統(tǒng)</b>入門

    AD7606 mbed IIO應用程序

    AD7606 mbed IIO應用程序
    發(fā)表于 03-22 13:57 ?13次下載
    AD7606 mbed <b class='flag-5'>IIO</b>應用程序

    AD7280A IIO鋰離子電池監(jiān)控系統(tǒng)Linux驅(qū)動程序

    AD7280A IIO鋰離子電池監(jiān)控系統(tǒng)Linux驅(qū)動程序
    發(fā)表于 04-14 20:31 ?2次下載
    AD7280A <b class='flag-5'>IIO</b>鋰離子電池監(jiān)控<b class='flag-5'>系統(tǒng)</b>Linux驅(qū)動程序

    IIO示波器的應用

    IIO示波器的應用
    發(fā)表于 05-15 13:09 ?8次下載
    <b class='flag-5'>IIO</b>示波器的應用

    手把手教如何用Linux下IIO設(shè)備(附代碼)

    IIO是 Industrial I/O 的縮寫,是Linux下為工業(yè)輸入輸出所設(shè)計的子系統(tǒng)。其主要目的是為模數(shù)轉(zhuǎn)換 (ADC) 或數(shù)模轉(zhuǎn)換 (DAC) 或兩者兼而有...
    發(fā)表于 01-25 16:01 ?1次下載
    手把手教如何用Linux下<b class='flag-5'>IIO</b>設(shè)備(附代碼)

    IIO驅(qū)動框架創(chuàng)建和相關(guān)配置

    IIO驅(qū)動框架創(chuàng)建 分析 IIO 子系統(tǒng)的時候大家應該看出了,IIO框架主要用于 ADC 類的傳感器,比如陀螺儀、加速度計、磁力計、光強度計等,這些傳感器基本都是IIC 或者 SPI
    的頭像 發(fā)表于 07-30 11:53 ?1424次閱讀

    Linux,IIO驅(qū)動完結(jié)有感

    1. 我錄制45天,你學完只需要1天 歷時1個半月,驅(qū)動大全IIO驅(qū)動完結(jié)了!20個視頻,時長5小時45分鐘。大綱如下: 01.1_IIO子系統(tǒng)簡化框架01.2_DHT11操作原理與編程思路
    的頭像 發(fā)表于 12-06 09:45 ?207次閱讀
    Linux,<b class='flag-5'>IIO</b>驅(qū)動完結(jié)有感