所謂硬件I2C對應芯片上的I2C外設,有相應I2C驅動電路,其所使用的I2C管腳也是專用的;軟件I2C一般是用GPIO管腳,用軟件控制管腳狀態以模擬I2C通信波形。硬件I2C的效率要遠高于軟件的,而軟件I2C由于不受管腳限制,接口比較靈活。模擬I2C是通過GPIO,軟件模擬寄存器的工作方式,而硬件(固件)I2C是直接調用內部寄存器進行配置。如果要從具體硬件上來看,可以去看下芯片手冊。因為固件I2C的端口是固定的,所以會有所區別。至于如何區分它們可以看底層配置,比如IO口配置,如果配置了IO口的功能(IIC功能)那就是固件IIC,否則就是模擬可以看IIC寫函數,看里面有木有調用現成的函數或者給某個寄存器賦值,如果有,則肯定是固件IIC功能,沒有的話肯定是數據一個bit一個bit模擬發生送的,肯定用到了循環,則為模擬。根據代碼量判斷,模擬的代碼量肯定比固件的要大。
1.硬件IIC用法比較復雜,模擬IIC的流程更清楚一些。
2.硬件IIC速度比模擬快,并且可以用DMA3.模擬IIC可以在任何管腳上,而硬件只能在固定管腳上。軟件i2c是程序員使用程序控制SCL,SDA線輸出高低電平,模擬i2c協議的時序。一般較硬件i2c穩定,但是程序較為繁瑣,但不難。硬件i2c程序員只要調用i2c的控制函數即可,不用直接的去控制SCL,SDA高低電平的輸出。但是有些單片機的硬件i2c不太穩定,調試問題較多。