我是靠谱客的博主 悲凉芹菜,最近开发中收集的这篇文章主要介绍FPGA实现I2C协议(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

     该篇用于介绍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协议(一)的全部内容,希望文章能够帮你解决FPGA实现I2C协议(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部