簡體   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