IIC通信
IIC的使用场合今天就不累赘了,直接入主题,使用IIC是关键在于他的时序图,以下为IIC时序图的解读:
时序图:
记得IIC通信是一种电平的跳变,在写代码时不必太纠结通信速率,延时合适就好,
可以从上图得到什么信息呢,可不可以这么认为,时钟线SCL拉高的期间数据线SDA就不再变化了,是不是就可以得出这么一个结论:时钟线拉高的时候才能从外围设备读数据或是写数据给对方,而且时钟线呈等长时间的高或低电平,其实实际工程中不需要这么严格,比如可以这样,这个周期为10us,下个周期为15或7或8us都是可以的,所以我们在写代码的时候应该将注意力放在电平的跳变上,这里在举个例子:在写操作时,先将数据线设置为你想要的电平,延时一会,再将时钟线拉高使其电平数据保持有效,再延时一会,将时钟线拉低,到这里就算写完了一位数据;再比如读数据时,先将时钟线拉高,确保即将读的数据是有效的,然后延时一会就可以读了,读完后再将时钟先拉低延时为下一次读做准备。
虽然IIC通信对于不同的设备有点略微的不同,具体的根据硬件的时序图来,基本分为这几个步骤:1.启动 2. 对数据的操作 3. 停止 其中对数据的操作又分为读和写,对于这些步骤,我们看图说话。
启动与停止: