1. 程式人生 > >硬體IIC和軟體IIC區別

硬體IIC和軟體IIC區別

所謂硬體I2C對應晶片上的I2C外設,有相應I2C驅動電路,其所使用的I2C管腳也是專用的;軟體I2C一般是用GPIO管腳,用軟體控制管腳狀態以模擬I2C通訊波形。

硬體I2C的效率要遠高於軟體的,而軟體I2C由於不受管腳限制,介面比較靈活。

模擬I2C 是通過GPIO,軟體模擬暫存器的工作方式,而硬體(韌體)I2C是直接呼叫內部暫存器進行配置。如果要從具體硬體上來看,可以去看下晶片手冊。因為韌體I2C的埠是固定的,所以會有所區別。

至於如何區分它們

  1. 可以看底層配置,比如IO口配置,如果配置了IO口的功能(IIC功能)那就是韌體IIC,否則就是模擬
  2. 可以看IIC寫函式,看裡面有木有呼叫現成的函式或者給某個暫存器賦值,如果有,則肯定是韌體IIC功能,沒有的話肯定是資料一個bit一個bit模擬發生送的,肯定用到了迴圈,則為模擬。
  1. 根據程式碼量判斷,模擬的程式碼量肯定比韌體的要大。
  2. 1. 硬體IIC用法比較複雜,模擬IIC的流程更清楚一些。

    2. 硬體IIC速度比模擬快,並且可以用DMA

    3. 模擬IIC可以在任何管腳上,而硬體只能在固定管腳上。

    軟體i2c是程式設計師使用程式控制SCL,SDA線輸出高低電平,模擬i2c協議的時序。一般較硬體i2c穩定,但是程式較為繁瑣,但不難。

    硬體i2c程式設計師只要呼叫i2c的控制函式即可,不用直接的去控制SCL,SDA高低電平的輸出。但是有些微控制器的硬體i2c不太穩定,除錯問題較多。