历史上的今天

今天是:2024年09月01日(星期日)

正在发生

2020年09月01日 | 关于我对IIC协议的一些理解

发布者:雷电狂舞 来源: 51hei关键字:IIC协议  IIC通信  通道 手机看文章 扫描二维码
随时随地手机看文章

在谈IIC前,我们先将IIC的通信分为三步,准备、通信、结束阶段

1.  通信准备

IIC通信至少要两条通道,一条时钟线SCL,一条数据线SDA,而这两条线可以连接很多的设备。虽然IIC连接着很多的设备,但是在IIC没有与各个设备通信时,IIC均处于休眠状态,这时候就需要通过主机来唤醒设备了。


我们首先看时序图,怎么开始IIC的动作,及怎么结束II:


然后再看代码(somenop()为延时函数,延时时间主要是看单片的时钟周期,我所使用的单片机芯片是IAP15F2K6102)

void somenop(void)

{

    uchar t;

    _nop_();

    _nop_();

    t = 12;

    while(--t);

}



void IIC_Start(void)

{

    SDA = 1;SCL = 1;

    somenop();

    SDA = 0;

    somenop();

    SCL = 0;

}


void IIC_Stop(void)

{

    SDA = 0; SCL = 1;

    somenop();

    SDA = 1;

    somenop();

}


当我们启动IIC后,下一步就是寻找设备了,于是我们发送一个地址,像PCF8591,唤醒它的地址就是0x90(二进制数1001 0000),唤醒AT24C02的地址则是0xa0(二进制数1010 0000)这时候需要设备给一个响应来说明设备收到消息了,然后由单片机接受即可,所以设备与单片机达成通信的条件了,然后两边建立了通信通道后,单片机就开始选用所需设备的功能端口地址了。


如:选择PCF8591的A0、A1、A2、A3通道的话,就可以分别发送0x00、0x01、0x10、0x11;选择AT24C02的A0、A1、A2通道的话,就可以分别发送对应地址(因为AT24C02还带有读/写地址,该地址是在最后一位,这里就不详细谈了)。


在IIC开始,选择设备地址以及,选择使用那个通道以及选择读数据还是写数据后,通信准备阶段完成。


2.  开始通信

首先我们要知道IIC是半双工通信,同一时刻只有一个设备发送数据个另一个设备,两个设备开始通信时,主机一直控制SCL时钟线并由它来产生出时钟信号(也就是脉冲信号),然后,两设备通过SDA线发送数据来互相通信。


当主机接受从机数据时(也就是主机读取从机数据),时钟信号的电平为低的时间内,从机通过数据线发出高低电平的信号;当时钟信号为高电平期时,主机读取读取信号,此时数据线的电平不能改变。发送八位数据后,主机会收到从机的应答,也就是第九个脉冲的时候是应答时间,从机将SDA数据线置为低电平,此时被主机检测到。于是一个数据就传输成功了,主机收到的数据是一个二进制,数据如果为00101101,转换十六进制是0x2D,然后多做几个这样的步骤,数据就读取到了。


同理从机接受主机的数据时(主机写数据给从机),时钟信号还是主机产生的,然后数据是由从机发给主机,发送8位数据后,主机发给从机应答信号,此时一个数据也就成功发送了。


3.  结束通信

主机再数据发送完后(即应答时间内)给从机一个非应答信号(主机将SDA电平拉高)后解释IIC,这时候IIC通信告一段落了,最后也就完成了一次通信,数据传输进行完毕。


4.  注意点

IIC开始、结束及SCL的时钟周期是必须合适的,一般都大于5us就可以了(这个时间也可能和设备有关)。时间太短会导致数据传输有问题,或者从机来不急应答;时间太长的话……可能数据传输太慢吧(知识盲区了)。

以上就是我对IIC的理解了,这也仅仅是我个人的理解,避免不了错误之处,也希望诸位指正

关键字:IIC协议  IIC通信  通道 引用地址:关于我对IIC协议的一些理解

上一篇:STM8L101F3P6 TIM4 实现呼吸灯效果(1)
下一篇:stm8s开发(三) UART的使用:串口通信!

推荐阅读

