i2c总线协议
- 12C(lnter—lntegrated Circuit),PHILIPS公司丿发的两线式半双工同步串行总线,具有接口线少,控制方式简单,通信速率较高等优点。
- 可以用来连接存储器(EEPROM、FLASH)、A/D、D/A转换器、LCD驱动器、传感器等等。
- i2C是一个多主机的总线,每个设备既可以当主控器或被控器,又可作为发送器或接收器,一条总线上可以有多个主机,但同一时刻只允许一个主机工作。
- i2c总线有两根信号线:
双向数据线(SDA)/时钟线(SCL)
总线通信基本概念
- 通信方问划分
全双工:收发数据可以同时进行
半双工:不能同时收发数据,数据发时不能接收,比如i2c - 同步通讯 共用时钟信号线
比如:i2C、SPI,USB3.0
一般不支持远距离传输,通常是板级间的距离小于50cm的TTL电平
同等条件下比异步通讯要快一些 - 异步通讯
比如uart,usb2.0,RJ45
通距会稍远一些.通常是主机设备之间的通信
为了实现跟远距离通讯,一般走差分号.比如:232、485、422、CAN - 串行通信 一个并发数包被分成多次传输,大多数表现为以bit位为单位收发数据
i2c通讯特点
- 因为没有片选信号,所以选择从机是通过地址来实现的
- 通过启起和终止信号来标识一次完整的通信过程
- 通讯过程:
- 主机发起启始信号(时钟高电平期间,数据产生一个下降沿)
- 发送地址,通信之前先通过从机地址选中要通信的从机设备
- 地址一般从模块芯片数据手册中获得
- 有的也提供外I/O来手动指定
- 通常是7位表示,也有10位的地址
- 主机接收对应从机的应答(ACK表示正确应答NACK表示异常应答)
- 开始传输数据,且每传输8bit数据应答一位
- 主机发起停止信号(时钟高电平期间,数据产生一个上升沿)
- 本次通信结束
- 数据传输先发高位,再发低位
- i2c是电平触发数据传输,不同于spi的边沿触发
- 时钟低电平准备数据,时钟高电平采集数据
- 位速率可达400kbit/s
应答信号:
接收器收到每个字节后的第9个时钟周期会发送一个应答信号(ACK)或非应答信号(NACK)
设备地址
每个支持i2c总线的设备,它都会有一个可以代表自己的地址。这个地址是唯一的,用7位或10位来表示,在出厂时己经确定固化。
i2c数据传输办法
i2C为电平触发方式(数据先发高位,再发低位)SDA线上的数据必须在SCL的高电平周期保持稳定。SDA线的电平状态在为低电平周期才可以改变。
i2c时序
i2c传输格式(写数据)
i2c几种工作模式
- 标准模式:位速率100kbit/s。
- 快速模式:位速率可达400kbit/s,向下兼容。
- 高速模式:位速率可达3,4Mbit/s,向下兼容。