linux spi驱动架构FAQ
什么是SPI的bitbang/bit-bang:
Use software to control serial communication at general-purpose I/O pins
通过GPIO引脚,用软件来模拟串行通信(SPI/I2C 。。。)。
对于多数情况来说,我们所用的SPI,都是有对应的SPI的主控制器的,其负责和外部SPI设备进行通信,负责两者通信时候的信号之间的同步,保证信号的timing都符合SPI协议,保证可以正常进行SPI通信。
但是硬件上没有SPI控制器,而还想要和SPI设备通信,那么就只能用GPIO端口去模拟:片选CS,数据输入Data In,数据输出Data Out,时钟Clock,模拟SPI协议,和对应spi设备进行通信。此时作为编程者,需要去负责信号的同步,保证timing符合协议规定,才能正常进行SPI通信。
这样的SPI的bit-bang,优点是不需要SPI的控制器了,但是缺点很明显,除了要用户自己负责同步,timing等事情之外,相对来说,即使本身SPI设备支持以很高的频率运行,可以实现很好的性能,但是以bit-bang的方式去使用的话,实际性能往往很差。
What Is Bit-Banging?
http://www.epanorama.net/links/serialbus.html
http://free-electrons.com/kerneldoc/latest/DocBook/device-drivers/index.html
http://www.jumpnowtek.com/index.php?option=com_content&view=article&id=57&Itemid=62