STM32学习笔记——IIC总线

集成电路总线IIC(Inter-Integrated Circuit)

文章参考《STM32不完全手册_寄存器版本_V3.3》及百度,图片来自AT24C02芯片手册,若有侵权立即删除。

  • 两根信号线:双向数据线SDA,时钟线SCL
    SDA:输出电路用于向总线发送数据,输入电路用于接收总线上的数据
    SCL:对于控制总线数据传送的主机,通过SCL输出电路发送时钟信号;检测总线上的SCL点平,以决定什么时候发送下一个时钟脉冲电平。对于接收主机命令的从机,按总线上的SCL信号发出或接收SDA上的信号;向SCL线发出低电平信号以雁行时钟信号周期。
    SDA线上的数据在SCL线为高电平时必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。输出到SDA线上的每个字节必须是8位,每次传输的字节不受限制,但每个字节必须要有一个应答ACK。如果一接收器件在完成其他功能(如一内部中断)前不能接收另一数据的完整字节时,它可以保持时钟线SCL为低,以促使发送器进入等待状态;当接收器准备好接受数据的其它字节并释放时钟SCL后,数据传输继续进行。

  • 三种类型的信号:开始信号、结束信号、应答信号
    开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
    结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
    应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
    注:开始信号必须有,结束信号和应答信号可以没有

  • 读写操作
    读写操作至少需要三种数据:设备地址(Device Address)、字地址(Word Address,将数据写到哪里,或是从哪里读数据)、数据(Data)
    设备地址
    设备地址大小为8 bit.地址的格式根据EEPROM的大小而不同,如图所示:其中Px(x=0,1,2)表示地址位;R/W位是读写位,置1为读,置0为写;当EEPROM成功接收地址,会发送0作为应答信号。STM32学习笔记——IIC总线_第1张图片
    写字节的时序
    STM32学习笔记——IIC总线_第2张图片发送结束信号之后,EEPROM将进入自身的时间周期,直到写完成前,主机不能再次进行对其进行操作。
    读字节时序
    要先写要读取的数据的地址(Dummy Write)
    NO ACK表示没有接收应答,此处应与写操作区别开。
    STM32学习笔记——IIC总线_第3张图片

你可能感兴趣的:(STM32学习笔记)