![](/img/trans.png)
[英]How do i get values of pin 4 to also get sent over to the slave and be displayed using I2C?
[英]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.