IIO子系統(tǒng)簡(jiǎn)介
IIO 全稱是 Industrial I/O,翻譯過(guò)來(lái)就是工業(yè) I/O,大家不要看到“工業(yè)”兩個(gè)字就覺(jué)得 IIO 是只用于工業(yè)領(lǐng)域的。大家一般在搜索 IIO 子系統(tǒng)的時(shí)候,會(huì)發(fā)現(xiàn)大多數(shù)講的都是 ADC,這是因?yàn)?IIO 就是為 ADC 類傳感器準(zhǔn)備的,當(dāng)然了 DAC 也是可以的。大家常用的陀螺儀、加速度計(jì)、電壓/電流測(cè)量芯片、光照傳感器、壓力傳感器等內(nèi)部都是有個(gè) ADC,內(nèi)部 ADC 將原始的模擬數(shù)據(jù)轉(zhuǎn)換為數(shù)字量,然后通過(guò)其他的通信接口,比如 IIC、SPI 等傳輸給 SOC。
因此,當(dāng)你使用的傳感器本質(zhì)是 ADC 或 DAC 器件的時(shí)候,可以優(yōu)先考慮使用 IIO 驅(qū)動(dòng)框架。
1、iio_dev 結(jié)構(gòu)體
IIO 子系統(tǒng)使用結(jié)構(gòu)體 iio_dev 來(lái)描述一個(gè)具體 IIO 設(shè)備,此設(shè)備結(jié)構(gòu)體定義在include/linux/iio/iio.h 文件中
2、iio_dev 申請(qǐng)與釋放
在使用之前要先申請(qǐng) iio_dev,申請(qǐng)函數(shù)為 iio_device_alloc,函數(shù)原型如下:
struct iio_dev *iio_device_alloc(int sizeof_priv)
sizeof_priv:私有數(shù)據(jù)內(nèi)存空間大小,一般我們會(huì)將自己定義的設(shè)備結(jié)構(gòu)體變量作為 iio_dev 的私有數(shù)據(jù),這樣可以直接通過(guò) iio_device_alloc 函數(shù)同時(shí)完成 iio_dev 和設(shè)備結(jié)構(gòu)體變量的內(nèi)存申請(qǐng)。申請(qǐng)成功以后使用 iio_priv 函數(shù)來(lái)得到自定義的設(shè)備結(jié)構(gòu)體變量首地址。
返回值:如果申請(qǐng)成功就返回 iio_dev 首地址,如果失敗就返回 NULL。
3、iio_dev 注冊(cè)與注銷
前面分配好 iio_dev 以后就要初始化各種成員變量,初始化完成以后就需要將 iio_dev 注冊(cè) 到內(nèi)核中,需要用到 iio_device_register 函數(shù)
4、iio_info
iio_dev 有個(gè)成員變量:info,為 iio_info 結(jié)構(gòu)體指針變量,這個(gè)是我們?cè)诰帉?IIO 驅(qū)動(dòng)的時(shí)候需要著重去實(shí)現(xiàn)的,因?yàn)橛脩艨臻g對(duì)設(shè)備的具體操作最終都會(huì)反映到 iio_info 里面。iio_info結(jié)構(gòu)體定義在 include/linux/iio/iio.h 中
5、iio_chan_spec
IIO 的核心就是通道,一個(gè)傳感器可能有多路數(shù)據(jù),比如一個(gè) ADC 芯片支持 8 路采集,那么這個(gè) ADC 就有 8 個(gè)通道。Linux 內(nèi)核使用 iio_chan_spec 結(jié)構(gòu)體來(lái)描述通道,定義在 include/linux/iio/iio.h 文件中。
-
傳感器
+關(guān)注
關(guān)注
2564文章
52724瀏覽量
764770 -
子系統(tǒng)
+關(guān)注
關(guān)注
0文章
115瀏覽量
12718
發(fā)布評(píng)論請(qǐng)先 登錄
請(qǐng)問(wèn)IIO軟件是做什么的?
HC-SR04超聲波測(cè)距模塊調(diào)試方法
請(qǐng)問(wèn)IIO Oscilloscope master代碼在linux系統(tǒng)下怎么打開
嵌入式Linux系統(tǒng)ADC按鍵驅(qū)動(dòng)的相關(guān)資料分享
rk3288平臺(tái)上的adc驅(qū)動(dòng)使用步驟與方法
分享一下如何在用戶空間操作IIO設(shè)備
請(qǐng)問(wèn)IIO觸發(fā)緩沖區(qū)如何使用?
OpenHarmony:全流程講解如何編寫ADC平臺(tái)驅(qū)動(dòng)以及應(yīng)用程序
Linux 開發(fā)IIO子系統(tǒng)入門

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

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

IIO驅(qū)動(dòng)框架創(chuàng)建和相關(guān)配置
Linux,IIO驅(qū)動(dòng)完結(jié)有感

評(píng)論