51单片机:I2C通信

      最后更新:2022-07-18 14:27:42 手机定位技术交流文章

      注9:IIC通告

      • 前言
      • 一、IIC简介
        • I2C物理层
        • I2C协议层
          • 数据有效性规定
          • 起止信号
          • 总线寻址
          • 数据传输与应答
      • AT24C02时间序列
      • 总结

      前言

      51单片I2C通信,不连线数据存储51芯片和AT24C02通信原理和代码实现

      一、IIC简介

      I2C是一个双级串行总线,用于同步通信,一个SCL时钟线和一个SDA数据线。
      特点: 小接口线, 简单控制模式, 小装置封装形式, 通信速度高, 硬件实现简单, 广泛.

      I2C物理层

      在这里插入图片描述
      注:如果AT24C02的SCL和SDA连接有低电压,则 bus上的SDA和SCL都具有低电压。
      1. 由于 总线 的 默认 高压 水平,如果没有控制SCL或SDA总线的设备,则这是高压;如果设备占有总线,则需要释放总线时,把SDA和SCL放在1上。当设备需要占用公共汽车来进行通信时,如果设备占有公共汽车,需要等公共汽车开动.

      特点:

      1. 支持多主机多从机
      2. 两个阶段的总线,SDA用于数据传输,SCL用于时钟同步(同步或非同步的通信是同步的,区别在于谁从机器控制时钟)。
      3. 与总线连接的设备有一个独特的地址,通过地址与不同的设备进行通信。
      4. 当多个设备同时占用总线时,仲裁方法决定哪些设备占用总线。

      I2C协议层

      数据有效性规定

      1.SDA在SCL高压平衡期间必须保持稳定(即SCL在高压平衡期间不能改变)
      2.当SCL低时,SDA可以更改水平
      在这里插入图片描述

      起止信号

      在这里插入图片描述
      初始和终止信号都由主机发送,机器只能对j无法执行的初始和终止通信作出响应。
      开头信号后, 公共汽车被占用;
      当信号终止时,总线被释放并可以被其他主机使用。

      总线寻址

      在通信时, 必须在发送初始信号后发送一个地址信号.地址也是一种数据, 就像发送数据的顺序一样.

      I2C巴士地址分为7位和10位地址,七位地址定义如下。
      在这里插入图片描述
      例如AT24C02的硬件结构如下:
      在这里插入图片描述
      在这里插入图片描述
      AT24C02的高四位固定是不变的,设备地址由A0、A1和A2图形脚高度平衡确定。 A0、A1和A2牵引脚都安装在P51单片机上。例如,在写给服务器的数据时,发送地址是:10100,即0xA0;在读取服务器的数据时,主机发送地址:101001,即0xA1。

      数据传输与应答

      根据最初的描述,I2C是同步通信的两级串行总线,SCL是时钟线,一个SDA是数据线。

      通过同步通信,主机通过控制SCL时钟线来控制机器的时钟,并通过SDA传输数据。

      与其他通信协议一样,为了保证数据传输的有效性:

      1. 当主机发送数据时,必须等待并从主机接收响应信号(让发送者知道是否继续发送数据)
      2. 当数据从主机接收时,必须向主机发送响应或非响应(告诉发送者是否继续发送数据,响应信号(特定低级)继续发送,非响应信号(特定高级)终止发送)
      3. 当从机没有回应(应答或非应答)时,要将SDA置于高电平,释放总线,让主机产生终止信号结束通信。(起始信号和终止信号都是主机产生的 )

      服务器到服务器,数据发送时间序列图:
      在这里插入图片描述
      在传输数据时, 时钟线和时间序列线由主机控制.

      从机器发送到主机的数据序列
      读取数据类似于发送时间序列。

      1. 由于同步通信, SCL时钟总线总是由主机控制。
      2. 因为数据是读取的,主机必须将SDA总线设置到高压水平,释放SDA总线,SDA总线由主机控制,
      3. 当一个字被接收时,向接收者发送答复或非答复来决定是否继续发送(发送后,等待接收,接收后,发送)。
      4. 同样SCL高电平期间保持SDA电平稳定不能更改,SCL电平期间,SDA电平才能变化;一个SCL电平脉冲,接收一个数据。

      指定的时间序列是将上述数据发送到时间序列左边,SDA(主机)到SDA(主机),SDA(主机)到SDA(主机)

      AT24C02时间序列

      AT24C02(英语:AT24C02)是一种用于通信的外部数据存储设备,例如C51主机,AT24C02作为接收器。

      当C51将数据写入AT24C02时(即从主机发送数据到接收机):
      1.主机发送初始信号
      2. 主机发送寻址信号(以普中单片机为例,发送0xA0),找到要接收的设备(AT24C02)。
      3.主机发送AT24C02的书面地址。
      4.主机发送数据写字
      5.传输完成后,主机发送终止信号。

      当C51想从AT24C02中的地址读取数据时:(从机器发送数据到主机)

      1. 主机发送起始信号
      2. 主机发送地址信号(在PLC单片机中0xA0)
      3. 主机发送AT24C02中读取地址
      4. 主机发送初始信号,重新启动总线
      5. 主机发送读信号(普中单片机AT24C02中为,0xA1)。为什么为0xA1,总线寻址中有解释。
      6. 读取数据。

      总结

      IIC通信是一种两段总线式同步通信协议,AT24C02是一种使用IIC协议的,可断电存储的元器件。不要将IIC通信协议和AT24C02混为一谈。

      之后将上传太多的代码文件到github.

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30000.html

          热门文章

          文章分类