历史上的今天
返回首页

历史上的今天

今天是:2025年01月15日(星期三)

正在发生

2019年01月15日 | LPC11C14通信接口之I2C

2019-01-15 来源:eefocus

1、什么是IIC?

       

 IIC的英文全称Inter-IntegratedCircuit(集成电路总线),是一种多向控制总线,由飞利浦半导体公司在八十年代初设计,主要是用来连接整体电路(ICS)。在IIC中,多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源,这种方式简化了信号传输总线。


   因此,IIC实质是用来在芯片和外围器件之间连接的通信接口。


2、IIC接线

    

IIC通信一共要有2根线:SCL(时钟线)和SDA(数据线)


    SCL时钟线:控制IIC通信双方进行数据传递控制


    SDA数据线:IIC通信双方数据传输


    一个主设备可以连接多个从设备,那么究竟什么是主设备,从设备?IIC总线结构如下:



所谓的主设备就是控制着SCL时钟输出的一方,那么被动接收SCL的一方就是从设备了。


3、IIC通信协议

    

IIC通信是属于同步串行通信的一种,并且支持1对多的通信方式(一主多从),所以IIC通信我就以主设备发送一个字节的数据0xaa为例讲解IIC通信协议。


    首先,我们将发送一个字节0xaa需要解决的问题先思考下:


    (1)MSB(高位)还是LSB(低位)在前?


    0xaa转换成二进制是1010 1010,而串口发送数据是一个bit位一个bit位的发送的,那么在开始发送时应该先发送高位的1还是低位的0呢?


    这里大家注意下,在同步串口通信中,一般是先发送高位,后发送低位。IIC就正好是同步串口通信的一种,所以发送0xaa的时候,是先从高位开始向低位的顺序发送的。怎么区分是同步还是异步呢,主要看通信接口中有没有时钟线SCL,有SCL的就是同步,反之没有的就是异步。


    (2)开始发送的时候,怎么区分总线的空闲和繁忙状态?


    作为通信接口,在收发双方之间必然存在实际的物理连接线路,那么线路必然存在两种状态:繁忙(有数据正在传输中)和空闲(线路空闲没有数据传输),IIC的两根线:SCL和SDA,在空闲的时候都是默认输出高电平的。那么怎么开始数据的传输(从空闲到繁忙)、怎么结束数据的传输(从繁忙到空闲)?


    既然IIC总线在空闲的时候,SCL和SDA都是输出高电平,那么IIC总线协议规定,组合信号:SCL保持高电平不变,SDA输出低电平,产生下降沿突变,这个组合信号就是起始信号,用来是的IIC总线从开始的空闲态切换到繁忙态。


    (3)怎么从主设备连接的多个从设备中选定要通信的从设备?


    IIC支持一个主设备连接多个从设备的方式,那么在通信的时候只能有一个从设备和主设备建立通信,但是IIC又不能和SPI一样,增添一个独立的引脚用来区分,那IIC怎么实现和从设备的连接呢?


    每一个IIC设备一般在出厂的时候都会编好号,这个编号就是IIC设备如果作为从设备通信的时候的从设备地址。当然有些设备在出厂的时候可能没有编号,比如咱们的LPC11C14,但是我们可以人为写入,只要注意这个IIC从设备地址是全球不唯一,但是在实际物理开发板上是惟一的原则就好。


    从设备地址一般是7个bit位宽度。


    所以,主设备要想从多个从设备中选中某一个从设备进行通信,只要知道这个从设备的地址就可以了(也必须要知道),在开始通信后(发送起始信号后),将要通信的从设备地址发送出去,那么挂在IIC总线上的所有从设备都会受到从设备地址,这时候他们会和自己的从设备地址进行比较,看是否一样,不一样的从设备就会陷入休眠。


    (4)数据bit位中的1怎么发送?bit位中的0怎么发送?


    IIC数据位传输是一位一位传输的,每传输一个bit位,耗时SCL的一个时钟周期,在这个时钟周期内,低电平期间,向引脚发送数据,高电平期间,保持稳定不变,具体时序如下:


    

