该篇用于介绍I2C总线相关知识。

I2C协议作为一个串行总线标准尽管没有并行总线的数据吞吐能力,但是它的以下特点使其有着广泛的应用:

• 只需要两条总线 — 串行数据线 SDA 和串行时钟线 SCL;
     • 每个连接到总线的器件都可以通过惟一的地址和一直存在的简单的主/从节点关系软件设定地址,主节点可以发送数据或接收数据;
     • 是真正的多主总线,当两个或更多主节点同时初始化数据传输时,可以通过冲突检测和仲裁防止数据被破坏;
    • 串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s,快速模式下可达400kbit/s,高速模式下可达 3.4Mbit/s;
    • 片上的滤波器可以滤去总线数据线上的毛刺波,保证数据完整;
    • 连接到相同总线的 IC 数量只受到总线的最大电容(400pF)限制。
       总线不仅仅是互连的线,还包含系统通信的所有格式和过程。I2C 总线结构上的特点保证了其应用时的简洁,另外其完备的协议避免了所有混乱、数据丢失和妨碍信息的可能性。

一、I2C协议的基本概念

1、主/从节点

主节点负责初始化总线的数据传输,并产生允许传输的时钟信号。此时任何被寻址的器件都被认为是从节点。当有多个主节点在总线上传输数据时,每个主节点产生自己的时钟信号。挂接到总线上的所有外围器件、外设接口都是总线上的节点。

2、总线上节点的寻址方式

在任何时刻总线上只有一个主控器件(主节点)实现总线的控制操作,对总线上的其他节点寻址,可分时实现点-点的数据传送。因此总线上每个节点都有一个固定的节点地址。

I2 C 总线上主节点的地址由软件给定,此地址存放在 I 2 C 总线的地址寄存器中。I 2 C 总线上所有的外围器件都有规范的器件地址。器件地址由 7 位数字组成,它和 1 位方向位构成了 I2 C总线器件的寻址字节 SLA(Slave address)。器件地址是 I2 C 总线外围接口器件固有的地址编码,器件出厂时就已给定。数据方向位规定了总线上主节点对从节点的数据传送方向。

二、时序要求

1、总线上的数据传输时序

由上图可看出:首先,主节点器件发送一个起始信号,接下来主节点器件发送从节点地址和读写方式,一共8位。其中节点地址7位,读写方式一位。与传输地址一致的从节点器件应答(即ACK)。开始数据传输,传输数据数量不限。每个字节后面跟数据接收方的应答位。如:主节点器件读取从节点数据,从节点发送数据,主节点应答;主节点器件写数据到从节点,主节点发送数据,从节点应答。当数据传输结束后,主节点器件发送一个终止信号结束整个过程。

采用I2C总线传输时,对传输的字节数没有限制,只要求每传送一个字节后对方回应一个应答信号。在发送时首先发送的数据的最高位。每次传送开始有起始信号(低电平有效),结束时有停止信号(高有效,表示I2C总线返回空闲状态)。在总线传送完一个字节后,可以通过对时钟线SCL的控制使传送暂停。例如当某个外围器件接收N个字节数据后需要一段处理时间以便继续接收以后的字节数据,这时可以在应答信号后使SCL变为低电平控制总线暂停。如果主节点要求总线暂停也可以使时钟线保持低电平控制总线暂停。

2、总线上的实序信号

(1)起始信号

如上图所示:当时钟线SCL为高电平时,数据线SDA从高电平向低电平变化将形成起始信号,启动I2C总线。

(2)终止信号

如上图所示,当时钟线SCL为高电平时,数据线SDA从低电平向高电平变化将形成终止信号,停止I2C总线,此时I2C总线处于空闲状态。

(3)应答信号

如上图所示,应答信号第9个时钟脉冲对应应答位,相应数据线上低电平时为应答信号,高电平时为非应答信号。

(4)为传送信号

在I2C总线启动后或应答信号后的1-8个脉冲对应于一个字节的8位数据传送。脉冲高电平期间,数据串行传送;低电平期间为数据准备,允许总线上数据电平变换。