1.5亿元的融资一方面来自机构对老罗个人的认可,另一方面也是整个市场对微信垄断已久之后的一种新鲜尝试】 锤子科技创始人罗永浩这次又出来“闹腾”了,但倒不是为了自家的锤子手机站台,而是为一个即时通讯App——子弹短信。 8月27日,罗永浩于个人微博上发布——“短短6天,51家VC,7家科技巨头的战略投资部。”暗指快如科技如今在投资领域颇受追捧。...
据外媒报道,现在,斯柯达Scala和柯米克(Kamiq)车型的车主都可以利用无线技术,将智能手机连到汽车上。此外,该两款车型也是斯柯达家族内首批配备了新型无线SmartLink技术(智能连接)的车型,可让车主更方便地使用苹果CarPlay或安卓汽车系统(Android Auto)。结合Phone Box的感应式充电功能以及汽车天线的无绳连接,甚至可以完全实现在车内无线使用...
集微网消息,天线双雄,在2020年上半年财报出炉之际,再次站上了PK台。在疫情影响之下,两家公司此前的一季报业绩,均出现不同程度的下降。此次,半年度业绩出炉,两大厂商的营收和净利润水平的差距不断拉大。从集微网此前的报道来看,两大厂商在天线领域的战略布局不同,加之对原有盈利业务的深耕或分拆,对两大厂商的股价和业绩带来了较大的波动。业绩分...
一. ARM程序执行流程在ARM体系中,程序执行的流程有三种:顺序执行程序,在正常顺序执行代码的时候,每次执行一条ARM指令,PC=PC+4(Byte)。(THUMB状态下PC=PC+2)跳转执行程序,利用跳转指令,程序可以跳转到指定的地址处执行程序,或者跳转到特定的子程序处执行。异常中断发生,当发生异常时,程序会跳转到相应的异常中断处理程序处执行,在执行完异...

史海拾趣

问答坊 | AI 解惑

[活动] 2009 NI 前沿技术论坛

尊敬的工程师: 感谢您对NI长期以来的支持,2009第五届NI测控前沿技术论坛即将拉开帷幕。 作为广受好评的年度盛会,您不仅可以通过资深工程师的讲解了解最新前沿技术,还可以亲自投票选择自己感兴趣的专题内容。 NI诚邀您参与第五届测控前 ...…

查看全部问答∨

几个遇到问题请求帮助!

1.电磁流量计与PLC之间的数据如何取得和编程 2.A/D,D/A模块与压力传感器和变频器之间的建立 3.PLC与上位机之间的通讯,也就是条码扫描仪连触摸屏,触摸屏连PLC,将数据送到PLC来控制动作。 有时间帮忙想想,看如何来实现 …

查看全部问答∨

在PocketPC中安装了SqlServer CE, 但是断电后安装过的东西消失,该怎么解决阿?

在PocketPC中安装了SqlServer CE, 但是断电后安装过的东西消失,该怎么解决阿?是不是安装时候可以设置成永久保存呢?或者有什么特别的方法把他安装在SDMMC或HDD或Flash上,永久保存,而且注册表中也会在断电后还存在?…

查看全部问答∨

DDR2匹配电阻

最近在用EP3C25324做设计,第一次用所以请各位大侠帮忙。问题:外接DDR2 SDRAM,DDR2的信号线不接串、并联匹配电阻可以不?因为接上电阻实在太复杂了,不好布线呀。  在线等答案,谢谢! [ 本帖最后由 lan54160 于 2011-7-22 13:26 编辑 ]…

查看全部问答∨

DAC904 用法

那位高手用过DAC904,出来指点一下,第15脚,第28脚是怎么用的?…

查看全部问答∨

例子应当恰当

       学习UC/OS很长的一段时间了,可是还是不能够写程序,就像写作文一样,不知道从何下手。反而觉得前后台的程序比较的容易懂,而多任务的转来拐去的任务,真不知道如何写!看他人的例程,好像多是两个任务,一个 ...…

查看全部问答∨

周计划+高频非接触智能卡终端

周计划+高频非接触智能卡终端…

查看全部问答∨

第一次用仿真,遇到的问题,求大神帮忙(已解决)

本帖最后由 651076842 于 2013-12-28 11:55 编辑 大神们,这是什么问题啊,我的仿真器是MSP-FET430UIF power灯和mode灯都是亮的,第一次用仿真器.连接没问题,在connection中出现了com连接,破解的时候也是用管理员身份破解的,win7旗舰版系统 …

查看全部问答∨

这个电路图怎样分析

这电路图怎样分析 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved