【问题标题】:i2c read data from sensor with Netduinoi2c 使用 Netduino 从传感器读取数据
【发布时间】:2016-02-19 09:50:18
【问题描述】:

我不久前开始学习 Netduino。目前,我想将它与 MS5803 30BAR 传感器一起使用。该组件使用 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);


        // ???
    }
}

【问题讨论】:

    标签: c# .net frameworks i2c netduino


    【解决方案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

    【讨论】:

    • 提前感谢您的回答@gismofx。我在我的项目中尝试了这个解决方案。我添加了“i2c.Execute(i2cTX[0],500);”行并添加了“if (execute_value == 0){} else{}”框图。我的项目在 if-else 框图中总是返回零值,我无法与 Netduino Plus 2 通信。在您看来,这会是什么问题?
    • @BerkAltun 有很多事情可能是错误的。您是否正确连接了设备?你在 I2C 总线上使用上拉电阻吗?您使用的是正确的 I2c 地址吗?(规格表说有两个可能的地址。此外,当您执行读取事务时,您需要返回 3 个字节。我已经稍微修改了我的答案
    • 非常感谢您的搜索和花费时间。我尝试了很多解决方案以及您的建议和解决方案。我的设备连接正确,我用嵌入的上拉电路对其进行了测试。现在,我认为我可以使用错误的 i2c 地址。也许我可以错误地定义设备配置。除此之外,我用 Netduino 做了一个眨眼测试,以了解它是如何工作的。眨眼测试成功,但这不是......:/
    • @BerkAltun 你有 i2c/逻辑嗅探器吗?您可以监控 SDA/SCL 线路。如果你的中微子发送了地址而你没有得到回应,那可能是你的设备设置的问题。此外,您可能还想尝试移植 arduino 驱动程序。
    猜你喜欢
    • 2018-12-06
    • 2022-06-10
    • 2020-09-13
    • 2014-06-30
    • 2018-04-08
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    相关资源
    最近更新 更多