2012-08-16 89 views
1

我想更改i2c总线频率以允许稍长的电缆。python smbus/i2c频率

我正在使用python-smbus软件包,但它工作得很好,但是,我无法找到如何设置总线频率。

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

那是什么可以在python中完成,还是我需要更低级别的东西?

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

回答

0

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

一些底层信息可以在byval forum中找到。

0

你必须在较低的水平上做点什么。通常,这些东西由内核中的board file设置。除了分配资源之外,我没有看到有关i2c的具体工作,所以它可能只是使用默认的时钟分频器。如果您查看datasheet的第28页,您会看到默认值为0x5dc。您需要使用不同的值(可能更大)设置该寄存器以应对更长的电缆。

1

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

要改变频率,可以添加/改变这个参数:

dtparam=i2c_baudrate=50000

(与所需的频率替换50000)中:

/boot/config.txt

并重新启动以改变频率。

+0

Jessie在RPi3上没有'/ sys/module/i2c_bcm2708/parameters/baudrate',只有'/ sys/module/i2c_bcm2835/parameters/debug'。 – meowsqueak 2017-12-02 07:16:59