I2C总线
Posted 旭日初扬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I2C总线相关的知识,希望对你有一定的参考价值。
目录
一、简介
- 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、起始信号与停止信号
- 当SCL信号为高电平时,SDA信号由高电平转向低电平,表示I2C通信的开始。
- 当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表示主机由从机读数据。
以上是关于I2C总线的主要内容,如果未能解决你的问题,请参考以下文章