IIC通信协议总结(详细说明完整过程)

IIC通信协议总结(详细说明完整过程)IIC协议简介IIC(inter-integratedCircuit集成电路总线)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它需要两根信号线来完成信息交换。IIC的一个特殊工艺优势是微控制器只需要两个通用I/O引脚和软件即可控制芯片网络。IIC最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100Khz、7-bit标准地址,1992年,IIC的第一个公共规范发行,增加了400Khz的快速模式以及10bit地址扩展。IIC协议IIC协议把传输的消息分为两种类型

大家好,又见面了,我是你们的朋友全栈君。

IIC协议简介

IIC(inter-integrated Circuit集成电路总线)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它需要两根信号线来完成信息交换。IIC的一个特殊工艺优势是微控制器只需要两个通用I/O引脚和软件即可控制芯片网络。IIC最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100Khz、7-bit标准地址,1992年,IIC的第一个公共规范发行,增加了400Khz的快速模式以及10bit地址扩展。

IIC协议内容

IIC协议把传输的消息分为两种类型的帧:
地址帧–用于master指明消息发往哪搁slave;
数据帧(单个或者连续)– 由master发往slave的数据或者是接收到来自于slave的数据。一次读写单位为8bit,高位先发
注:IIC读写是相对于master来说的。
IIC总线的数据传送
1、数据位有效性的规定:
IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟电平为低电平期间,数据线上的高电平或者低电平状态才允许变化。
即数据在时钟线SCL的上升沿到来之前就需要准备好,并在下降沿到来之前必须保持稳定。
2、空闲状态:
当IIC总线的数据线SDA和时钟线同时处于高电平时,规定为总线的空闲状态。此时各个器件输出级场效应管均处在截止状态,即释放总线,由两条信号线的上拉电阻把电平拉高。
3、起始和终止信号:
SCL为高电平期间,SDA信号线由高电平向低电平的变化表示起始信号;SCL为高电平期间,SDA由低电平向高电平的变化表示终止信号。
SDA:由低到高 – 起始信号
SDA:由高到低 – 终止信号
起始信号和终止信号都是由主机发送的,起始信号产生之后,总线处于被占用的状态,在终止信号产生之后,总线就处于空闲状态。
在这里插入图片描述