(5)一次发送的帧的格式是什么?


    IIC每次发送数据都是8bit一个字节为单位。


    (6)能不能一次发送多个字节?如果能,怎么发送?


    IIC可以一次发送多个字节,只要中途不出现停止信号,直接按顺序发送就可以了。


    (7)发送方怎么确定自己发送的数据接收方收到了?


    规范接收方每接收一个字节数据,都会在第9个时钟周期给IIC发送方回一个ACK应答信号(发送方释放SDA,从设备借助SDA输出低电平),否则其他情况全部视作NACK非应答信号(没有收到信号、或者收到的是高电平)。


    (8)只有一根SDA用来进行收发数据,那么怎么判断方向?


    在开始建立通信时,主设备发送了从设备地址,但是由于从设备地址宽度是7bit,而一次发送数据是一个字节,所以,通常做法是先将7个bit从设备地址逻辑左移1bit,在低位空出的bit位用来决定接下来通信的方向:0-表示发送,1-表示接收


    因此,所谓的IIC通信协议的实质就是为了解决以上几个问题,可以同以下结构体现:



4、IIC控制器和IIC协议之间的关系


    IIC通信协议就是上述的,规定实际通信过程的实现约定,这个只是书面约定,没有付诸实现,而IIC控制器就是实现IIC通信协议的硬件,我们一般实现IIC通信协议的方法有两种:通过IO口模拟IIC实训实现、或者直接使用IIC控制器。

推荐阅读

史海拾趣

Decawave公司的发展小趣事

Decawave公司成立于2007年,总部位于爱尔兰都柏林。成立之初,公司就专注于超宽带(UWB)技术的研发。在初创阶段,Decawave面临着技术难度大、资金紧张等挑战。然而,凭借对UWB技术的深入理解和研究,公司成功开发出了具有高精度定位能力的UWB芯片,这一技术突破为Decawave在电子行业中赢得了声誉。

DESCO公司的发展小趣事

随着防静电产品市场的不断扩大,DESCO公司开始着手进行市场拓展和品牌塑造。公司通过参加国际展会、举办技术研讨会等方式,积极向全球客户展示其防静电产品的技术优势和应用前景。同时,DESCO还加大了品牌宣传力度,提高了品牌知名度和美誉度。这些举措为公司在全球范围内赢得了大量忠实客户,市场份额持续增长。

动运科技(DONGWOON)公司的发展小趣事

经过多年的发展,动运科技已经成长为一家在电子行业中具有重要影响力的企业。面对未来,公司将继续坚持技术创新和市场拓展的战略方针,不断推出更加优质的产品和服务。同时,动运科技也将积极应对行业变革和市场挑战,加强与全球合作伙伴的沟通和合作,共同推动电子行业的持续发展和进步。展望未来,动运科技将继续以开放的心态和创新的精神,迎接更加美好的未来。

请注意,以上故事是基于现有信息进行的概括性描述,并非具体的历史事件或详细数据。如需更详细的信息,建议查阅相关新闻报道或公司官方资料。

EKIT公司的发展小趣事

2023年10月,华为坤灵(HUAWEI eKit)在德国慕尼黑成功举办了分销品牌发布会,这是其在欧洲市场的首个国家级发布活动。通过简化交易流程、打造高效的平台和工具、整合伙伴体系等措施,HUAWEI eKit为德国及欧洲市场的中小企业提供了灵活易用的产品解决方案。同时,HUAWEI eKit还致力于为中小企业市场的各种业务场景开发易买易卖、易装易维、易学易用的分销产品,赢得了市场的广泛认可。

Auctor Corp公司的发展小趣事

Auctor Corp公司的创始人,一群富有远见和冒险精神的工程师,怀揣着对电子技术的热情和对市场的敏锐洞察,决定共同创办这家公司。在创业初期,公司面临着资金紧张、技术储备不足等多重困难。然而,团队成员们凭借着坚韧不拔的精神和对技术的执着追求,通过自主研发和不断改进,逐渐在市场上站稳了脚跟。

