I2C通讯接口是我们日常应用中使用得最常见的MCU外设,之前在MCU没有硬件I2C之前都是通过GPIO口模拟I2C的时序来完成I2C通讯的,后面MCU带有了I2C外设接口,其硬件I2C的使用也变成了日常,更主要的是节省MCU资源的同时操作也变得更加简单和易用。再后面经过市场需求的变化,开始有了支持I2C多从机地址通讯功能的MCU,让I2C的应用紧跟合市场需求。虽然从I2C特性上知晓具有不同I2C地址的器件是可以挂载在同一个I2C总线上进行通讯的,但如果需要操作的I2C器件地址冲突呢?MCU的硬件I2C接口数量不够呢?或者说MCU的I2C不支持从机多地址通讯功能呢?这时候我们还是需要通过GPIO口来模拟I2C时序完成I2C主机/从机的功能,所以并不是有了硬件I2C,软件I2C就没有发挥的空间了,恰恰是软件硬件这两种实现方式共存互相补充。