FPGA开发——IIC协议介绍

news2024/11/24 14:25:08

简介

其实关于IIC通信协议的相关原理的相关理论我在最开始的文章当中进行过讲解,但是没有详细的去进行过说明,在今天的这篇文章中我们就来详细说明一下IIC协议的相关理论。

一、IIC 总线组成

1、定义介绍

        采用串行总线可以简化系统硬件结构、减小系统体积、提高系统可靠性。常 用的串行总线有单总线(1-Wire Bus)、IICInter-Integrated Circuit)、SPI(Serial Peripheral Interface)等。 IIC 总线是 Phlips 公司推出的一种同步串行总线,是一种支持多主机多从机 系统、总线仲裁以及高低速器件同步功能的高性能串行总线技术。 IIC 总线只有两根双向信号线:一根是数据线 SDA,一根是时钟线 SCL

        多主机多从机 ---- IIC 总线系统上可以挂载多个主机设备与从机设备;
        总线仲裁----对于总线上挂载有多主机设备的情况下,为避免多个主机同 时向总线发起通信,需要有相应的总线仲裁机制,避免出现总线冲突;
        高低速器件同步-- 通过 IIC 总线连接的两个器件的传输速度不一定相同, 因此需要通过从机的时钟延展( clock stretching )功能保证两者的通信速度一致。
即:如果果从机跟不上主机的速率, IIC 协议规定从机可以通过将 SCL 时钟线拉 低来暂停传输直到从机释放掉 SCL 线,传输才能继续进行。

2、传输速率

        标准模式:100Kbit/s
        快速模式:400kbit/s
        高速模式:3.4Mbit/s

三、工作原理

        每一个连接到 IIC 总线上的器件都有一个唯一的器件地址( ID),主机通过 ID 建立多机通信机制,因此 IIC 总线节省了外围器件的片选信号线。虽然 IIC 总 线上可以连接多个主机和多个从机,但是同一时刻,只能有一个主机向总线上发 起传输,如果有多个主机同时发起传输,则会根据 IIC 总线的仲裁机制,最终 只给一个主机授权,没有得到仲裁的主机则会停止传输。而且, IIC 总线上只能 由主机主动发起传输,从机无法主动发起传输,这也就意味着从机和从机之间也
是无法直接交换数据的。
        IIC 总线在传输数据时必须遵循规定的数据传输时序,一次完整的数据传输 过程中共有四类信号:起始信号、数据信号、应答信号和停止信号。
        起始信号:在 SCL 为高电平时, SDA 的电平由高电平跳变为低电平,称为 I2C 总线的起始信号,标志着一次数据传输开始。起始信号由主机主动产生,在 产生起始信号之前 I2C 总线必须处于空闲状态。
        停止信号:在 SCL 为高电平时, SDA 由低电平跳变为高电平,称为 I2C 总 线的停止信号,标志着一次数据传输终止。停止信号由主机主动产生,产生停止 信号之后 I2C 总线将返回空闲状态。
        数据信号:IIC 总线传输数据时,在 SCL 为高电平时, SDA 必须保持稳定的 逻辑电平,高电平表示数据 1 ,低电平表示数据 0 ;只有在 SCL 为低电平时才允 许 SDA 上的电平状态改变。
        应答信号:IIC 总线传输数据时,每传输一个字节后都必须有一个 SCL 周期 的应答信号;与应答信号相对应的时钟由主机产生,发送端必须释放 SDA 使其 处于高电平状态,以便接收端在这一个 SCL 周期发出应答信号。
        应答信号有两种状态:应答(ACK )、非应答( NACK),接收端在应答位期 间输出低电平则为应答,输出高电平则为非应答。
        当由于某种原因,从机设备不产生应答时,如从机在进行其它处理而无法接 收总线上的数据时,必须释放 SDA 总线,然后由主机产生一个停止信号以终止 数据传输。
