Xilinx FPGA:vivado关于IIC的一些零碎知识点

一、简介

        IlC(inter-Integrated circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。
        在 CPU 与被控 IC 之间、IC 与 IC  之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。

SDA:数据线 (inout)        SCL:时钟线                 

通信类别:半双工通信(主机给从机发的时候从机不能给主机发)

二、物理层链接

IIC一共有只有两个总线:一条是双向的串行数据线SDA,一条是串行时钟线SCL。
       SDA(Serial data)是数据线,D代表Data也就是数据,Send Data 也就是用来传输数据的。
       SCL(Serial clock line)是时钟线,C代表Clock 也就是时钟 也就是控制数据发送的时序的。
所有接到12C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上12C总线上的每个设备都自己一个唯一的地址,来确保不同设备之间访问的准确性。

(一)IIC的特点

1、IIC主设备功能:主要产生时钟,产生起始信号和停止信号

2、IIC从设备功能:可编程的IIC地址检测,停止位检测。

3、IIC的一个优点是它支持多主控(multimastering),其中任何一个能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

4、支持不同速率的通讯速度,标准速度(最高速度100kHZ),快速(最高400kHZ)。

5、SCL和SDA都需要接上拉电阻(大小由速度和容性负载决定一般在3.3K-10K之间) 保证数据的稳定性,减少干扰。
6、IIC是半双工,而不是全双工,同一时间只可以单向通信

(二)IIC的高阻态

高阻态 = 1'bz = 物理层面断开 = SDA线上电压是VCC = 在数据线上被识别为1

打开sda_en,主设备给从设备传输数据;

关闭sda_en,拉高上拉电阻,让数据线处于高阻态,数据由之前的从设备发送给之前的主设备,之前的从设备作为主机。

高阻状态:高阻状态是三态门电路的一种状态。逻辑门的输出除有高、低电平两种状态外,还有第三种状态--高阻状态的门电路。电路分析时高阻态可做开路理解。

我们知道IIC的所有设备是接在一根总线上的,那么我们进行通信的时候往往只是几个设备进行通信,那么这时候其余的空闲设备可能会受到总线干扰,或者干扰到总线,怎么办呢?
       为了避免总线信号的混乱,IIC的空闲状态只能有外部上拉,而此时空闲设备被拉到了高阻态,也就是相当于断路,整个IIC总线只有开启了的设备才会正常进行通信,而不会干扰到其他设备。

(三)器件地址

IIC器件地址: 每一个IIC器件都有一个器件地址,有的器件地址在出厂时地址就设定好了,用户不可以更改,比如OV7670的地址为0x42。有的器件例如EEPROM,前四个地址已经确定为1010,后三个地址是由硬件链接确定的,所以一IIC总线最多能连8个EEPROM芯片

三、协议层

(一)总时序图

IIC总线在传输数据过程中共有三种类型信号,它们分别是开始信号、结束信号和应答信号。

开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。

结束信号:SCL为高电平时,SDA 由低电平向高电平跳变,结束传送数据。

应答信号:接收数据的 I 在接收到 8bit 数据后,向发送数据的 I发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

(二)单个时序图分析

空闲状态

因为IIC的SCL和SDA都需要接上拉电阻,保证空闲状态的稳定性,所以IIC总线在空闲状态下SCL和SDA都保持高电平。

起始信号

SCL保持高电平,SDA由高电平变为低电平,延时(>4.7us),SCL变为低电平。

停止信号

SCL保持高电平,SDA由低电平变为高电平。

应答信号
        每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据。

应答信号:主机SCL拉高,读取从机SDA的电平,为低电平表示产生应答
应答信号为低电平时,规定为有效应答位(ACK,简称应答位),表示接收器已经成功地接收了该字节;
应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

注:每发送一个字节(8bit),在一个字节传输的8个时钟后的第九个时钟期间,接收器收到数据后必须回一个ACK应答信号给发送器,这样才能进行数据传输。应答出现在每一次主机完成8个数据位传输后紧跟着的时钟周期,低电平0表示应答,1表示非应答。

(三)数据传输

IIC信号在数据传输的过程中,当SCL=1高电平时,数据线SDA必须保持稳定状态,不允许电平跳变,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

注:SCL=1时 数据线SDA的任何电平变换会看做是总线的起始信号或者停止信号。

数据传输格式

        SDA线上的数据在SCL时钟“高“期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高或“低”状态才可以改变。输出到SDA线上的每个字节必须是8位,数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一共有9位)

        当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位ACK(此时SDA线为高阻),此时才认为一个字节真正的被传输完成,如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。

