UC头条:嵌入式基础1: I2C

1.简介

I2C(Inter-IntegratedCircuit),是一种串行通信总线,用于连接微控制器及其外围设备,实现主控制器和从器件间的主从双向通信,是一种同步半双工通信(两端时钟频率一致,双向通信,但不能同时进行数据收发)。

2.原理

I2C通信属于串行通信,具有两根串行信号线:数据线(SDA),时钟线(SCL)。如下图所示,主控制器与从器件(一个或多个)都通过两根信号线连接,信号线上主机和从机都可以扮演发送器和接收器的角色。为确保传输过程的指向准确性,每个接到I2C总线上的器件都有唯一的地址(7位从器件专用地址码),可实现制定从机的定向传输与群发传输。

2.1信号类型

同时,为确保传输稳定,所有连接在同一I2C总线上的设备共用一个时钟。I2C总线在传送数据过程中共有以下几种类型信号:

(1)开始信号/结束信号

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

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

(2)应答信号/非应答信号

IIC总线协议规定,每传送一个字节数据后(8bit),都要有一个应答信号以确定数据传送是否被对方收到。即一个字节传输的8个时钟过后的第9个时钟期间,接收器必须回一个ACK应答信号给发送器,这样才能进行数据传输。

应答信号由接受设备产生,在SCL为高电平期间,接受设备将SDA拉低为低电平,表示数据传输正确,产生应答(ACK),SDA拉高则表示数据传输失败,产生非应答位(NACK)。

(3)闲置状态/被占用状态

在主机发送起始信号后,且未发送终止信号期间,总线处于被占用状态。

发送终止信号后,总线处于闲置状态,SCL与SDA同时为高电平。

2.2总线读写流程

I2C总线进行数据传送时,SCL时钟信号为高电平期间,SDA数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。当一个字节按数据位从高位到低位的顺序传输完后,紧接着从机将拉低SDA线,回传给主设备一个应答位ACK,此时才认为一个字节真正的被传输完成,如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。

I2C总线写通信过程:

主机在检测到总线空闲的状况下,首先发送一个START信号掌管总线;

发送一个地址字节(8bit),其中bit0-6位为从机地址,存放从机唯一地址;bit7位为读写位(R/W),0表示write主机->从机,1表示read从机->主机;

主机发送地址时,总线上每个从机都会将7位地址与自己的地址进行比较,若相同,则将匹配成功,发送应答信号(ACK),确定发送器和接收器;

主机收到ACK后开始发送第一个字节(Command),对应从机中要写入的寄存器;

从机接收到Command后,从机发送ACK;

主机收到ACK后开始发送第一个数据字节:bit0-7(8bit数据,高到低),从机收到数据后,发送应答ACK;

继续发送数据,n帧;

主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;

I2C总线读通信过程:

主机产生START信号,随后发送从机地址(7bit)+0(Write);

*方向仍然是写,待接收到从机发送的ACK应答后,配对成功。

主机接收到ACK后,发送8bit内存地址(Command对应从机相应寄存器地址),从机接收到后,内部寻址并提取数据,返回ACK;

主机接收到ACK后,重新产生START信号,再一次发送从机内存地址,(7bit)+1(Read),从机接收到后返回ACK;

*方向设置为读,主机设置为接收模式

主机接收到ACK后,做好接收从机信息的准备,现在即可接收1bit的数据。

*主机不向从机发送应答信号,接收完毕后直接发起终止信号。

主机接收全部数据后,产生STOP信号,终止通信,总线变为闲置状态。

3.应用实例:I2C控制温感IC

以温度传感器MAX1617A为例,对照手册可查找到以下数据:

Command寄存器对照表如下,可根据Command表查找从机对应寄存器地址。

温度数据返回格式如下所示:

通过以上数据,我们即可有思路,对照写入读写过程:

写入时,输入Command使用:0x0B,0x0C写入温度上限与下限值;

读取时,输入Command使用:通过Command0x0B,0x0C写入温度上限与下限值;

逻辑分析仪数据采样如下所示:

写入过程:

0x30为从机地址0x18<<1+读写位(0);

0x0B为Command,对应从机寄存器存放地址;

0x00位将写入的数据;

波形如下所示:

