python smbus / i2c频率

时间:2012-08-16 11:30:45

标签: python i2c raspberry-pi

我想改变i2c总线频率,以便允许更长的电缆。

我正在使用python-smbus包,它确实运行良好,但是,我无法找到如何设置总线频率。

我查看了docs,但无法找到与设置总线参数有关的任何内容。

这是可以在python中完成的任何事情,还是我需要更低级别的东西?

我使用的是Raspberry PI,这是一种ARM架构。

3 个答案:

答案 0 :(得分:1)

在带有最新Jessie映像的Raspberry Pi上,您可以使用它来检查当前的I2C频率:
sudo cat /sys/module/i2c_bcm2708/parameters/baudrate

要更改频率,您可以添加/更改此参数:

dtparam=i2c_baudrate=50000

(用所需频率替换50000):

/boot/config.txt

并重新启动以更改频率。

答案 1 :(得分:0)

您必须在较低级别执行某些操作。通常这个东西是由内核中的board file设置的。除了分配资源之外,我没有看到i2c特别做的任何事情,所以它可能只是使用默认的时钟除数。如果您查看datasheet的第28页,您会看到默认值为0x5dc。您需要使用不同的值(可能更大)设置该寄存器,以应对更长的电缆。

答案 2 :(得分:0)

我现在花了大量时间研究所有选项。事实证明,在另一篇文章中确实存在低杠杆寄存器,但是,Raspberry-Pi的驱动程序会重置它们在每次使用时的价值,对它们进行任何修改几乎都是无用的。解决方案是编写自定义i2c驱动程序或只是等待更新版本。

可以在byval forum中找到一些较低级别的信息。