i2c仅仅只是芯片间数据传递的一种协议而已。一根时钟线 + 一根数据线。时钟线上啪啪地拍时钟,数据线那边套着时钟节奏传数据就行了,一般用于对可靠性要求不是很高的低速通信。正常的时钟频率范围为几十kHz~400kHz。
一般嵌入式芯片都会提供i2c接口,驱动人员不需要了解i2c协议具体过程,只需按照芯片厂商提供的资料或参考代码操作几个简单的寄存器就可以了。但也会碰到问题,如果芯片厂商解决不了的话,就只能抛弃硬件i2c接口、使用纯软件模拟i2c协议了(前提是芯片预留了这个后门,呵呵)。纯软件模拟的话最好得有示波器配合、分析波形,否则很难调通。
总线和协议,其实就是一回事,说协议更准确。下面解释一下。
如果芯片A和芯片B之间要进行数据传递,先得在A和B之间拉上导线吧(无线除外),拉几根导线根据需求而定(最起码得有一根时钟线和一根数据线)。线拉好了,然后还得约定传递数据的规则(如某根线上传送01就代表通信开始,传送10就代表通信结束)。
那么A和B之间传递数据的规则就成为一个协议(假定为X协议)了,A和B之间的导线、以及这个协议就成为X总线了。 |