用于非基于 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 内核驱动程序(用于模拟传感器)的主要内容,如果未能解决你的问题,请参考以下文章
请教PIC单片机写I2C和SPI时,卡住在 while(!SSPIF);