i2c читает данные с сенсора с помощью Netduino
Я начал изучать Netduino недавно. В настоящее время я хочу использовать его с датчиком 305AR MS5803. Эти компоненты связываются с протоколом I2C. Я изучил этот протокол немного, но не достаточно.
Я написал введение кода. Когда я пришел основной код, я ничего не делал. Мой код ниже.
Кто-нибудь может помочь в этом вопросе? Я буду так рад:)
public class Program
{
public static void Main()
{
// Configuration of MS5803 30BA
I2CDevice i2c = new I2CDevice(new I2CDevice.Configuration(0x76>>1, 400));
byte[] read = new byte[1];
I2CDevice.I2CTransaction[] i2cTx = new I2CDevice.I2CTransaction[1];
i2cTx[0] = I2CDevice.CreateReadTransaction(read);
// ???
}
}
1 ответ
Решение
Похоже, вы пропустили вызов I2C.Execute. Ничего не зная об устройстве, с которым вы общаетесь, это, по крайней мере, начнет передачу.
Попробуйте добавить эту строку после создания транзакции чтения.
i2c.Execute(i2cTX[0],500);
byte[] returnByte = new byte[3];
var readX = new I2CDevice.I2CTransaction[] {I2CDevice.CreateReadTransaction(returnByte) };
int executed = 0;
I2CDevice i2c = new I2CDevice(new I2CDevice.Configuration(0x76, 400));
executed = i2c.Execute(readX, 400);
if (executed == 0)
{
//Debug.Print("Read FAIL!");
}
else
{
//Debug.Print("Read SUCCESS!");
}
//throw new Exception("I2C transaction failed");
//you will need to do some bit shifting with the readX array to get your values.
}
Вот отличный документ по NetMF i2c: https://www.ghielectronics.com/docs/12/i2c
Паспорт устройства: http://www.amsys-sensor.eu/sheets/amsys.en.ms5803_30ba.pdf