繁体   English   中英

如何在mbed上的同一引脚上从I2C切换到OneWire?

[英]How can I switch from I2C to OneWire on the same pin on mbed?

我有一个项目涉及通过I2C开关(PCA9548)与OneWire芯片(DS2431)通信。 我想要做的是正确配置开关(只需将一个字节写入其状态寄存器),然后使用mbed SDA引脚进行OneWire通信。 交换机不关心SDA线路(它甚至可以在两个方向上通过DC),我已经成功地使用OneWire进行了测试。 问题是在同一引脚上将软件从I2C切换到OneWire。
我尝试了一种简单的方法:先创建一个全局I2C实例,然后创建一个OneWire实例,但是最后一个实例总是破坏前一个实例,以便我可以使用I2C或OneWire。 有没有办法破坏一个实例并再次创建它?

您可以通过几种方法进行处理,但是最简单的方法之一是在主函数中声明I2C和OneWire实例。

如果需要访问main之外的OneWire实例,可以将其分配给指针。

这是一些伪代码:

OneWire *oneWireGlobal;

void func1() {
    oneWireGlobal->writeBit(0xFF);
}

void main() {
    I2C i2c(I2C_SDA, I2C_SCL);

    [I2C operations here...]

    OneWire oneWire(I2C_SDA);
    oneWireGlobal = &oneWire; // Be sure to do this before accessing "oneWireGlobal"

    [oneWire operations here...]

    func1();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM