2012-08-16 124 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