I2C总线

Posted 旭日初扬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I2C总线相关的知识,希望对你有一定的参考价值。

目录

一、简介

二、通讯协议

2.1、物理层

2.2、协议层

2.2.1、数据有效性规定

 2.2.2、起始信号与停止信号

2.2.3、响应

2.2.4、总线的寻址方式


一、简介

  • I2C(Inter-Integrated Circuit):内部集成电路。
  • 由飞利浦公司开发的两线式穿行总线。
  • 用于连接微控制器及其外围设备。
  • 有两根双向信号线,数据线SDA,时钟线SCL。

二、通讯协议

物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。 协议层主要规定通讯逻辑, 统一收发双方的数据打包、解包标准。

2.1、物理层

  •  支持多I2C设备通讯的总线,该总线由SCL总线(串行时钟总线)线路与SDA总线(串行数据总线)线路构成。总线:指多个设备共用的信号线。
  • 总线上的设备都有唯一的地址,主机可以通过唯一的地址访问不同的设备。
  • 总线上通过上拉电阻接到电源,I2C设备空闲时,输出高阻态。所有设备都空闲时,都输出高阻态上拉电阻会把总线拉成高电平
  • 多个主机同时使用总线时,为防止数据冲突,会利用仲裁方式决定哪个设备使用总线。
  • 总线传输模式:标准传输模式:100kbit/s,快速模式:400kbit/s,高速模式:3.4Mbit/s。

I2C常用术语:

  • 主机:启动数据传送、产生时钟信号的设备
  • 从机:被寻址的设备。
  • 多主机:两个或以上的主机同时控制设备但不破坏传输。
  • 主模式:用 I2CNDAT 支持自动字节计数的模式;位 I2CRM,I2CSTT,I2CSTP 控制数据的接收和发送。
  • 发送器:发送数据到总线上的器件。
  • 接收器:从总线上接收数据的器件。
  • 同步:两个或多个器件同步时钟信号的过程。
  • 从模式:发送和接收操作都是由I2C模块自动控制。

2.2、协议层

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

2.2.1、数据有效性规定

  • 总线上传输数据时,时钟信号为高电平期间,数据线上的数据必须保持稳定。
  • 时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
  • 每次数据传输都以字节为单位,每次传输的字节数不受限制。

 2.2.2、起始信号与停止信号

  1. 当SCL信号为高电平时,SDA信号由高电平转向低电平,表示I2C通信的开始。
  2. 当SCL信号为搞电平时,SDA信号由低电平转向高电平,表示I2C通信的结束。

2.2.3、响应

  • 发送器件发送一个字节(8位)+校验位。
  • 校验位通过接收端SDA实现,提醒发送端数据已经收到,数据可以继续发送。
  • 此校验位是数据或地址传输过程中的响应。
  • 响应:包含应答(ACK)特定低电平脉冲、非应答(NACK)特定高电平脉冲
  • 数据接收端,在I2C通信中接收到一个字节的数据或地址,若希望再接收数据则要向发送端发送"ACK"应答(特定的低电平脉冲),不希望接收数据则向发送端发送NACK应答。

2.2.4、总线的寻址方式

I2C总线寻址方式按从机地址位数可分为两种,一种是7位,一种10位。

  •  D7~D0位组成从机地址,D0位为数据传送的方向。
  • D0位:0表示主机向从机写数据,1表示主机由从机读数据。
  • 主机发送一个地址后,总线上的每个器件都将头7位与它自己的地址比较,若一致,器件判定它被主机寻址,地址不同的器件则忽略后面的数据信号。
  • 接收器还是发送器,由R/W决定。

三、程序

3.1、硬件

 

以上是关于I2C总线的主要内容,如果未能解决你的问题,请参考以下文章

I2C总线信号时序总结

I2C总线

I2C总线协议详解

I2C总线协议的软件模拟实现方法

I2C笔记

Arduino IIC协议笔记