FPGA常用通信协议之IIC

2023-11-05

 

目录

1、概述

2、IIC时序

2.1数据位的有效性规定

2.2起始/终止/应答/非应答信号

2.3数据传送格式

2.4总线的寻址

3 FPGA读写EEPROM

3.1EEPROM芯片手册

3.1.1写时序:

3.1.2读时序

3.1.3硬件原理图:

3.2RTL设计

3.2.1项目需求分析

3.2.2架构设计

4.IIC 工程Verilog代码下载


 

1、概述

    IIC(Inter-Integrated Circuit集成电路总线),IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。IIC总线上允许连接多个微处理器以及各种外围设备,如存储器LED及LCD驱动器、A/D及D/A转换器等。

     IIC总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。

 

     每个接到IIC总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。

     在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱, IIC总线要通过总线仲裁,以决定由哪一台主机控制总线。

2、IIC时序

2.1数据位的有效性规定

    IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

2.2起始/终止/应答/非应答信号

SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;

SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 

应答信号是由数据接收方发出的,当SCL为高电平期间,如果监测到SDA为低电平,说明有应答信号;

非应答信号也是由数据接收方发出的,当SCL为高电平期间,如果SDA为高电平,说明有非应答信号。

起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。

接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。

2.3数据传送格式

1)字节传送与应答

每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。

如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。

当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从机释放SDA线,以允许主机产生终止信号。

2)数据帧格式

I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。

在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。

在总线的一次数据传送过程中,可以有以下几种组合方式:

a、主机向从机发送数据,数据传送方向在整个传送过程中不变:

注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。“从机地址”,指IIC总线上的器件的唯一地址,或者是将要访问从机器件的存储地址空间。

 A表示应答, A非表示非应答(高电平)。S表示起始信号,P表示终止信号。

b、主机在第一个字节后,立即从从机读数据。

 

c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。

2.4总线的寻址

I2C总线协议有明确的规定:采用7位的寻址字节(寻址字节是起始信号后的第一个字节)。

 (1)寻址字节的位定义

D7~D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。

主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/T位将自己确定为发送器或接收器。

从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该IIC总线系统中。

3 FPGA读写EEPROM

3.1EEPROM芯片手册

以24LC64芯片为例,其管脚封装及管脚说明如下:

3.1.1写时序:

 

由时序图可以看出,如果我们要向EEPROM写入一个字节,那么必须经过以下步骤:

  1. 发送启动信号start;
  2. 发送控制字1010_0000;
  3. 接收并检测EEPROM发来的应答信号ACK;
  4. 发送高字节地址位;
  5. 接收并检测EEPROM发来的应答信号ACK;
  6. 发送低字节地址位;
  7. 接收并检测EEPROM发来的应答信号ACK;
  8. 发送8bit有效数据;
  9. 接收并检测EEPROM发来的应答信号ACK;
  10. 发送停止信号;

3.1.2读时序

由时序图可以看出,如果我们要从EEPROM任意地址空间读出一个字节,如图figure5所示,那么必须经过以下步骤:

1. 发送启动信号;

  1. 发送控制字1010_0000;
  2. 接收并检测EEPROM发来的应答信号ACK;
  3. 发送高字节地址位;
  4. 接收并检测EEPROM发来的应答信号ACK;
  5. 发送低字节地址位;
  6. 接收并检测EEPROM发来的应答信号ACK;
  7. 发送启动信号;
  8. 发送控制字1010_0001;
  9. 接收并检测EEPROM发来的应答信号ACK;
  10. 读取一个字节数据;
  11. 发送NO ACK信号;
  12. 发送停止信号;

3.1.3硬件原理图:

由此可以看出我们的位选信号为“000”,EEPROM可读写。

3.2RTL设计

3.2.1项目需求分析

        用两个按键控制EEPROM读写,当写按键按下时,向EEPROM某一固定地址写入一个字节数据,当读按键按下时,将该地址数据读出,并显示到数码管。

