问题标签 [iio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 读取一个字(2 字节)而不提供来自用户空间的寄存器地址
我正在尝试从用户空间中的 C 读取 i2c 环境光传感器 BH1750。我在 Linux 上使用 BeagleBone 口袋。
数据表说,在测量操作之后,需要使用以下 i2c 序列读取结果:S Adr Rd (A) (Data) A (Data) NA P
.
我遇到的问题:我发现的所有示例/命令要么只读取 1 个字节,要么需要一个寄存器地址才能读取更多。
我找到的最接近的是以下命令:i2c_master_recv()
. 但是我对文档的解释是这个命令用于内核设备驱动程序。
如何从用户空间发出这样的 I2C 读取序列?
linux-kernel - 如何将数据从内核传输到应用程序?
我有一个 ADC 设备,我为它写了一个驱动程序,驱动程序运行良好。我想将示例数据从驱动程序发送到应用程序。
我选择fasync方式,使用一个SIGIO信号来通知应用程序可以从驱动中读取数据。但我发现有时应用程序对信号没有响应,尤其是信号频率很高(约 1000hz)。而当我做一些其他的工作比如使用chrome时,它会影响信号响应。
总之,我的方法很不稳定。
你有一些关于在高频情况下将数据传输到应用程序的稳定方法或建议吗?
c - 在 Linux 上通过 libgpiod 从 GPIO 读取时丢失数据位
我在嵌入式定制板上使用 Debian (8.3.0-6) 并使用 dht11 传感器。
简而言之,
我需要从 GPIO 引脚读取 40 位,每个位最多需要 70 微秒。当最大 28us 或 70us 位电平为高时,分别表示为逻辑 0 或 1。(所以我对每个位都有一个超时控制器,如果一个位需要超过 80us,我需要停止该过程。)。
在我的情况下,有时我可以正确读取所有 40 位,但有时我不能这样做,并且 libgpiod 的功能缺少该位(我的代码如下)。我试图弄清楚为什么我无法阅读并失去一点,这是什么原因。但我还没有找到一个明智的答案。所以我想知道我错过了什么?,GPIO编程的正确方法是什么?
gpiod_line_get_value(line);
这是我想向您展示的内容,我如何理解我缺少的东西?每当我捕捉到一点时,我都会在位的上升沿和下降沿设置和重置另一个 GPIO 引脚(这样我就可以看到哪个位丢失了)。此外,据我所知,我总是连续丢失一位上的两个边沿或两位上的一个边沿(上升和下降或下降和上升)。在第一张图片中,您可以看到我错过了哪一位,第二张是当我正确读取所有位时。
这是我的代码:
python - BMP280 温度读数 0x000FFFF0
我有一个使用 IC2 接口(地址 0x76)连接到 Raspberry Pi 3的 BMP280( GYBMP280 数据表)。GYBMP280 连接到 3.3V(引脚 1)。
压力读数似乎很好——它的波动和预期的一样小。
但是,温度读数始终为 [255,255,0] = 0x000FFFF0。我用红外温度计确认我的传感器有一个合理的温度(大约 70F),在检测范围内。
我已经将我计划使用的库提炼成一个简短的测试程序,它只是初始化 GYBMP280 并读取适当的寄存器,见下文。
Bosch 数据表的第 24页显示了内存映射。
我做错了什么还是模块缺陷?
linux-device-driver - 为 Raspberry Pi 4b 实现 AD7606 驱动程序
我正在尝试在 Raspberry Pi 4B+ 上实现适用于 Linux 的 ADC AD7606 设备驱动程序,以便通过 SPI 尽可能快地从所有通道读取数据。内核版本为 v5.10.83,编译和安装内核时支持 AD7606 和 AD7606_SPI 作为模块 ( make menuconfig
)。
设备树覆盖是通过使用 Analog Devices https://wiki.analog.com/resources/tools-software/linux-drivers/iio-adc/ad7606上的示例创建的,现在是这样的:
覆盖在/boot/config.txt中激活, SPI 的还原 DT 部分如下所示:
在激活此覆盖的内核启动期间,我收到内核消息:
如何解决此问题或进行故障排除?
python - 如何使用 Python 从 Rapsberry 获取 i2c 值?
我使用 ads1115 从模拟传感器获取值到树莓派 3,但我很难弄清楚如何从 python 中获取它们。
我使用 SMBus 库来获取 i2c 值,但我找不到如何实际获取模拟 0AIN0
通道值。我发现 ads1115 的 i2c 地址是,0x48
但我找不到 AIN0 通道的地址,因此我没有命令的第二个参数,smbus.read_byte_data(0x48, ???)
我尝试了一些地址,例如0x00
,0x01
但它总是给我相同的值即使传感器值应该改变。这是我的代码: