【软件工程师学硬件】之 时序2

上一节我们用了一个简单的游戏来描述时序,但是单片机的时序比这个复杂多了。
为了进一步描述时序,我们结合IIC协议来描述一下。
IIC通信是单片机里非常普遍的通信协议,很多硬件之间的通信都遵从这个协议,至于协议的起源什么的,我这里不做详细介绍了,大家可以参考一下网上的一些文章。下面直接说IIC协议的通信过程。
IIC协议里有两个重要的概念,就是SCL和SDA,SCL是啥?不要被英文给蒙了,实际上就是时钟。SDA又是啥?实际上就是数据。下面我们就SCL和SDA来介绍一下IIC的时序。
1、这个时钟线,也就是SCL,上面的时钟信号是一直不断的,这个和击鼓不一样,不是一会敲一会不敲的,也不是一会快一会慢的;
2、数据线,也就是SDA,上面的数据也不是想怎样就怎样,得和SCL保持一致,比如说,只能在SCL为高电平的时候,SDA的数据才有效,也就是说设备才能读SDA上的数据;相反,只能在SCL为低电平的时候,SDA上的数据才能变化,什么叫才能变化,比如要在SDA上传0101001,前一个是0,后一个是1,这就是变化;前一个是1,后一个是0,也叫变化,前后都是0,就不叫变化。那这个变化就有限制,必须等到SCL是低电平的时候才能变,否则就得憋着不能变。变化之后的数据还不能算数,还得等到SCL是高电平的时候才敢确认这个数据。看看规矩比较多。
那这个IIC开始和结束也有规定,刚才说了,SCL高电平的时候,SDA上的数据才管用,比如说,SDA上的电平由高到低变化(又叫下降沿),就表示开始了,SDA上的电平由低到高变化(又叫上升沿),就表示结束了。
另外SDA上的数据还得按照一定的顺序传输,不能乱,比如说,先传地址,就是7个bit的二进制数;接着传数据,就是8个bit的数据,当然,这中间得有确认,只要没有停止信号,可以一直传数据。
实际上经过耐心理解,发现这个时序也挺有意思的,单片机里类似这种时序不胜枚举,为了让大家更好的理解时序,下一节我们结合时序图来给和大家进一步介绍一下时序。

猜你喜欢

转载自blog.csdn.net/wwwmagic/article/details/91947307