Amerace Electronic Components公司的发展小趣事

随着全球环保意识的提高,Amerace Electronic Components公司积极响应绿色环保号召,将环保理念融入生产和经营中。公司采用环保材料和工艺,减少生产过程中的污染排放。同时,Amerace还致力于推动电子元件的循环利用和回收,为环保事业贡献力量。这种环保理念的践行不仅提升了公司的社会形象,也为公司的可持续发展奠定了基础。

问答坊 | AI 解惑

单片机键盘扫描之状态机实现

一、概述 在编写单片机程序的过程中,键盘作为一种人机接口的实现方式,是很常用的。 而一般的实现方法大概有: 1、外接键盘扫描芯片(例如8279,7279等等),然后由该芯片来完成去抖、键值读取、中断请求等功能。然后单片机响应中断并读取键值,有 ...…

查看全部问答>

DSP新手FAQ汇总(ZT)

DSP 新手FAQ汇总 1、TI DSP的选型主要考虑处理速度、功耗、程序存储器和数据存储器的容量、片内的资源,如定时器的数量、I/O口数量、中断数量、DMA通道数等。DSP的主要供应商有TI,ADI,Motorola,Lucent和Zilog等,其中TI占有最大的市场份额。 TI公 ...…

查看全部问答>

高速FPGA系统的信号完整性测试和分析

1. 引言       随着FPGA的设计速度和容量的明显增长,当前流行的FPGA芯片都提供高速总线,例如DDR内存总线,PCI-X总线、SPI总线;针对超高速的数据传输,FPGA通过集成SerDes提供高速串行IO,支持各种诸如PCI-E、GBE、XAUI等高 ...…

查看全部问答>

用软件实现让PPC的扩展卡不用ActiveSync就能变U盘的功能?

在WINDCE5.0下,用软件实现让PPC的扩展卡不用ActiveSync就能变U盘的功能?…

查看全部问答>

菜鸟问题

00H,02H这个H是什么意思?…

查看全部问答>

请问一个关于IEEE802.1Q的问题

现在的以太网芯片有支持IEEE802.1Q的吗? 我的意思就是有没有芯片硬件就能够自动识别VLAN的? 如果都不支持的话,那么是不是应该通过交换机来实现?  例如我的设备发送带有IEEE802.1Q标记的帧给交换机,然后交换机会选择匹配的VLAN端口,将数据 ...…

查看全部问答>

VHDL.Verilog实现有符号数乘法

在数字信号处理(DSP)中,乘加是最基本的运算,以至于很多FPGA厂商以MAC的多少及运算速度做为器件的一个重要指标。下面就乘法实现进行讨论。在DSP中,大多是有符合数的操作,这里给出有符号数乘法的VHDL和Verilog程序。LIBRARY ieee;USE ieee.std_ ...…

查看全部问答>

用单片机如何做串口数据转发?

我有个设备是直接和PC机通过串口连接的,我现在想做一个东西,串在这个串口线上,把PC机发给设备的数据给处理一下!   具体问题是:这个设备在通过与PC机串口通信的时候,需要手工按开关和拨换档位,我现在想用一个单片机加一些电路把这个手 ...…

查看全部问答>

谁知道STM8S103F3与207系列的是否兼容?

                                 我用207系列的程序调试的好好的。(定时器4)。但移植到F3上就是不行。看手册ST的手册那个费劲呀,都没找到详细的 ...…

查看全部问答>

求助STM8S105K6T6C不良

公司开发了一个新产品之前生产过几次基本没有发现ST芯片不良,上个月生产时发现200pcs芯片不良(这个月生产又发现12pcs不良),送给ST公司分析,分析原因为生产制程造成。我们公司生产工艺是采用红胶波峰焊,过锡炉后ST芯片pin16-32位置基本上 ...…

查看全部问答>