3.2.2架构设计

 

说明:LED灯是一个标志信号,LED亮说明数据写入完毕

 

4.IIC 工程Verilog代码下载

下面附上完整的IIC读写访问EEPROM的工程代码。需要的童鞋请自行下载。

https://download.csdn.net/download/qq_22168673/11017534

 

 

>>点击这里返回导航页<<

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FPGA常用通信协议之IIC 的相关文章

  • ant design of vue 之文件上传组件(腾讯云)封装

    原理 通过调用后台接口获取腾讯云秘钥 然后将秘钥以及文件信息上传到腾讯云 获取文件腾讯云存储信息 最后组件将腾讯云存储信息返回出去 在组件外部调用后台接口将腾讯云信息存到后台 安装cos js sdk v5依赖 npm i cos js s
  • 2021数据治理工具图谱研究报告 附下载

    根据2021年4月发布的 国家数据资源调查报告 2020 显示 2019年我国数据产量总规模为3 9ZB 同比增加29 3 占全球数据总产量 42ZB 的9 3 人均数据产量方面 2019年我国人均数据产量为3TB 数据来源结构方面 数据资
  • 机器学习中的高斯过程

    0 前言 写这篇文章的目的就是为了总结一下最近在学习的高斯过程的一些内容 但是由于我是初学者可能有些地方理解不到位 请大家多多谅解 文末附上了一些数学方面的推导 1 高斯过程定义 高斯过程是在连续域上定义的一种随机过程 可以看成连续域中所有
  • vue中通过js把从接口取到的url中的{}里的参数替换成对应的值

    最近工作中遇到个需求 首先在一个页面中给按钮配置个点击跳转的链接 手动输入需要跳转的url及其需要的参数 后续要在另一个页面中通过接口取到配置的这个url 并替换掉当中的参数 第一次处理这种情况 所以记录一下 前端页面配置url 参数值通过
  • 【YOLO系列】YOLOv5超详细解读(网络详解)

    前言 吼吼 终于来到了YOLOv5啦 首先 一个热知识 YOLOv5没有发表正式论文哦 为什么呢 可能YOLOv5项目的作者Glenn Jocher还在吃帽子吧 hh 目录 前言 一 YOLOv5的网络结构 二 输入端 1 Mosaic数据
  • m118w重置墨粉_富士施乐 Fuji Xerox DocuPrint M118w/M118z重置墨粉页面计数器及重置硒鼓...

    富士施乐M118w的硒鼓和分仓是独立的 前几天M118w就提示墨粉已经不足 于是Pop就看了一下机器 打印了约1200张了 随机器来的原装可能就是这样而已 于是就了解了一下富士施乐M118w如何加粉 如何换硒鼓 以及如何清零重置硒鼓的操作
  • Mac os 10.14装virtualbox 失败的解决方案

    1 Mac 系统装virtualbox 失败如下 2 由于Mac 10 14的安全级别更高 所以导致这个软件安装过程失败 需要一下操作安装就没问题 2 1 开启通用里的允许任何来源 sudo spctl master disable 2 2
  • LeetCode 44 Wildcard Matching (通配符匹配 记忆化搜索 剪枝 推荐)

    Given an input string s and a pattern p implement wildcard pattern matching with support for and Matches any single char
  • Freertos中vTaskDelay()是怎么用的

    1 常见的使用场景 void vLED Task void pvParameters while 1 Heartbeat LED vTaskDelay 1000 portTICK RATE MS 说明 上面这段代码的意思是 led翻转后经过
  • Exception in thread "main" java.lang.NoClassDefFoundError解决

    1 错误描述 Exception in thread main java lang NoClassDefFoundError HelloWorld wrong name org xuwei HelloWorld at java lang C
  • 2018年最好的8款杀毒软件

    如今 网络犯罪和欺骗和攻击电脑的病毒 特洛伊木马和网络钓鱼诈骗导致损失的事件并没有像人们想像的那么频繁发生 这意味着很多人正在使用最强大的安全软件保护自己的电脑 而其一如既往地重要 这就是为什么推出这个2018年全球最佳防病毒软件名单的原因
  • 搭建商城的微服务架构-1

    创建父项目 mall 先创建一个 父项目 mall 再在这个父项目中创建多个子项目 修改pom文件 最终mall的pom文件如下
  • 目标检测算法回顾之Anchor free篇章

    基于anchor free的目标检测方法 一 背景与定义 1 1 anchor based的特征 1 2 anchor的好处 1 3 anchor的局限 1 4 anchor free 与anchor based的区别 二 概述 三 早期探
  • 以太坊2.0 节点搭建:共识端+执行端

    1 配置 本人使用配置 共识端 prysm 版本 3 1 1 执行端 geth 版本 1 10 23 当前使用1 10 25 OS centos7 6 CPU 8核 Memory 16GB RAM Storage 3T SSD Networ
  • 算法梳理boosting\bagging\RF(1)

    LeetCode题目记录 1 集成学习概念 1 1 集成学习分类 1 2 集成学习步骤 2 个体学习器概念 3 boosting bagging 3 1 boosting 3 2 bagging 3 3 二者的区别 4 随机森林的思想 5
  • mlxtend实现简单的Apriori算法(关联算法)

    关联算法有几个重要的概念 下面以官方教程为例 Apple Beer Rice Chicken Apple Beer Rice Apple Beer Apple Bananas Milk Beer Rice Chicken Milk Beer