多数从设备的地址为7位或10位,一般用7位。
八位设备地址=7位从机地址+读/写标志位

0表示主设备向从设备写数据

1表示主设备向从设备读数据

注:在起始信号后必须传送一个从机的地址(7位),1-7位为7位接收器件地址,第8位为读写位,“0”表示主机发送数据,“1”表示主机接收数据,第9位为ACK应答位,紧接着的为第一个数据字节,然后是一位应答位,后面继续第二个数据字节。

写:

读:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/784604.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RoPE旋转位置编码从复数到欧拉公式

第二部分 从复数到欧拉公式 先复习下复数的一些关键概念 我们一般用表示复数,实数a叫做复数的实部,实数b叫做复数的虚部 复数的辐角是指复数在复平面上对应的向量和正向实数轴所成的有向角 的共轭复数定义为:,也可记作&#xff0…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥使用介绍及通用流程】

密钥使用介绍及通用流程 为了实现对数据机密性、完整性等保护,可使用生成/导入的密钥,对数据进行密钥操作,比如: [加密解密][签名验签][密钥协商][密钥派生]开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin…

前端面试题28(Vue3的Teleport功能在什么场景下特别有用?能给个例子吗?)

Vue 3 的 Teleport 功能在需要将组件的渲染结果放置在 DOM 树中与当前组件位置无关的任意位置时特别有用。这通常涉及到需要将某些UI元素(如模态框、弹出菜单、通知、工具提示等)从其逻辑上的父级组件中“提取”出来,放置到页面的更高层级或完…

OpenAI Gym Atari on Windows

题意:在Windows系统上使用OpenAI Gym的Atari环境 问题背景: Im having issues installing OpenAI Gym Atari environment on Windows 10. I have successfully installed and used OpenAI Gym already on the same system. It keeps tripping up when t…

2024已过半,还没试过在vue3中使用ioc容器吗?

Vue3 已经非常强大和灵活了,为什么还要引入 IOC 容器呢?IOC 容器离不开 Class,那么我们就从 Class 谈起 Class的应用场景 一提起 Class,大家一定会想到这是 Vue 官方不再推荐的代码范式。其实,更确切的说&#xff0c…

SSO单点登录-1-同浏览器进行单点登录

前端同域 客户端前端同域,则cookie可以存在相同的域名或顶级域名下,一个客户端登录成功后,将token信息保存到域名下的cookie中其他不同客户端访问时,因为域名或者顶级域名相同,也能取到域名下的cookie中的token信息并…

动态粒子发射特效404网站HTML源码

源码介绍 动态粒子发射404网站HTML源码,粒子内容可以进行修改,默认是4,0数字还有一个页面不存在英文,可以自行修改,喜欢的朋友可以拿去使用,源码是html,记事本打开修改即可,鼠标双击…

大模型应用元年,到底有哪些场景可以实际落地场景?

很多企业和个人都号称自己打造了AI大模型实际落地场景,其中有噱头、蹭热点,也有真实落地应用的。下面我将聊聊有哪些应用是真实落地可执行的。 大模型写作 生成式大语言大模型的看家本领非写作莫属。大模型输出logits的基础上加上top_p、top_k、temper…

昇思MindSpore学习笔记5-02生成式--RNN实现情感分类

摘要: 记录MindSpore AI框架使用RNN网络对自然语言进行情感分类的过程、步骤和方法。 包括环境准备、下载数据集、数据集加载和预处理、构建模型、模型训练、模型测试等。 一、概念 情感分类。 RNN网络模型 实现效果: 输入: This film is terrible 正…

