如何在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线(它甚至可以在两个方向上通过直流电),我已经用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();
}
相关文章:
- 使用 C++ 和 i2c 工具从虚拟 i2c 写入和读取
- 当 I2C 值在C++中发生变化时收到通知
- I2C 文件描述符上的 I2C 总线可写/可读标志
- 两种访问I2C总线的方法有什么区别?
- 如何获取引脚 4 的值,以便也发送到从站并使用 I2C 显示?
- 我想使用 I2C 接收从 arduino 到 raspberry pi 的多个数据
- I2C 错误:"i2c_smbus_read_byte_data"未在此范围内声明
- ESP8266 I2C 从站不确认数据
- OneWire arduino 库,具有后期引脚定义
- Raspberry Pi Arduino I2C communication
- ATMega328P 和 ESP8266ex 之间的 I2c 通信只能发送 8 个字节,错误?
- 快速 I2C 连接,迁移到新磁带库
- 正确格式化I2C的数据(Wire.write)
- 带有SoftWire(I2C Emulator)库的多个tcs34725 arduino颜色传感器
- I2C SMBUS滤波器功能损坏变量
- C I2C芯片读取MCP9800突然开始失败
- I2C dev:更改写入和读取参数
- Raspberry Pi和I2C在c++中与PCF8591的布线Pi
- 通过I2C增加传感器采样率
- 如何在mbed上的同一引脚上从I2C切换到OneWire