随机推荐

  • springmvc使用JSR-303进行校验

    下面提供一种springmvc的校验方案 一般没有校验或者手动写validator的话都要写好多代码好多if判断 使用JSR 303规范校验只需要在Pojo字段上加上相应的注解就可以实现校验了 1 依赖的jar包 我直接贴pom了
  • cannot find -l 问题处理

    graalvm打包最后一步 第七步 报错 主要错误简述 It appears as though libstdc a is missing Please install it cannot find lstdc 几个要点 1 l是link的
  • c++模板的概念全新解释

    文章目录 前言 一 模板的概念 强类型的严格性和灵活性 解决冲突的路径 模板的概念 一 1 函数模板 函数模板的定义 函数模板的实例化 函数模板的重载 1 函数模板的重载 2 用普通函数重载函数模板 3 用特定函数重载函数模板 类模板 类模
  • Jsch网络工具包的使用及源码简析

    一 背景 最近 导师安排了些看论文文献并整理论文至文件服务器的工作 在实验的过程中 我们知道常见的上传文件至服务器有以下方式 ftp sftp协议进行上传 ssh连接 并通过scp命令进行上传 通过xftp xshell ftplina等图
  • 【QT】Qt Creator 右击添加库无反应解决方案【转发】

    一 软件版本 Qt 5 9 0 二 问题现象 想向工程添加外部库 但点击添加库无反应 三 解决方案 1 打开 pro 文件 2 在 pro 文件界面内 右击鼠标 选择添加库 3 添加库的 UI 弹出 四 总结 Qt 5 9 0 Creato
  • c#.net常用的小函数参考

    选择自 crabapple2 的 Blog c net常用的小函数和方法集 1 DateTime 数字型 System DateTime currentTime new System DateTime 1 1 取当前年月日时分秒 curre
  • 记录JsonNode文本处理asText()和toString()的差异

    原文地址 https blog csdn net xudc0521 article details 89926158 最近使用JsonNode解析json字符串时 遇到一个与预期不一致的小问题 记录一下 先来看一个Test author x
  • log4j问题解决:log4j:WARN No appenders could be found for logger

    在resources目录下新建log4j properties文件 添加以下代码 log4j rootLogger ERROR log4j appender CONSOLE org apache log4j ConsoleAppender
  • 浙江大学 陈越_浙江大学陈越教授开展“程序设计课程建设”讲座

    12月10日下午 媒体工程学院耿卫东院长邀请了浙江大学陈越教授开展 程序设计课程建设 讲座 学院各课程群负责人 专业主任及其他专业教师共30余人聆听了讲座 并围绕 程序设计课程建设 的主题展开了深入探讨和交流 学院副院长章化冰主持讲座 代表
  • java基础学习 day25(二维数组)

    什么是二维数组 在数组中存放数组 二维数组的应用场景 当我们需要把数据分组管理的时候 就需要用二维数组 静态初始化格式 数据类型 数组名 new 数据类型 元素1 元素2 元素1 元素2 简化格式 数据类型 数组名 元素1 元素2 元素1
  • Java使用JVM工具检测问题

    1 jps 显示运行程序的进程 编码 主类目录信息 public class Demo01 jps 显示进程ID 主类名称 jps v 显示进程ID 主类名称以及详细编码信息 jps l 显示进程ID 主类目录 param args thr
  • 简单理解B树和B+树

    前言 前面我们说了红黑树 他是一种特殊的搜索树 但是由于他只是二叉树 所以这就导致他在大量的数据面前深度过高 同时会造成大量的磁盘空间浪费 所以我们又研究出来了B树和B 树 B树 他是人们早期的一种设计 他打破了二叉树的方式 它可以有多个分
  • android小项目之新闻客户端二

    基于Android的小巫新闻客户端开发 UI设计 主界面 2013年2月15日 由于太多事情要乱 不可能只专注一样东西 因为怕完成不了任务 原本这系列博客就是要在寒假搞定的 没想到拖了那么久 没办法 现在只能有空的时候就回顾一下小巫新闻客户
  • 多输入多输出

    多输入多输出 MATLAB实现DNN全连接神经网络多输入多输出 目录 多输入多输出 MATLAB实现DNN全连接神经网络多输入多输出 预测效果 基本介绍 模型结构 程序设计 参考资料 预测效果 基本介绍 DNN的结构不固定 一般神经网络包括
  • 所见即所得,使用Java将HTML解析为Excel,支持多级表头嵌套、单元格合并

    最近项目需要实现如题 所见即所得 的功能 之前每次生成Excel都需要重新从数据库查询一遍 降低效率不说 那些嵌套的表头实在是很难用Sql嵌套拼接实现 而且这样做还没有通用性 不同的表格需要写不同的Sql实现 非常繁琐 在网上找了很多关于H
  • SAP 程序中权限检查和用户权限缺失检查 SU53

    1 在程序中调用权限对象 在很多SAP标准程序中 已经存在了对权限数据的调用及管控功能 在程序中可以通过ABAP程序编辑器快速插入调用权限的代码 权限代码需要放在AT SELECTION SCREEN 事件块里 AUTHORITY CHEC
  • 飞飞影视php 漏洞,飞飞影视SQL injection exploit[转]

    飞飞影视管理系统 SQL injection 飞飞影视系统PHP版 v1 9 injection exploit by www 08sec com fans keyword Powered by www ff84 com error rep
  • vue.js关于动态绑定数据

    最近在写vue的时候发现一个问题 在后台传过来的一个数组需要给页面进行渲染 需要为每个 li 标签吧绑定一个点击事件 这个点击事件需要取这个 li li 标签的name属性的值 然后再进行页面的跳转 如何给name赋值呢 刚开始如上图写的
  • vue+element+el-table表格简单封装成组件

    封装后调用 我的页面是这样的 像那些图片 按钮 和状态这些 都是埋好的具名插槽 配置的时候先传插槽的名字 然后在table组件中对应名字 就形成了 具体看代码 比较详细 直接复制引用就可以展示 我在props里定义了点默认值 引用时方便理解
  • FPGA常用通信协议之IIC

    目录 1 概述 2 IIC时序 2 1数据位的有效性规定 2 2起始 终止 应答 非应答信号 2 3数据传送格式 2 4总线的寻址 3 FPGA读写EEPROM 3 1EEPROM芯片手册 3 1 1写时序 3 1 2读时序 3 1 3硬件