STM32标准库学习笔记(九)I2C

前言


学习永无止境!本篇是嵌入式开发之片上外设I2C,了解基本硬件原理以及通信协议,实现软件模拟通信与硬件外设通信。
注:本文章为学习笔记,部分图片与文字来源于网络/江协科技课程/手册,如侵权请联系!谢谢!


一、I2C通信概述


1.1 I2C基本概念

        I2C总线是Philips公司在八十年代初推出的一种串行同步、半双工的总线,主要用于近距离、低速的芯片之间的通信。

        I2C总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步。

        I2C通讯总线中可以连接多个设备(有一主多从、多主多从模式),每个设备都有一个独立地址,主机可以利用地址进行不同设备通信。

1.2 I2C物理层

  • 信号线:共两条信号线,分别是SCL(时钟线)、SDA(数据线),设备挂在两条总线上;
  • 电平:总线通过上拉电阻(一般4.7K),连接到电源,当I2C设备空闲时,会输出高组态,所有设备都空闲时,由上拉电阻将总线拉成高电平。

1.3 I2C协议层

 ① 基本时序: I2C的协议定义了通信的起始位、数据有效性、响应、仲裁、时钟同步与地址广播等环节。

  • 起始条件:SCL处于高电平,SDA由高电平变为低电平(产生下降沿);
  • 发送数据:SCL低电平时,主机将数据放在SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间不允许SDA变化,依次循环8次,可发送一个字节数据;
  • 接收应答:主机在发送完一个字节后,释放SDA,在下个时钟接收一个数据,判断从机是否应答(0表示应答,1表示非应答);
  • 接收数据:SCL低电平时,从机将数据放在SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间不允许SDA变化,依次循环8次,可接收一个字节数据;
  • 发送应答:主机接收完一个字节之后,在下个时钟发送一位数据,0表示应答,1表示非应答;
  • 终止条件:SCL处于高电平,SDA由低电平变为高电平(产生上升沿)。

② I2C完整时序:主要有指定地址写、当前地址读、指定地址读三种。

注:S(起始信号),RA(接收应答),P(停止信号),R/W(R=1,W=0)。

  • 指定地址写:指定设备(Slave Address+W)+指定地址(Reg Address)+写入数据(Data);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值