2024-05-14 22:18:14 发布
网友
我想改变i2c总线频率,以允许稍长的电缆。在
我正在使用pythonsmbus包,它确实工作得很好,但是,我无法找到如何设置总线频率。在
我已经浏览了docs,但是没有找到任何与设置总线参数相关的东西。在
这是python可以做的吗?还是我需要更低级的东西?在
我使用的是Raspberry PI,这是一个ARM架构。在
你必须在较低的层次上做些事情。通常这些东西是由内核中的board file设置的。除了分配资源外,我没有看到i2c有什么特别的用途,所以它很可能只是使用默认的时钟除数。如果您查看datasheet的第28页,您将看到默认值是0x5dc。你需要设置一个不同的值(可能更大)来处理较长的电缆。在
我现在花了很多时间研究所有的选择。事实证明,确实存在另一篇文章中指定的低电平寄存器,然而,Raspberry Pi的驱动程序在每次使用时都会重置它们的值,因此对它们的任何修改都几乎毫无用处。解决方案是要么编写一个自定义的i2c驱动程序,要么只是等待更新版本。在
一些低级信息可以在byval forum中找到。在
在带有最新Jessie图像的Raspberry Pi上,您可以使用它来检查当前I2C频率:sudo cat /sys/module/i2c_bcm2708/parameters/baudrate。在
sudo cat /sys/module/i2c_bcm2708/parameters/baudrate
要更改频率,可以添加/更改此参数:
dtparam=i2c_baudrate=50000
(用所需频率替换50000):
/boot/config.txt
重启以改变频率。在
你必须在较低的层次上做些事情。通常这些东西是由内核中的board file设置的。除了分配资源外,我没有看到i2c有什么特别的用途,所以它很可能只是使用默认的时钟除数。如果您查看datasheet的第28页,您将看到默认值是0x5dc。你需要设置一个不同的值(可能更大)来处理较长的电缆。在
我现在花了很多时间研究所有的选择。事实证明,确实存在另一篇文章中指定的低电平寄存器,然而,Raspberry Pi的驱动程序在每次使用时都会重置它们的值,因此对它们的任何修改都几乎毫无用处。解决方案是要么编写一个自定义的i2c驱动程序,要么只是等待更新版本。在
一些低级信息可以在byval forum中找到。在
在带有最新Jessie图像的Raspberry Pi上,您可以使用它来检查当前I2C频率:
sudo cat /sys/module/i2c_bcm2708/parameters/baudrate
。在要更改频率,可以添加/更改此参数:
dtparam=i2c_baudrate=50000
(用所需频率替换50000):
/boot/config.txt
重启以改变频率。在
相关问题 更多 >
编程相关推荐