I2C和SPI作为两种非常常用的低速外部总线,已经不是什么新新技术了。
有些知识点,明白了,一段时间不用了,又忘记了。所以决定乘最近正好碰过这两个东西,还是写下来以备后患。
I2C
I2C是以前的飞利浦半导体制定的标准,也就是如今的NXP。
I2C总线由一条数据线(SDA)和一条时钟线(SCL)组成。设备分主从,主设备提供时钟,并发起操作。
看一下这张I2C协议必须和可选的功能表。最简单的模式的话,只需要实现4个功能,start、stop、ack、7bit address。
当scl为高时,sda下拉表示start。当scl为低时,sda上拉表示stop。
根据下面这个图,我们来讨论这4个基本功能。
- master控制sda、scl:发起一个start标记
- master控制sda、scl:start之后的1-7位表示的是slave设备的7bit address
- master控制sda、scl:第8位表示是读(1)还是写(0)操作,所以我们其实可以把7bit address和这1bit读写位结合起来当成一个byte。