读取过程:

读当前温度

读过程中,方向先为写入,后为读取

读温度上限:

3.读温度下限:

(0)

相关推荐

  • IIC详解,包括原理、过程,最后一步步教你实现IIC

    IIC详解 1.I2C总线具有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL 2.IIC总线上可以挂很多设备:多个主设备,多个从设备(外围 设备).上图中主设备是两个单片机,剩下的都是从设备 ...

  • IIC原理超详细讲解

    文章目录 IIC 简介 IIC的物理层 IIC的高阻态 IIC物理层总结: IIC的协议层 IIC 总线时序图 初始(空闲)状态 开始信号: 停止信号 数据有效性 应答信号 IIC数据传送 数据传送格 ...

  • IIC总线知多少?

    注:本文转载自公众号"记得诚" ❝ IIC是串行总线,只用到两个线,应用非常广泛,本文介绍IIC的软件协议及硬件相关知识. ❞ 一.IIC概述 1. IIC定义 IIC总线是由Ph ...

  • UC头条:中医基础: 六经辩证金口诀

    点击加载图片 本资料仅供参考.讨论.学习.辩论,不作为患者自治的参考,否则后果自负. 由于本资料中未出现作者名字,所以如果作者看到了,请告知小编,小编会及时加上去:如果侵权,立删. 六经阴阳辨证用药金 ...

  • UC头条:中医基础: 气化口诀及脉学口诀

    点击加载图片 五.气化论口诀 点击加载图片 打开UC浏览器 查看更多精彩图片 阴阳合一地天泰,水火既济气化成. 中医原本调平衡,阳化阴精成气形,阴阳合一是为气,气化百病不能生. 中医本质就是气,寒者热 ...

  • UC头条:电子电路基础 (10)——场效应管的构造原理及使用

    一.场效应管的构造以及认识(非常重要) 点击加载图片 两只半引脚的,上面的是散热,和中间的半只引脚连在一起的. 1.1 场效应管的构造 场效应管简称FET,与三极管一样也分三个极:其中D极称为漏极(也 ...

  • UC头条:嵌入式面试知识点总结

    我最近在找工作呀,哪位大佬有合适的工作机会,可以推荐一下呀. 坐标北京,嵌入式软件工程师. 一.MCU对比 问题: 问题一:STM32F1和F4的区别? 解答: 参看:STM32开发–STM32初识 ...

  • UC头条:成年人无基础, 怎么练习毛笔字?

    首先我认为成年人学习书法,比其他人群有更为明显的优势.第一.成年人目的性更强.第二.成年人有较好的自制力.第三.成年人有较为完整的知识学习系统. 点击加载图片 这三点是成年人学习书法的优势所在.但是成 ...

  • UC头条:只有想不到, 没有嵌不到, 嵌入式系统科普

    如今,物联网.AI.5G的发展都离不开嵌入式系统,它就好比一个乐高拼图,只要你会"玩",就会发生意想不到的性能.那么到底什么是嵌入式系统?下面就给大家科普一下. 想要了解它的组成就 ...

  • UC头条:7个基础方应对心悸, 让心慌不安的感觉远离

    小编导读 感觉心慌不安,心跳剧烈,紧张,胸闷--你是否曾经有过这种感受?这是中医中所说的心悸.若这种情况时有发生,切不可忽视,当及时治疗.如何治疗呢?下面这篇文章告诉你-- 一诊断 1.自觉心慌不安, ...

  • UC头条:王羲之的书写程序: 结字是基础, 笔势是装饰, 用笔是技法

    说起田氏楷书,无人不知其作品十分工稳.于是很多人极力褒奖,当做书法楷模来学习,对于其他人所说他的字不是书法很难理解.这也不足为怪,艺术审美是需要培养的.就跟城里人到农村,看见长势特别好,枝叶特别繁茂的 ...

  • UC头条:中医治耳鸣的3个基础方法

    耳鸣是中老年人群的常见健康问题,很多时候人们都将耳鸣和肾虚对等起来,以为出现耳鸣就是肾的问题.其实在中医学理论中,造成耳鸣的原因有很多种,在调治时也有多种多样的治疗思路和方法. 本症多见于中老年人,年 ...