首页 > 解决方案 > Raspberry PI - I2C 不写入数据

问题描述

我正在使用 Raspberry PI 3B+ 尝试.NET Core ( https://github.com/dotnet/iotSystem.Device.Gpio )中的新库,但 I2C 通信给我带来了一些麻烦。

我想重现一些已经运行的python代码的行为,从一些简单的数据写入和读取开始:

I2cConnectionSettings settings = new I2cConnectionSettings(1, 0x18); // I2C BUS is 1, ADDRESS is 0x18
I2cDevice device = I2cDevice.Create(settings);
device.WriteByte(8);
Console.WriteLine("Byte written: " + device.ReadByte().ToString());

结果总是给我0,没有任何错误,而预期的结果应该是8

会是什么呢?

标签: c#.net-coreraspberry-piraspbiani2c

解决方案


  1. 在覆盆子上,确保您在 raspi-config 中启用了 I2C(sudo raspi-config、接口选项、启用/禁用自动... I2C 内核模块)

  2. 使用 System.Device.I2c;// 管理 Nuget 包..

  3. I2cConnectionSettings 的“DeviceAddress”是您使用 I2cDevice 向其中写入单个字节的“Slave”的地址。写字节设备(例如 Arduino)在其接收数据事件中接收该字节。这可用于向设备发送命令。

  4. 当您呼叫设备时。ReadByte您实际上向设备发送了一个请求以回答数据。例如,一个 Arduino Slave会在它的请求数据事件中得到这个请求,并可以发回一些东西(在一个字节以上的情况下)。这应该与 0 不同,因为如果没有读取数据,函数也会返回 0。


推荐阅读