我正在使用 Raspberry PI 3B+ 尝试 .NET Core ( https://github.com/dotnet/iot ) 中的新 System.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
。
可能是什么?
最佳答案
在树莓派上,确保在 raspi-config 中启用了 I2C (sudo raspi-config、接口(interface)选项、启用/禁用自动... I2C 内核模块)
使用 System.Device.I2c;//管理 Nuget 包..
I2cConnectionSettings 的“DeviceAddress”是您使用 I2cDevice.WriteByte 写入单个字节的“从设备”的地址。 从属设备,例如Arduino 在其接收数据事件中接收该字节。这可用于向设备发送命令。
当您调用 device.ReadByte 时,您实际上向设备发送请求以用数据进行应答。例如,Arduino Slave 会在其request 数据事件中获取此请求,并可以发回某些内容(在一个字节以上的情况下)。这应该与 0 不同,因为如果没有读取数据,函数也会返回 0。
关于c# - Raspberry PI - I2C 不写入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57441762/