Stm32F103R6之I2C

目录

概述

I2C功能

SMBus


概述

I2C(芯片间)总线接口连接微控制器和串行I2C总线。它提供多主机功能,控制所有I2C总线特定的时序、协议、仲裁和定时。支持标准和快速两种模式,同时与SMBus 2.0兼容。

I2C模块有多种用途,包括CRC码的生成和校验、SMBus(系统管理总线—System Management Bus)和PMBus(电源管理总线—Power Management Bus)。

Stm32F103R6之I2C

图 1I2C功能框图

I2C功能

网上有评论说stm32的硬件I2C有bug,经我实测使用stm32的硬件I2C读写都没有出现问题。也可以使用IO口模拟I2C通讯,需要注意的点是:

  • 起始位和停止位的模拟;
  • 数据保持时间,与波特率有关;
  • 应答;
  • I2C默认工作在从模式,。从从模式切换到主模式,需要产生一个起始条件,主设备负责产生时钟。

Stm32的I2C支持7/10地址,支持广播呼叫。

SMBus

系统管理总线(SMBus)是一个双线接口。通过它,各设备之间以及设备与系统的其他部分之间可以互相通信。它基于I2C操作原理。SMBus为系统和电源管理相关的任务提供一条控制总线。一个系统利用SMBus可以和多个设备互传信息,而不需使用独立的控制线路。

系统管理总线(SMBus)标准涉及三类设备。从设备:接收或响应命令的设备。主设备:用来发送命令、产生时钟和终止发送的设备。主机:一种专用的主设备,它提供与系统CPU的主接口。主机必须具有主-从机功能并且必须支持SMBus提醒协议。一个系统里只允许有一个主机。

SMBusI2C之间的相似点

● 2条线的总线协议(1个时钟,1个数据) + 可选的SMBus提醒线;

● 主-从通信,主设备提供时钟;

● 多主机功能;

● SMBus数据格式类似于I2C的7位地址格式。

SMBusI2C之间的不同点

Stm32F103R6之I2C

图 2SMBus和I2C的不同点

SMBus应用用途

利用系统管理总线,设备可提供制造商信息,告诉系统它的型号/部件号,保存暂停事件的状态,报告不同类型的错误,接收控制参数,和返回它的状态。SMBus为系统和电源管理相关的任务提供控制总线。