问题标签 [smbus]
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.
linux - 使用 /dev/i2c-%d 对 I2C 进行 Bitbanging
是否可以控制 i2c 的数据/时钟引脚以进行 bitbanging /dev/i2c-%d
?如果不是,还有哪些其他选项可用于控制连接到机器的 i2c 引脚?我试过 SMBus 但根据SMBus 协议摘要:
在大多数纯 SMBus 适配器上根本无法处理普通的 I2C 命令
raspberry-pi3 - RPI 上的 SMBUS 给出 IOError: [Errno 121] 远程 I/O 错误
我尝试过通过 I2C 在 RPi3 和 stm32 之间进行通信。首先我已经安装了 i2c-tools 和 python-smbus。总而言之,我在 RPI 上使用了 python 脚本,如下所示:
当我运行脚本时,我可以看到以下错误:
STM32 配置为 I2C 从机,两个设备都正确连接(SDA、SCL 和 GND)。我怎么知道?我已经使用 BCM2835 库制作了程序。C 程序正常工作。C 程序发送缓冲区没有任何错误。STM32 也收到缓冲区没有任何错误。你能告诉我,我做错了什么吗?
先感谢您。
perl - I2C:Raspberry Pi(主)读取 Arduino(从)
我想通过 I2C 使用我的 Raspberry Pi 从我的 Arduino Mega(以及另一个项目中的 Arduino Micro)中读取数据块。代码必须在 Perl 中,因为它是我的 Home-Automation-Server 的插件。
我正在使用Device::SMBus
接口并且连接正常,我能够写入和读取单个字节。我什至可以writeBlockData
与注册地址一起使用0x00
。我随机发现这个地址有效。
但是当我想要时readBlockData
,似乎没有注册地址起作用。
有谁知道正确的寄存器地址,或者这甚至不是导致错误的问题?
提前致谢
raspberry-pi3 - 我如何通过 i2c 从 Rpi 作为主机将多个浮点数据写入 Arduino?
我读了很多帖子 Rpi 如何通过 Arduino 通过 i2c 接收浮点数据,Rpi 作为主控。
但我需要将浮点值写入 arduino,但我没有找到任何示例。我想使用 python smbus。
任何人有一个例子?
非常感谢!
python-3.x - 在 Raspberry Pi 3 B+ 上使用 Python 3 和 smbus2 操作 AD5272
我在 Raspberry Pi 3 B+ 上使用 Python 3 操作 AD5272 时遇到问题。AD5272是带I2C接口的数控变阻器(我的部分电阻为20 kOhm)。
问题如下:
A 和 W 端子之间的电阻不会改变我尝试设置的任何位置,并且保持在 10KOhm 左右。(默认情况下,当 AD5272 开启时,将在那里设置全电阻的一半)。当我从 RDAC 读取电阻时 - 读取零电阻。
这是我的代码:
输出是:
电脑:树莓派 3,型号 B+
操作系统:Raspbian 9
Python版本:3.5.3
I2C 封装:smbus2
零件编号:AD5272BRMZ-20
数据表:http: //www.farnell.com/datasheets/1706490.pdf
我做错了什么以及如何解决?
零件的接线经过三重检查。无论我试图在那里写入什么值,从 RDAC 读取的内容总是相同的。我尝试了两个命令:
和
结果总是一样的:阻力没有改变。用外部欧姆计装置检查电阻。
请帮忙!
linux-kernel - 构建 I2C 结构
您好,我正在查看此文档。 https://www.kernel.org/doc/html/v4.11/driver-api/i2c.html 我的目标只是使用 I2C 总线将一些数据写入 EEPROM。我对使用哪些函数以及如何填充这些函数所需的结构有点困惑。我的猜测是我需要创建一个 i2c_client 来代表 EEPROM。我有这个设备树中 EEPROM 的位置。
我将如何用这些数据填充 i2c_client 结构?
然后我猜我会使用这个功能
int i2c_master_send(const struct i2c_client * client, const char * buf, int count)
并为它提供客户端结构和我要编写的字符串以及该字符串的长度,并规定它小于 64k。在这种情况下CPU是主控吗?
我需要包含哪些头文件才能使用文档提供的函数和结构?
谢谢。
performance - Silabs efm8bb3 在 smbus/i2c 主传输上非常慢
在使用 Simplicity Studio 和 Silabs EFM8BB3(基于 8051 的 SoC)时,我观察到传输速率非常慢,每个字节传输之间存在巨大的暂停(长达 60 毫秒),以及(长达 160 毫秒)在 smbus 主接口上的 i2c 协议上的完整消息之间。
为什么传输速度这么慢,有什么办法可以解决吗?
driver - 如何通过 pci 设备中的 SMBus/I2C 访问(读/写)EEPROM 设备?(Linux)
我有一个支持 SMBus/I2C 的带有 EEPROM 的 PCI 设备。我想创建一个可以读取和写入目标 EEPROM 的用户空间应用程序 (Linux)。类似于 IPMI 在每个 SSD/NVME 设备上查询 VPD 信息时所做的事情。但是,我很难查询目标 i2c 总线和 i2c 设备。我正在使用 i2cdetect 查询 i2c 总线,但我无法定位是否检测到我的目标设备。问题,我还需要知道我的设备连接到的 i2c 总线/适配器吗?这是怎么做的?我一直在研究如何创建应用程序,甚至在考虑开发驱动程序。
我已经解决这个问题好几个星期了,希望有人可以帮助我解决这个问题。非常感谢!!!
python - SMBus write_i2c_block_data() 命令
所以我在一个月前开始了一个使用 I2C 通信的微控制器项目,除了 python 之外什么都不懂。
我必须与使用 ASCII 字符串进行通信的蠕动泵交谈。所以我的设置目前由 Raspberry Pi、I2C 总线、Arduino 和蠕动泵组成。Arduino 仅用作电源。我认为一个好的起点就是尝试打开和关闭泵 LED。LED 开的代码是“L,1”,LED 关的代码是“L,0”。(“”表示里面是绝对码)。[链接] https://www.atlas-scientific.com/_files/_datasheets/_peristaltic/EZO_PMP_Datasheet.pdf
通过在 python 中使用 smbus.SMBus,我通过 write_i2c_block_data 的命令发送了数据。smbus 的文档提供以下内容:write_i2c_block_data(int addr,char cmd,long vals[]) 但是我不明白“char cmd”是什么意思。我不能在那里放一个字符串命令,它只有在我放一个整数时才起作用。
这是代码:
通过 raspberry Pi 命令提示符运行此代码后,泵 LED 在给定的时间范围内开始闪烁。不幸的是,它从未停止闪烁,并且当我使用 i2ctools 命令搜索它时也没有出现i2cdetect -y 1
我假设泵的芯片现在处于无限循环中。
我的问题是: 1. 应该如何使用 write_i2c_block_data() 命令以及它需要什么参数。目前我认为第一个参数是从地址,第二个是流的初始字节,第三个参数是要发送的流整数值的其余部分。2. 泵卡在无限循环中可能出了什么问题,我该如何解决