问题标签 [i2c]
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.
python - python smbus/i2c 频率
我想更改 i2c 总线频率以允许使用稍长的电缆。
我正在使用 python-smbus 包,它工作得很好,但是,我无法找到如何设置总线频率。
我浏览了文档,但找不到任何与设置总线参数相关的东西。
这是可以在 python 中完成的任何事情,还是我需要更低级别的东西?
我正在使用 Raspberry PI,它是一种 ARM 架构。
pic - PIC16F88、portb.bit6 和 I2C
我的 PIC16F88 有一个奇怪的问题。我有一个通过 I2C 连接的 EEPROM,它可以完美地工作,直到我写入 portb.bit6。从那时起,我开始从我的 EEPROM 中获取垃圾。我尝试明确禁用 Timer 1,它使用 portb.6 进行振荡器输出,但这没有帮助。我尝试从 PIC 引脚(引脚 12)上剪下走线,这样就没有任何物理连接,这没有帮助。我的 C 代码很简单,portb.6 = 0 或 portb.6 = 1。无论哪种方式,通过 I2C 读取 EEPROM 都将永远失败。生成的 ASM 代码看起来不错。这个问题出现在我尝试过的每块板上,所以它没有本地化到一个 PCB。我很迷惑。有什么建议么?
linux - 未检测到 OMAP 3 Linux I2C SMBUS 智能电池 (SBS)
我正在使用 OMAP 3730 开发嵌入式 Linux 项目。我们使用的是 3.2.23 版内核。I2C 工作正常,我可以在 2 号总线上看到板上的各种传感器。I2C 总线 #3 仅连接了一个智能电池,我可以卸下电源线,电池保持电路板运行。问题是我无法检测或扫描智能电池。我已经尝试了 i2ctools 中的各种程序,但没有成功。我们将电路板连接到示波器,可以看到总线 #3 上的活动。我还启用了内核中设备驱动程序 > I2C 支持下的每个相关选项。
如何在 i2c 总线上查看我的智能电池?我需要在内核中启用其他功能吗?
debugging - PIC24HJ256GP610/610A 差异导致的 RTCC 的 I2C 读/写问题?
我在使用 PIC24HJ256GP610A 上的 I2C 模块时遇到问题。我的代码(见下面的片段)在 PIC24HJ256GP610 [注意:不是 610A] 上运行得非常好。我正在使用 I2C 总线与 DS1374 RTCC 进行通信。但是在 610A 上,当尝试使用 I2C 向 RTCC 写入值时轮询 ACKSTAT 位时,它会卡住。此外,大多数情况下,通过 I2C 读取值时 RTCC 值不会增加(有时它确实会增加)。有任何想法吗?处理 I2C 模块的 610 和 610A 之间是否存在配置位/模式/设置差异?我试过换掉 RTCC 芯片,换掉处理器。所以,这里唯一的区别是 I2C 通信在 610 上工作,而不是在 610A 上。
610和610A有什么区别?610 是不再生产的过时部件,还是会继续生产?
在试验、探测信号和使用调试器单步执行时,我注意到了一些事情:
1)。I2C 时钟在即将发送的第 20 个位上无限期变高,如果我暂停调试器,它会在轮询 ACKSTAT 位时卡住。第一位似乎是起始位,然后是 9 个更多位,然后是另一个开始/停止位,然后是 9 个更多位,然后时钟线变为高电平。
2)。当时钟线卡住并使用监视窗口时,I2C1STATbits 寄存器中的值为 0x8008,这意味着从从设备接收到 NACK,并且最后检测到启动(或重复启动)位。
3)。我总是能够从 610 和 610A 的从设备 (RTCC) 中读取数据。然而,有时对于 610A,它的值不会增加,而是保持在某个整数值。我相信当我切断一切电源并重新编程一切时,RTCC 值会发生变化。有时它在读取值时保持不变,并且可能有 25% 的时间在读取值时实际发生变化。
4)。我无法使用 610A 通过 I2C 向 RTCC 写入任何内容。处理器在轮询 ACKSTAT 位时卡住了(我假设是因为它收到了来自 RTCC 的 NACK。)610 工作完美。
工具:MPLAB v8.86、C30 v3.31、ICD3
谢谢你,布拉德
driver - 如何在 PPC DTS 中添加 rtc 节点?
我是 PPC 设备驱动程序开发的新手,最近在 DTS 中遇到了一个问题。
我们的团队在PPC平台的新开发板上添加了一个rtc芯片rtc-pcf8563。驱动程序可用且正确,但我必须将 DTS 中的设备添加为 rtc 节点。但我不知道如何更改 .dts 资源。
这是关于.dts的代码,@3200是我添加的,我不知道它是否有用。
有谁知道如何正确更改 .dts ?
c - 在 PIC32MX 上通过 IC2 写入 EEPROM 失败
EEPROM:24AA16
我已经用 C 语言为 PIC 编写了一些代码,以通过 I2C 读取和写入外部 EEPROM。当我使用这些方法写入单个字节,然后再次读取它以进行验证时,它可以工作。如果我更改写入位置,它会起作用,所以我认为寻址是有效的,并且我读回的字节与写入匹配,所以这似乎也有效。到目前为止一切都很好!
然后我将代码扩展为使用相同的例程 100 次,在相邻位置写入不同的字节。IE 在位置 x 到 x + 99 中写入值 0 到 99。然后我继续读回 100 个位置以验证写入,这就是出错的地方。
从各种测试来看,write 方法在同一位置执行所有写入操作,因为 read 方法从第一个位置获取最后一个值 (99),而从其他位置获取任何值 (0xFF)!
示波器显示时钟良好,数据线切换,这是我预期的单次写入工作。
PIC 上的调试显示这些方法使用的地址是连续的,所以我有点困惑为什么所有的写入都在同一个位置执行!我可以更改此位置,但它始终只使用所有值的第一个字节。
有谁知道可能出了什么问题?
我的代码在这里,入口点是testEeprom():
c++ - 为 I2C 配置 UM232H
我在为 I2C 通信配置 UM232H 模块 (FTDI) 时遇到了一些问题。他们在 FTDI 的网站上找到了一些示例,但他们所有的示例都不适合我。我不知道我做错了什么。我希望 UM232H 与 PCF8574P 通信。在 PCF8574P 的一个引脚上,我有一个想要闪烁的 LED。这是我得到的设置。我使用了 ftd2xx.h 的头文件,但我仍然得到一个错误,他不能使用 ftStatus 命令或其他东西。
这是我画的示意图
verilog - Verilog:I2C 读操作
在 Verilog 仿真中,我必须与 Microchip 的 64K I2C EEPROM 通信。每次从从机获得确认时,我都会在给定的时钟周期内将我的 SDA 驱动到高阻抗。现在,为了从从站获取数据,我是否必须对 SDA 遵循相同的操作?简而言之,是否必须将 SDA 端口驱动到高阻抗状态?
c++ - 特定地址块中的 I²C EEPROM 读取错误
我有一个 Arduino 的I²C总线连接到 Microchip PICDEM 2板的 I²C 总线,以对其 32K 字节 EEPROM 进行编程。下面的代码存在读取问题。具体来说,我已经用 16 位计数模式写入了整个 EEPROM,并验证了所有数据都是正确的。
以下代码由 PC 上的 Java 程序驱动。我正在读写 16 字节的页面。我已经监控了来自 PC 的地址,它们都是正确的。返回的数据都是正确的,除了 256 字节的地址块0x0AXX
。读取的数据看起来像来自 的行0x9F0
。我无法弄清楚为什么会发生错误。
PC接收到的数据都是正确的,除了以下块:
这个块之前和之后的一切都很好,但是 0x0A00 - 0x0AFF 重复了第 0x09F0 行的数据。以下代码用于编写和验证所有计数模式:
这几天我一直在为此苦苦挣扎。任何见解将不胜感激。