举个简单的例子可能比较好理解,比如I2C下的Bit bang,就是使用软件通过 IO 脚去实现 I2C 的时序从而使用 I2C 协议进行
通信。
这样做的好处是可以突破硬件上的限制,例如芯片不具有硬件 I2C 模块,或者硬件 I2C 模块损坏,又或者使用硬件 I2C 模块时布线非常麻烦。坏处是需要写代码模拟时序,根据不同的硬件平台和不同的时钟频率,代码中的部分参数是不一样的。
需要设置GPIO引脚来模拟SCL和SDA的时序功能。
再比如SPI通信下的Bit bang,就是通过GPIO端口模拟SPI接口引脚(CS、MOSI、MISO、CLK)上的时序信号来实现SPI协议,与对应SPI设备进行通信。开发工作相对大一些,也需要细心调试,不如用硬件外设来实现方便。