当主机在接收数据时,接收到最后一个字节后,必须给从机发送一个非应答 信号,使从机释放总线以便主机可以发送停止信号,终止数据传输。
        需要注意的是:在某些情况下,从机在收到一个完整的字节后,有可能因为 需要忙于其它工作(如处理内部中断服务)而无法立刻接收下一个字节,这时从 机需要将 SCL 拉为低电平,从而强制主机处于等待状态,直到从机准备好接收 下一个字节时,再释放 SCL 为高电平状态,从而可以继续传输数据。这种现象 称为时钟拉伸( Clock Stretching )。

四、数据地址

IIC 总线协议规定:起始信号表明一次传输开始,其后为寻址字节(高 7 位 为从机地址、最低 1 位为方向位,方向位表明主机与从机之间的数据传输方向, 0-- 主机发送数据给从机, 1--从机发送数据给主机);在寻址字节后是对应的读、 写操作的数据字节和应答位;在数据传输完成后主机必须发送停止信号。
IIC 总线的数据传输方式有许多读、写组合方式:主机写操作、主机读操作、 主机读写操作。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科技在环境保护中的作用

面对日益严峻的环境问题,‌科技在环境保护中发挥着越来越重要的作用。‌从清洁能源的开发和应用,‌到环保技术的不断进步,‌再到智能环保监测系统的建立,‌科技正以前所未有的力量推动着环境保护事业的发展。‌ 清洁能源技术的开…

揭秘!移动安全管理系统是什么?有什么功能?(从小白到精通一文揭晓!)

在2024年,移动终端管控软件在企业和组织中的应用日益广泛。 移动安全管理系统不仅提高了管理效率,还增强了数据安全性和移动办公的便捷性。 以下是六款值得推荐的移动终端管控软件: 1. 安企神 特点:作为行业领头羊,…

【PHP入门教程】PHPStudy环境搭建+HelloWorld运行

文章目录 PHP 的历史PHP 的用途PHP 的特点和优势PHP 环境搭建环境准备安装window 安装CentOS / Ubuntu / Debian 安装 第一个Hello World使用Apache服务运行命令行运行代码 PHP 的历史 PHP(Hypertext Preprocessor)超文本预处理器是一种开源的通用脚本语…

m3u8转mp4,3款软件让你快速转换!

在这个数字化时代,视频已成为我们生活中不可或缺的一部分。无论是学习资料、娱乐影片还是工作演示,视频文件总是以不同的格式存在。其中,M3U8和MP4作为两种常见的视频格式,各有其应用场景。然而,有时我们需要将M3U8格式…

如何在算家云搭建模型Linly-Talker(数字人文本配音)

一、模型介绍 Linly-Talker 是一款集成了多种人工智能技术的数字人对话系统,集成了各种技术,例如 Whisper、Linly、微软语音服务和 SadTalker 会说话的生成系统。该系统部署在 Gradio 上,用户可通过上传图像与 AI 助手进行互动,可以根据自己…

UDP+TCP

