用于非基于 I2C/SPI 的传感器的 Linux 内核驱动程序(用于模拟传感器)

Posted

技术标签:

【中文标题】用于非基于 I2C/SPI 的传感器的 Linux 内核驱动程序(用于模拟传感器)【英文标题】:Linux Kernel drivers for non I2C/SPI based sensors (for analog sensors) 【发布时间】:2019-12-12 22:31:57 【问题描述】:

我最近开始学习 IIO 子系统,现在对 IIO 子系统中基于 SPI/I2C 的传感器非常熟悉(也使用 Regmap API)。

不过,今天我遇到了一个电位器传感器:http://wiki.seeedstudio.com/Grove-Rotary_Angle_Sensor/

它暴露了 4 个引脚作为 GND、VCC、NC 和 SIG。如果我必须将此传感器与我的树莓派一起使用并且只需要使用 Linux 内核,我将如何将传感器数据暴露给用户空间?

IIO 子系统中是否有此类设备的类别?

【问题讨论】:

【参考方案1】:

要读取这样的模拟电压,您需要一个 ADC(模数转换器),而 Raspberry Pi 没有内置 ADC。您可以为您的 Raspberry Pi 找到许多模拟输入帽中的任何一个,它们通常包含一个带有 ADC 的 SPI 芯片,可以通过 Linux spidev subsystem 或一些 higher level Python module 从用户空间访问。

IIO 子系统中有 ADC 支持,您可以加载相关的设备树覆盖,如下所述:https://jumpnowtek.com/rpi/Using-mcp3008-ADCs-with-Raspberry-Pis.html

【讨论】:

对不起,我有点困惑。我见过有人使用带 Raspberry Pi 的 DS18B20 温度传感器,中间没有 ADC,而且传感器既不是基于 SPI 也不是基于 I2C。该传感器如何进行通信?它适用于哪种协议。 @InsaneCoder DS18B20 是使用1wire protocol 的数字传感器。只需很少的额外硬件(一个或两个电阻)即可轻松地将任意数量的它们连接到 Raspberry Pi 上的 GPIO 引脚,并且有一个内核驱动程序可以与它们通信并检索温度样本。 那么这个gpio pin可以读取非数字的温度范围(比如[0-100])吗?司机叫什么? 驱动名为w1-gpio。网上有很多教程可以让你大致了解它的工作原理,比如这个:circuitbasics.com/…

以上是关于用于非基于 I2C/SPI 的传感器的 Linux 内核驱动程序(用于模拟传感器)的主要内容,如果未能解决你的问题,请参考以下文章

stm32wb, nucleo-wb55, 传感器, 硬件

请教PIC单片机写I2C和SPI时,卡住在 while(!SSPIF);

博世传感器调试笔记----加速度传感器BMA253

实战技能单片机bootloader的CANFD,I2C,SPI和串口方式更新APP视频教程(2022-08-01)

Regmap API 实验

linux中I2C驱动函数常用接口