IIC学习笔记

近期做项目,用到SM32F10x系列的芯片,经常使用到IIC总线来做为主从机之间的写命令和读数据,所以也自己去学习了IIC总线。自己也做些小的笔记。

一、IIC总线要实现线与功能,所以SDA和SCL口线必须设置为开漏输出模式,我们使用的MCU硬件接口IIC时,口线会被自动设置成为开漏模式,但有时我们会使用IO口来模拟IIC总线,那么怎么设置口线呢?
 ①MCU口线支持开漏模式,则直接将SDA和SCL设置为开漏输出。
 ②MCU不支持开漏模式:
 最合理的做法是:当设置口线电平为高电平时,我们将其设置为输入状态,然后利用口线上的上拉电阻将口线拉高,这样即使两边电平不一致时,也不会造成IO口的损坏。

 二、IIC总线SDA线是在SCL线为高电平时才有效,在时钟SCL为高电平期间,SDA如果发生电平变化,就会终止或重启IIC总线,所以,在数据传输的过程中,要在SCL为低电平的时候去更改SDA的电平。

三、数据线和信号线构成的通信线路。

四、总线空闲时间:SDA和SCL都保持高电平的时间(一个结束条件和起始条件之间的总线空闲时间)。

五、起始信号:SCL信号保持高电平期间,数据线的电平由高到低跳变。(程序中设置SDA和SCL为高也是有讲究的,SDA应该先拉高,这样可以避免某些状态下产生停止信号)

六、停止信号:SCL信号保持高电平期间,数据线的电平由低到高跳变。

七、应答信号:(ACK)被寻址的设备,接收到一个字节后都必须产生一个应答信号。信号在SCL为高电平期间,接收设备把SDA拉为低电平就可以产生一个应答信号。

。。。。。。未完待续。今后学习过程中在补充!

原文地址:https://www.cnblogs.com/zhou2011/p/2755949.html