Tomcat的负载均衡、动静分离

一、如何tomcat和nginx负载均衡及动静分离:2台tomcat,3台nginx来实现 1.首先设置tomcat1和tomcat2服务器 关闭两台tomcat的防火墙及安全机制:systemctl stop filwalld setenforce 0 进入tomcat目录的webapps中,创建test 2.配…

PI 接口日志设置

一、全局设置 SAP NetWeaver Administrator ---> 配置 ---> 基础架构 ---> Java系统属性 ---> 选择服务页签 ---> 选择 "XPI Adapter:XI"服务进行设置。 1760915 - FAQ: Staging and Logging in PI 7.3 and higher 2518441 - The tablespace PSAPSR…

亿康源精英盛宴暨亿康源启动成功举办

(本台记者报)2024年7月7日下午,亿康源精英盛宴暨启动仪式在杭州市中维歌德大酒店盛大举行。此次盛会不仅吸引了行业内的专业人才、著名投资界大咖和科技领域的杰出企业家,还汇聚了众多关注大健康产业的各界人士,共同见…

【Linux】进程间通信——匿名管道

为什么要进行进程间通信? 1.数据传输:一个进程需要将它的数据发送给另一个进程,比如我们有两个进程,一个负责获取数据,另一个负责处理数据,这时第一个进程就要将获取到的数据交给第二个进程 2.资源共享&…

永磁同步电机无速度算法--滑模观测器(反正切、反余弦)

一、原理介绍 在永磁同步电机滑模观测器控制中,转子的位置和转速信息与反动电势密切相关。滑模观测器控制基本设计思路是:利用永磁同步电机的电压、电流信息,通过永磁同步电机数学模型,估算出电机在两相静止坐标系中的反电动势信…

(十) Docker compose 本地部署 apollo

文章目录 1、apollo2、数据库准备3、启动后会用到的几个地址4、docker-compose运行 apollo方式一:使用容器 hostName 作为网络媒介apollo 客户端通过宿主机端口 拉取配置(推荐)apollo 客户端通过 自定义hostName 拉取配置 方式二:使用端口映射固定 ip 作…

transformer网络学习

Transformer encoder-decoder模型之间共享的是Encoder最后一层输出的hidden-state。 GitHub - huggingface/transformers: 🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX. Bert2Bert中,Encoder的hidden-state同…

阿里开源语音理解和语音生成大模型FunAudioLLM

近年来,人工智能(AI)的进步极大地改变了人类与机器的互动方式,例如GPT-4o和Gemin-1.5等。这种转变在语音处理领域尤为明显,其中高精度的语音识别、情绪识别和语音生成等能力为更直观、更类人的交互铺平了道路。阿里开源…

JAVA Tesseract OCR引擎

Tess4j是一个基于Tesseract OCR引擎的Java库, Tesseract库最初由惠普实验室于1985年开发&#xff0c;后来被Google收购并于2006年开源。识别效果不好&#xff0c;速度还慢&#xff0c;但是好早好早了。 一、POM依赖 <!--OCR识别https://digi.bib.uni-mannheim.de/tesserac…

library source does not match the bytecode for class SpringApplication

library source does not match the bytecode for class SpringApplication 问题描述&#xff1a;springboot源码点进去然后download source后提示标题内容。spring版本5.2.8.RELEASE&#xff0c;springboot版本2.7.18 解决方法&#xff1a;把spring版本改为与boot版本对应的6.…

昇思25天学习打卡营第5天|MindSpore网络模型构建

打卡 目录 打卡 模型类 模型网络&#xff1a;定义与使用 模型层级分解 nn.Flatten 张量转换-演示查看 nn.Dense 全连接层-演示查看 nn.ReLU 非线性激活层-演示查看 nn.SequentialCell 有序网络容器 nn.Softmax 多分类概率预测 模型参数 前置感受&#xff1a;总的来说…