1. 程式人生 > >gpio軟體模擬IIC與硬體IIC驅動有什麼區別

gpio軟體模擬IIC與硬體IIC驅動有什麼區別

最近做一個專案,涉及到晶片級的通訊方面的知識(IIC和SPI方面的通訊)。但是方案選擇的時候,發現自身對模擬IO口通訊還是韌體驅動通訊一直沒有一個很全面的認識,所以就在此記錄一下。

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

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

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

至於如何區分它們

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