4、应答信号:
发送器每发送一个字节(8个bit),就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。
应答信号为低电平时,规定为有效应答(ACK,简称应答位),表示接收器已经成功地接受了该字节
应答位为高电平时,规定为非应答信号(NACK),一般表示接收器接收该字节没有成功。
对于反馈的有效应答信号ACK的要求是:接收器在第9个时钟脉冲之前的低电平期间将数据线SDA拉低,并且确保在该时钟的高电平期间为稳定的低电平。如果接受器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放数据线SDA,以便主控接收器发送一个停止信号P。
5、数据传送格式:
(1)字节传输与应答:每一个字节必须保证是8bit长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随1bit的应答位(即每一帧数据一共有9bit)
(2)在IIC总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发。
6、总线寻址:
(1)IIC协议规定采用7bit的寻址字节(寻址字节是起始信号后的第一个字节)其位定义如下:
| bit | 7 | 6 | 5 | 4 |3 |2|1| 0|
D7 ~ D1位组成从机地址。
D0位是数据传送的方向,0:表示主机向从机写数据,1:表示主机由从机读数据。
(2)主设备往从设备中写寄存器。数据传输格式如下:
在这里插入图片描述
1)首先由由主机发送一个开始信号,
2)然后主机在数据线上广播从机地址
3)确定数据的传输方向(是读还是写)
4)“A”代表应答,表示主机找到了从机。
5)主机发送一个字节数据,从机接收到后,会返回给主机一个应答信号,直到主机发送完数据,或者从机返回一个NACK信号,表示从机不再接收主机发送的数据。主机发送一个stop信号。此次数据传输完成。
(2)主机读取从机寄存器值:
在这里插入图片描述
1)首先由主机发送一个开始信号
2)然后主机在数据总线上广播地址
3)确定数据的传输方向(读1)
4)从机返回一个“A”代表应答,表示主机找到了从机。
5)从机返回读的数据
6)主机返回一个应答信号,表示成功接收从机发出的一个数据
7)当主机接收数据完毕,返回一个非应答信号“NACK”,从机释放数据总线,接着主机发送一个“P”信号,表示此次数据传输结束。
在这里插入图片描述
1)主机首先产生START信号
2)然后紧跟着发送一个从机地址,注意此时该地址的第8位为0,表明是向从机写命令,
3)主机等待从机的应答信号(ACK)
4)当主机收到应答信号时,发送要访问的地址,继续等待从机的应答信号,
5)当主机收到应答信号后,主机要改变通信模式(主机将由发送变为接收,从机将由接收变为发送)所以主机重新发送一个开始start信号,然后紧跟着发送一个从机地址,注意此时该地址的第8位为1,表明将主机设 置成接收模式开始读取数据,
6)主机等待从机的应答信号,当主机收到应答信号时,就可以接收1个字节的数据,当接收完成后,主机发送非应答信号,表示不在接收数据
7)主机进而产生停止信号,结束传送过程。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134472.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pandas小记:pandas索引和选择

    pandas小记:pandas索引和选择http://blog.csdn.net/pipisorry/article/details/18012125检索/选择索引选择时建议全部使用loc(尤其是修改df原本数据时),原因是最下面说的视图和显示拷贝。dataframe列选择和Series一样,在DataFrame中的一列可以通过字典记法或属性来检索,返回Series:frame2[0]#选择第0列,最新版的好像…

  • pycharm安装教程2020.3.4_pycharm安装后无解释器

    pycharm安装教程2020.3.4_pycharm安装后无解释器第一步安装解释器,第二步安装pycharm1第一步安装解释器1.1什么是解释器:??就是将Python程序翻译成为计算机可以识别的01代码1.2安装解释器:解释器安装地址:https://www.python.org/downloads/release/python-372根据自己的操作系统安装适配的解释器:这里以Windows为例注意安装的时候我们需要需注意吧解释器添加到环境变量里面双击开始安装勾选addpythontopath,如果安装的时候没有勾选,请安装结束以后按

  • 前端开发博客_程序员的个人博客

    前端开发博客_程序员的个人博客国内技术团队博客,大多集中在前端,下面是这些前端技术团队的博客。还有少量非前端(或者不只是前端)的技术博客,单独整理到另一个列表中去了(点击前往)【腾讯】腾讯前端Web团队IMWEBhttp://imweb.ioIMWEB团队创立之初是负责腾讯最核心的基础业务:QQ注册、QQ登录(ptlogin)、QQ资料和关系链拓展等基础服务。后转型进行应用开发,分别投入Q+、QQ圈

  • CBOW全称_skip的形式

    CBOW全称_skip的形式skip-gram结构是利用中间词预测邻近词cbow模型是利用上下文词预测中间词一、CBOW1、CBOW之所以叫连续词袋模型,是因为在每个窗口内它也不考虑词序信息,因为它是直接把上下文的词向量相加了,自然就损失了词序信息。CBOW抛弃了词序信息,指的就是在每个窗口内部上下文直接相加而没有考虑词序。2、CBOW过程简单介绍如下(实际算法会用到哈夫曼编码等降维技巧,这里仅以理解为目的简介基本原理):输入为C个V维的vector。其中C为上下文窗口的大小,V为原始编码空间的规模。例如,

  • apk 查看签名,以及apk签名方法

    apk 查看签名,以及apk签名方法1、查看apk签名    jarsigner-verify-verbose-certsout/target/product/hq6735_65u_b1p_l1/system/app/FineOSSystemManager/FineOSSystemManager.apk2、添加签名    1.找到系统签名文件,文件路径:在源码的\build\targe

  • mysql 各个版本驱动jar包

    mysql 各个版本驱动jar包http://central.maven.org/maven2/mysql/mysql-connector-java/

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号