集成电路总线Inter-Integrated Circuit, I2C

《 I2C-bus specification and user manual UM10204—4 April 2014》
I2C详解(一)
I2C协议靠这16张图彻底搞懂(超详细)
I2C通信详解介绍(初学,浅显易懂,基本知识)
IIC、SPI、UART、USART、USB、CAN等通讯协议原理及区别
常用通信协议——IIC详解(全网最全)


1. 功能介绍

集成电路总线(Inter-Integrated Circuit,I2C),仅由双向两条线构成,属半双工、串行、同步通信总线,可使用多主多从架构,是由飞利浦公司在1980年代初设计。

方便了主板、嵌入式系统或手机与周边设备组件之间的低速通讯。由于其简单性,它被广泛用于微控制器与传感器阵列,显示器,IoT设备,EEPROM等之间的通信。

1.1. 半双工 串行 同步

I2C总线只由SDASCL两根线构成,一个串行数据线、一个串行时钟线,其中SDA是双向的,因此可实现master和slave之间的数据半双工收发。

半双工,即要么发送、要么接受,一根输入输出线SDA即可

同时I2C是基于地址对slave和其内部的寄存器进行片选,注意这一点与SPI不同(SPI是csn片选信号),因此I2C可实现多主多从的架构,同时主从器件数量无限制。

不仅如此,I2C的数据传输具备应答功能,每次数据传输,接收方都可返回一个ACK信号。

当有多个master设备想要访问同一个slave,I2C也具备仲裁的功能

在这里插入图片描述

波特率

I2C也是基于同步时钟进行数据传输的,传输速度有不同的模式

双向传输:

● 标准模式(Standard-mode) :高达100 Kbps
● 快速模式(Fast-mode) :高达400 Kbps
● 快速模式+(Fast-mode Plus) :高达1 Mbps
● 高速模式(High-speed mode) :高达3.4 Mbps

单向传输:

● 超快速模式(Ultra Fast-mode):高达5M bps

2. 架构

无论几个master、几个slave,信号输入输出都是如下

注意master要输出SCL但是并不能单独拉一个新的模块baud_clock_gen,这是因为I2C不是基于沿进行驱动和采样数据的,而是基于电平,后文会讲到

Signal Direction Width(bits) Description
prstn input 1 复位信号
pclk input 1 用户时钟
paddr input PADDR_WIDTH APB地址
pwrite input 1 1表示写,0表示读
psel input 1 选通
penable input 1 APB使能
pwdata input PDATA_WIDTH 写数据
prdata input PDATA_WIDTH 读数据
pready output 1 usart准备标志
scl output/input 1 I2C串行时钟总线,master为output、slave为input
sda inout 1 I2C串行数据总线

之后是参数描述

Parameter Units Description
BAUD_RATE bit per second 设定的波特率
PCLK_FREQ HZ clk的时钟频率
PADDR_WIDTH bit 访问SPI内部FIFO的地址位宽
PDATA_WIDTH bit 写入or读出的数据位宽
FIFO_WRITE_WIDTH bit FIFO写深度

3. 逻辑设计

3.1. 一主多从传输

START、STOP与Reapeated start

Byte format与data validity

7bit寻址传输协议

10bit寻址传输协议

3.2. 多主多从传输

时钟同步

数据仲裁

时钟拉伸

地址保留

地址拉伸

4. 测试

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...