【发布时间】:2012-08-16 11:30:45
【问题描述】:
我想更改 i2c 总线频率以允许使用稍长的电缆。
我正在使用 python-smbus 包,它确实工作得很好,但是我无法找到如何设置总线频率。
我查看了docs,但找不到任何与设置总线参数相关的东西。
这是否可以在 python 中完成,或者我需要一些更低级别的东西?
我使用的是 ARM 架构的 Raspberry PI。
【问题讨论】:
标签: python i2c raspberry-pi
我想更改 i2c 总线频率以允许使用稍长的电缆。
我正在使用 python-smbus 包,它确实工作得很好,但是我无法找到如何设置总线频率。
我查看了docs,但找不到任何与设置总线参数相关的东西。
这是否可以在 python 中完成,或者我需要一些更低级别的东西?
我使用的是 ARM 架构的 Raspberry PI。
【问题讨论】:
标签: python i2c raspberry-pi
在带有最新 Jessie 镜像的树莓派上,您可以使用它来检查当前的 I2C 频率:sudo cat /sys/module/i2c_bcm2708/parameters/baudrate。
要更改频率,您可以添加/更改此参数:
dtparam=i2c_baudrate=50000
(将 50000 替换为所需的频率)在:
/boot/config.txt
然后重新启动以更改频率。
【讨论】:
/sys/module/i2c_bcm2708/parameters/baudrate,只有 /sys/module/i2c_bcm2835/parameters/debug。
您必须在较低级别上做一些事情。通常这些东西是由内核中的board file 设置的。除了分配资源之外,我没有看到 i2c 有什么特别的事情,所以它可能只是使用默认的时钟除数。如果您查看datasheet 的第 28 页,您会看到默认值为 0x5dc。您需要使用不同的值(可能更大)设置该寄存器以应对更长的电缆。
【讨论】:
我现在已经花费大量时间研究所有选项。事实证明,确实存在另一篇文章中指定的低级寄存器,但是,Raspberry-Pi 的驱动程序在每次使用时都会重置它们的值,对它们进行任何修改几乎都没用。解决方案是编写自定义 i2c 驱动程序或等待更新版本。
可以在byval forum中找到一些较低级别的信息。
【讨论】: