IIC

IIC简介

   I 2 C I^2C I2C通讯协议是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强没不需要USART、CAN等通讯协议的外部收法设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。

IIC物理层的特点

在这里插入图片描述
  电阻一般为4.7k
  它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个IIC通讯总线中,可连接多个IIC通讯设备,支持多个通讯主机及多个通讯从机。
  一个IIC总线只使用两条总线线路,一条双向串行数据线(SDA),一个串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步。
  每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。

IIC的协议层

  IIC的协议定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等环节。

1. IIC基本读写过程

  主机写数据到从机:
在这里插入图片描述
在这里插入图片描述
  主机由从机中读取数据
在这里插入图片描述
  例如:刚开始主机产生传输开始信号,再发送从机地址以及读信号,如果存在该地址,从机产生应答信号,将数据传输给主机,如果主机还需要数据,主机产生应答信号,从机传输数据给主机,如果主机产生非应答信号,则主机再接着发出停止信号。
通讯复合格式
在这里插入图片描述

2.通讯的起始和停止信号

在这里插入图片描述
  当SCL线是高电平时SDA线从高电平向低电平切换,这个情况表示通讯的起始。
  当SCL时高电平时SDA线由低电平向高电平切换,表示通讯的停止。
  起始和停止信号由主机产生。

3.数据有效性

  IIC使用SDA信号线来传输数据,使用SCL信号线进行数据同步,SDA数据线在SCL的每个时钟周期传输一位数据。
在这里插入图片描述
  SCL为高电平的时候SDA表示的数据有效,即此时的SDA为高电平时表示数据“1”,为低电平时表示数据“0”。
  当SCL为低电平时,SDA的数据无效,一般在这个时候SDA进行电平切换,为下一次表示数据做好准备。

4.地址及数据方向

  IIC总线上的每个设备都哦有自己独立地址,主机发起通讯时,通过SDA信号线发送设备地址(SLAVE_ADDRESS)来查找主机。设备的地址可以是7为或10位。
  紧跟设备地址的一个数据为R/W用来表示数据传输方向,数据方向位为"1"时表示从机由主机读取数据,改位为"0"时表示主机向从机写数据。
在这里插入图片描述

5.响应

IIC的数据和地址传输都带响应。响应包括"应答(ACK)"和“非应答信号(NACK)”两种信号。
在这里插入图片描述
  传输时主机产生时钟,在第9个时钟时,数据发送端会释放SDA的控制权,有数据接受端控制SDA,若SDA为高电平,表示非应答信号(NACK)低电平表示应答信号(ACK)。
注意:数据发送端与接收端既可以为发送端也可以为接收端。

STM32的IIC特性及架构

  软件模拟协议:使用CPU直接控制通讯引脚的电平,产生出符合通讯协议标准的逻辑。
  硬件实现模拟:由STM32的IIC片上外设负责实现IIC通讯协议,只需要配置好该外设,它就会自动根据协议要求产生通讯信号,收法数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理IIC协议的方式减轻了CPU的工作,且使软件设计更加简单。
  STM32的外设可用作通讯的主机及从机·,支持100Kbits/s和400Kbits/s的速率,支持7位、10位设备地址,支持DMA数据传输,并具有数据校验功能。
  注意:硬件实现比软件实现方便。STM32的IIC不够稳定。

IIC框图
在这里插入图片描述

STM32的IIC架构剖在这里插入图片描述

IIC-读写EEPROM

通讯引脚

  STM32芯片有多个IIC外设,它们的IIC通讯信号引出到不同的GPIO引脚上,使用时必须配置到这些指定引脚,以《STM32F103xCDE_DS_CH_V5》为准。
在这里插入图片描述
在这里插入图片描述
注意:SMBA与SMbus协议对应。

时钟控制寄存器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据控制逻辑

  IIC的SDA信号主要连接到数据移位寄存器上,数据移位寄存器的数据来源及目标是数据寄存器(DR)、地址寄存器(OAR)、PEC寄存器以及SDA数据线。
  当向外发送数据时,数据移位寄存器以“数据寄存器”为数据源,把数据一位一位地通过SDA信号线发送出去;
  当从外部接收数据时,数据移位寄存器把SDA信号线采样到的数据一位一位地存储到“数据寄存器中”。

总体控制寄存器

用来发送起始信号、结束信号、以及判断总线是否被占用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值