使用Raspberry PI并与Adafruit MMA8451加速度计板接口。在Stretch上完成所有这些工作后,我正在尝试全新安装Buster。我已经安装了所有最新的库并完成了所有最新的更新。我可以使用
显示MMA8451sudo i2cdetect -y 1
位于其正确位置0x1D。当我尝试示例程序时,我通常会得到大块错误代码:
Traceback (most recent call last):
File "Downloads/simpletest.py", line 15, in <module>
sensor = adafruit_mma8451.MMA8451(i2c)
File "/usr/local/lib/python3.7/dist-packages/adafruit_mma8451.py", line 103, in __init__
while self._read_u8(_MMA8451_REG_CTRL_REG2) & 0x40 > 0:
File "/usr/local/lib/python3.7/dist-packages/adafruit_mma8451.py", line 134, in _read_u8
self._read_into(address, self._BUFFER, count=1)
File "/usr/local/lib/python3.7/dist-packages/adafruit_mma8451.py", line 130, in _read_into
in_end=count)
File "/usr/local/lib/python3.7/dist-packages/adafruit_bus_device/i2c_device.py", line 150, in write_then_readinto
in_start=in_start, in_end=in_end)
File "/usr/local/lib/python3.7/dist-packages/busio.py", line 89, in writeto_then_readfrom
in_start=in_start, in_end=in_end, stop=stop)
File "/usr/local/lib/python3.7/dist-packages/adafruit_blinka/microcontroller/generic_linux/i2c.py", line 61, in writeto_then_readfrom
readin = self._i2c_bus.read_i2c_block_data(address, buffer_out[out_start:out_end], in_end-in_start)
File "/usr/local/lib/python3.7/dist-packages/Adafruit_PureIO/smbus.py", line 227, in read_i2c_block_data
ioctl(self._device.fileno(), I2C_RDWR, request)
OSError: [Errno 121] Remote I/O error
令人发疯的是,有时整个事情都会起作用。有什么我可以检查的吗?我之前曾做过这项工作,因此我认为这是软件问题,而不是硬件问题。我已经尝试过Raspberry PI 3和Raspberry PI 4开发板,都多次给出相同的错误。
答案 0 :(得分:0)
我想我找到了解决方法。不确定这是由Buster还是其他原因引起的。
我进入/boot/config.txt并添加了
core_freq=500
core_freq_min=500
dtparm=i2c_arm=on,i2c_arm_baudrate=10000
这似乎使它每次都能工作,而不会出现通信错误。