FPGA实现I2C协议(一)相关推荐

  1. FPGA学习之路—接口(2)—I2C协议详解+Verilog源码分析

    FPGA学习之路--I2C协议详解+Verilog源码分析 定义 I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半导体(现被NXP收购)开发的两线时 ...

  2. FPGA进阶(2):基于I2C协议的EEPROM驱动控制

    文章目录 第49讲:基于I2C协议的EEPROM驱动控制 理论部分 设计与实现 i2c_ctrl i2c_rw_data eeprom_byte_rd_wr tb_eeprom_byte_rd_wr ...

  3. FPGA实现IIC协议(一)----初识IIC总线

    写在前面 IIC协议系列博文: FPGA实现IIC协议(一)----初识IIC总线 FPGA实现IIC协议(二)----IIC总线的FPGA实现(单次读写驱动) 1.什么是IIC协议 IIC通讯协议( ...

  4. 沧小海详解面试的必答题——I2C协议

    目录 第一部分:I2C协议的概述 第二部分:I2C协议的阐述 第三部分:AT24C04简述 第四部分:基于verilog的程序设计(暂无) 对于大多从事FPGA行业的应届生来说,在面试过程中很可能会被 ...

  5. 基于I2C协议的EEPROM驱动控制

    基于I2C协议的EEPROM驱动控制 `timescale 1ns / 1ps module i2c_ctrl #(parameter DEVICE_ADDR = 7'b1010_000,//i2c设 ...

  6. FPGA IIC总线协议简介

    1.1 FPGA IIC总线协议简介 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA IIC总线协议简介: 5)结束语. 1.1.2 本节引言 "不积 ...

  7. FPGA UART总线协议简介

    1.1 FPGA UART总线协议简介 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA UART总线协议简介: 5)结束语. 1.1.2 本节引言 " ...

  8. FPGA SPI总线协议简介

    1.1 FPGA SPI总线协议简介 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA SPI总线协议简介: 5)结束语. 1.1.2 本节引言 "不积 ...

  9. 【数字IC】深入浅出理解I2C协议

    深入浅出理解I2C协议 一.什么是I2C协议 二.I2C,SPI,UART协议的区别 三.I2C的信号线 四.I2C的连接方式 4.1 单主设备,单从设备 4.2 单主设备,多从设备 4.3 多主设备 ...

最新文章

  1. 查询语句中select from where group by having order by的执行顺序
  2. 关于二叉堆(优先队列)的其他操作及其应用
  3. lora模块在牛联网和智慧农业中的应用案列
  4. 【iOS开发】企业版证书($299)In-House方式发布指南
  5. vue一步一步带你封装一个按钮组件
  6. 大数据系统架构模块解析
  7. 越智能?越危险?技术到底应不应该进步?
  8. 实时即未来!Flink Forward Asia 2021 议程正式上线!
  9. win10调整计算机字体大小,主编教您win10下怎么调整字体大小
  10. java验证码问题(不区分大小写)升级版,输入不正确则一直输入
  11. cmd连局域网mysql_cmd连接局域网mysql
  12. 2015070610 - 看到很多所谓的大牛
  13. pthread_cond_broadcast pthread_cond_signal
  14. 2022.01.19 - SX10-23.零钱兑换
  15. PS设计网页下载使用960栅格系统设计简洁网页
  16. python判断是否包含某数字_python如何判断数组里是否有某个数字
  17. python数据分析岗位_python拉勾数据职位分析
  18. 容易上手的视频画面裁剪软件有哪些?来试试这几款吧
  19. openssl s_server s_client 相关命令参数
  20. linux记录端口访问日志,Linux日志管理

热门文章

  1. 服务器前端文件配置,服务器前端文件配置
  2. 【计算机视觉】基于Python—OpenCV的手势识别详解(一)
  3. 噢~已二十四了。。。
  4. 蓝桥杯单片机竞赛第四届(自动售水机项目)
  5. knife4j整合使用
  6. 养老院管理系统的数据库逻辑结构设计
  7. 小工具|好用的小工具tcping和psping|测试端口延时等
  8. 赖世雄教你学英语语法学习笔记(未完)
  9. Unity实现鼠标的固定与隐藏
  10. html 单选框、复选框 点击文字选中