一、UDP协议 1.recvfrom:recvform(int sockfd,void *buf,size_t len,int flags,struct sockaddr *src_addr,socklen_t *addrlen); 参数:socket的fd; 保存数据的空间地址 ; 空间大小; 默认接收方式(默认阻塞&#xf…

【蓝桥杯集训100题】scratch游泳时长 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第27题

目录 scratch游泳时长 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 scratc…

5 分钟 Stable Diffusion 本地安装指南

一、Stable Diffusion 简介 Stable Diffusion 是一款非常强大的基于深度学习的 AI 图像生成技术。它由众多研究团队和开发者共同努力而成,其中包括德国慕尼黑大学和总部位于纽约的 RunwayML 公司的国际研究团队。 Stable Diffusion 的工作原理基于扩散模型。简单来…

TCP和UDP编程的学习

UDP编程特点:c/s模型 不可靠 ; 无链接 ;数据报形式(效率高); TCP编程特点: 面向链接; 可靠传输;(保证数据准确可靠); 面向字节流&a…

ES6解构赋值详解;全面掌握:JavaScript解构赋值的终极指南

目录 全面掌握:JavaScript解构赋值的终极指南 一、数组解构赋值 1、基本用法 2、跳过元素 3、剩余元素 4、默认值 二、对象解构赋值 1、基本用法 2、变量重命名 3、默认值 4、嵌套解构 三、复杂的嵌套结构解构 四、函数参数解构赋值 1、对象解构作为函…

wordrpess心得

基本心得 多语言切换方式&#xff1a; 使用en.xxxx和jp.xxx多域名实现&#xff0c;配合宝塔面板管理 举例&#xff1a;切换按钮 <div class"language-switcher"><a class"language-button" href"https://xxx">JA</a> <a c…

【C++ Primer Plus习题】2.2

问题: 解答: #include <iostream> using namespace std;#define LONG_TO_MA 220int main() {double distance 0;cout << "请输入距离(单位为long):";while (true){cin >> distance;if (cin.fail()){cout << "输入有误!请输入数字:&qu…

一键过原创工具,轻松搬运文章秒变原创

在当今信息爆炸的时代&#xff0c;内容创作的重要性不言而喻。对于追求效率的创作者来说&#xff0c;一键过原创工具无疑是一股清新的风潮&#xff0c;它以其独特的功能&#xff0c;让文章搬运变得轻松&#xff0c;瞬间转化为原创佳作。一键过原创工具的诞生&#xff0c;不仅代…

【OpenCV】 中使用 Lucas-Kanade 光流进行对象跟踪和路径映射

文章目录 一、说明二、什么是Lucas-Kanade 方法三、Lucas-Kanade 原理四、代码实现4.1 第 1 步&#xff1a;用户在第一帧绘制一个矩形4.2 第 2 步&#xff1a;从图像中提取关键点4.3 第 3 步&#xff1a;跟踪每一帧的关键点 一、说明 本文针对基于光流法的目标追踪进行叙述&am…

Godot利用刚体让3d物体动起来

效果如图 有人说你怎么能控制刚体不是物理引擎控制吗&#xff1f;哈哈&#xff0c;非也&#xff0c;非也&#xff0c;我控制不是刚体而是相机&#xff0c;记住刚体的运动状态是不受玩家控制的&#xff0c;你最多给一个力&#xff0c;但是这个力怎么让物体运动是由物理引擎控制。…

Vivado生成bitstream时报[DRC CFGBVS-1]警告的问题

目录 警告信息解决方法 警告信息 [DRC CFGBVS-1] Missing CFGBVS and CONFIG_VOLTAGE Design Properties: Neither the CFGBVS nor CONFIG_VOLTAGE voltage property is set in the current_design. Configuration bank voltage select (CFGBVS) must be set to VCCO or GND, …

6.Linux_服务器搭建

TFTP服务器 1、概述 什么是TFTP服务器&#xff1a; TFTP&#xff08;Trivial File Transfer Protocol&#xff09;即简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议&#xff0c;提供不复杂、开销不大的文件传输服务。端口号为69 介…

垃圾分类网站

TOC springboot0769垃圾分类网站 绪论 1.1研究背景 随着网络不断的普及发展&#xff0c;垃圾分类网站依靠网络技术的支持得到了快速的发展&#xff0c;首先要从用户的实际需求出发&#xff0c;通过了解用户的需求开发出具有针对性的垃圾分类、垃圾图谱等功能&#xff0c;利…

集成测试怎么做?

任何产品想要长期保持高质量运行&#xff0c;集成测试正是实现这一目标必不可少的工具。 本文重点介绍集成测试实现的流程&#xff0c;而非测试工具本身。我们的目的是聚焦于创建测试过程中你可能遇到的问题&#xff0c;以便你能自主地推进工作。 缺陷的成本 细节决定成败&a…

黑神话孙悟空:超燃视频混剪制作

黑神话孙悟空&#xff0c;这个名字如今在游戏界乃至整个网络世界都如同一颗璀璨的超新星&#xff0c;光芒万丈。 它的热度持续飙升&#xff0c;只要与这个话题相关联&#xff0c;仿佛就拥有了吸引大量关注的魔力。 对于那些不太懂自媒体运营的小伙伴来说&#xff0c;如何在这股…