当前位置:文档之家› i2c的介绍

i2c的介绍

i2c的介绍
i2c的介绍

I2C总线在8051单片机系统中的应用

2007-01-13 来源:西部工控网浏览:137

摘要:介绍了I2C总线技术及其技术标准。结合ATMEL公司具有I2C总线AT24C256,给出了8051单片机虚

拟I2C总线硬件设计及C语言软件实现。

关键词:I2C;单片机;AT24C256

The Application Of I2C Bus In the Single Chip Processor System of Series 8051

PENG Qing_xiang

Abstract: The paper introduces the technique and standard of I2C bus. Unifies the AT24C256 chip having I2C bus produced by ATMEL Corporation ,the paper gives the hardware design and C language software realization of virtual technique of I2C bus in the single chip processor system of series

8051.

Key words: I2C;Single Computer;AT24C256

1、引言

I2C总线是PHILIPS公司推出一种具备多主机系统所需包括裁决和高低速设备同步等功能高性能串行总线。它使用两条线:串行数据线(SDA)和串行时钟线(SCL),使连接到该总线上可访问器件之间传送信息,属于多主控制总线。总线上每个器件都有唯一址识别,都可以作为一个发送器或接收器。I2C总线使用可以简化电路,省掉了很多常规电路中接口器件,提高产品可靠性,许多领域尤其目前使用IC卡获了广泛应用。

现今,8051系列单片机应用很广,它们都没有I2C总线接口。分析I2C总线时序可知, I2C总线规定其时钟线(SCL线)和和数据线(SDA线)是各设备对应输出状态相“与”结果,任一设备都可以用输出低电平方法延长SCL低电平时间,迫使高速设备进入等待状态,实现不同速度设备间时钟同步。,时钟脉冲高、低电平时间长短不一,也能实现数据可靠传送,我们可以软件控制单片机普通I/O口做I2C接口,实现I2C 总线功能。本文以ATMEL公司具有I2C总线AT24C256为例介绍I2C总线8051单片机系统中应用并给出C语

言软件实现。

2、I2C总线构成及时序

2.1 I2C总线组成

I2C总线是一个多主机总线,即可以连接多于一个能控制总线器件到总线。I2C串行总线有两根信号线:一根双向数据线SDA;另一根是时钟线SCL。SDA和SCL都是双向I/O口线,当总线空闲时这两条线路都是高电平。所有接到I2C总线上器件串行数据线都接到总线SDA线,各器件时钟线都接到SCL总线上。其结构

如图一所示。

图一:I2C总线组成

2.2 I2C总线时序

所有主机SCL线上产生自己时钟来传输I2C总线上数据,数据只时钟高电平周期有效,每传输一个数据位就产生一个时钟脉冲,数据线高或低电平状态SCL线时钟信号是低电平时才能改变,当SCL为高电平时,SDA改变表示“开始”和“停止”状态,即SDA由高电平转入低电平表示开始,该命令必须其它命令前执行;SDA由低电平转入高电平表示停止状态,该命令可终止所有通讯。开始条件后,SCL低电平期间,SDA允许变化,每位数据需一个时钟脉冲,当SCL为高时,SDA必须稳定,主控器应答时钟脉冲高电平期间释放SDA 线,转由接收器控制。相同总线上设备收到数据后,以置SDA为低电平方式对其确认。总线不忙时,数据线

和时钟线保持为高电平。I2C时序如图二所示。

图二:I2C总线时序图

3、8051单片机系统中I2C总线实现

8051系列单片机上并不带I2C总线,必须I2C总线时序用单片机上I/O口模拟I2C总线时序实现其功能。现以单片机应用系统中较为常见E2PROM中AT24C256为例,介绍8051上利用普通I/O口实现I2C串行

总线方法和软件设计。

AT24C256是ATMEL公司256kbit串行电可擦可编程存储器,8引脚双排直插式封装,具有结构紧凑、存

储容量大等特点,其引脚排列如图三所示。

图三:AT24C256引脚图

其中A0、A1为址选择输入端。A0、A1用来区分各芯片址,址分布从0到3。A0、A1悬空时为0。SCL 为串行时钟输入,上升沿将SDA上数据写入存储器,下降沿从存储器读出数据送SDA上。SDA是双向串行数据输入输出口,用于存储器与单片机之间数据交换。WP为写保护输入。此引脚与相连时,允许写操作;与VCC相连时,所有写存储器操作被禁止。不连,芯片内部下拉到;VCC接+5V电源;GND接;NC悬空。

AT24C256开始状态后需紧接一个8位器件址,以进行相应读写操作。设备寻址码高4位为1、0、1、0,寻址码高4位后面三位是器件寻址码,与它们硬连线管脚相对应。最低应是读写选择位,置0时可激发写操作,置1激发读操作。器件具体格式为:1010A2A1A0R/W,其中当R/W为0时,为写AT24C256,当为1时为

读操作。

AT24C256片内址是以8位为单元,其总存储容量为256K,其片内址为从0到32767任意数值。编写软件时设置其片内址数据类型时要设置为unsigned int型,而不能为unsigned char型。

图四所示为AT89S51单片机和AT24C256接口图,分别用I/O口P1.6、P1.7连接SDA和SCL总线。控制P1.7口高低电平到I2C虚拟时钟,P1.6口作为数据传输双向端口,作为单片机和AT24C256之间数据线。

4、虚拟I2C总线软件结构

虚拟I2C总线来说要实现其功能主要软件要注意I2C器件操作时序,总线运行由主机控制。所谓主机即启动数据传送即发出启动信号,发出时钟信号,传送结束时发出停止信号设备,通常主机是微处理器。被主机寻访设备都称为从机。进行通讯,每个接到I2C总线设备都有一个唯一址,于主机寻访。主机和从机数据传送,可以由主机发送数据到从机,也可以是从机发到主机。凡是发送数据到总线设备称为发送器,从总线上接收数据设备被称为接受器。I2C时序,软件分为开始、停止、应答、检查应答、不产生应答、读操作、

写操作。以下为C程序清单调试成功。

#include

Sbit sda=P1^7;

Sbit scl=P1^6;

启动函数,SCL为高时,SDA下降沿为启动信号。

void Start(void)

{ scl=0; //SCL处于低电平时,SDA才能改变

sda=1;// 一个"开始"状态,该状态必须其他命令之前执行

scl=1; // 当scl为高电平时sda下降沿表示开始状态

_nop_(); _nop_(); _nop_(); //给一个延时

sda=0; //给下降沿表示开始

_nop_(); _nop_(); _nop_(); _nop_();

scl=0; //恢复低电平以改变sda值

sda=1; }

停止函数,SCL为高时,SDA上升沿为停止信号。

void Stop(void)

{scl=0; //SCL处于低电平时,SDA改变数值 */

sda=0; //scl为高电平时,sda上升沿表示停止,

scl=1; //scl为高电平时改变sda状态表示启动,停止

_nop_(); _nop_(); _nop_(); // 延时

sda=1;

_nop_(); _nop_(); _nop_();

scl=0; }

/* * * * * 检查应答位 * * * * */

bit RecAck(void)

{ scl=0; //scl为0时候改变sda值

sda=1;

scl=1; //scl为1时候等待sda值变化,器件接受到数据后会把sda拉低。

_nop_(); _nop_(); _nop_(); _nop_();

CY=sda; // 返回值总是放CY中

scl=0;

_nop_();

return(CY); //为CY为低则表示接受成功,为高,则表示接受失败。

}

/* * * * *对I2C总线产生应答(一般用读操作中) * * * * */

void Ack(void)

{

sda=0;// EEPROM收到每个址或数据之后,

_nop_();_nop_();

scl=1;//置SDA低电平方式确认表示收到读SDA口状态

_nop_(); _nop_(); _nop_(); _nop_();

scl=0;

_nop_();

sda=1;

}

/* * * * * * * * * 不对I2C总线产生应答 * * * * */

void NoAck(void)

{ sda=1;

scl=1;

_nop_(); _nop_(); _nop_(); _nop_();

scl=0;

}

向I2C总线写数据,每次写8位数据。

void Send(uchar sendbyte)

{uchar j=8;

for(;j>0;j--)

{scl=0;//拉低scl准备给上升沿

delay(5);//延时

sendbyte <<= 1;// 使CY=sendbyte^7;

sda=CY; // CY 进位标志位

scl=1; //给上升沿,发出sda状态值

}

scl=0;

}

从I2C总线上读数据子程序,每次读8位数据。

uchar Receive(void)

{ register receivebyte,i=8;

scl=0;

while(i--)

{ scl=1; //拉高scl准备给下降沿

receivebyte=(receivebyte <<1)|sda; //接受值左移一位把低位和sda相或到sda状态值

scl=0; //给下降沿发出sda状态值

}

return(receivebyte);

}

5、结论

本文介绍了I2C总线组成及时序,并以ATMEL公司AT24C256为例给出了用8051C语言模拟I2C总线时序起始、停止及CPU向I2C总线发送和接收8位字节程序。

I2CBus与SMBus间技术差异

I2C Bus与SMBus间技术差异 前言: 关于I2C与SMBus,许多人很少去谈论与了解两者的细节差异,包括很多国外的简报,文章也经常将两者混写、交杂描述、交替运用。 确实,在一般运用下,I2C Bus与SMBus没有太大的差别,从实际接线上看也几乎无差异,甚至两者直接相连多半也能相安无误地正确互通并运作。不过若真要仔细探究,其实还是有诸多不同,如果电子设计工程师不能明辨两者的真实差异,那么在日后的开发设计的验证纠错阶段必然会产生困扰,为此本文将从各层面来说明I2C Bus与SMBus的细微区别,期望能为各位带来些许帮助。 我写这篇文章,可以理解为郭長祐先生博客中相关文章的读书笔记,我可没有那么高的造诣,关于I2C Bus的基础,可参考先生之前的「I2C 界面之线路实务」,网址为: https://www.doczj.com/doc/0717631584.html,/n/article.asp?id=304799064272FED148256FDC00481D68 当然也可以去参考Philips半导体网站的I2C官方规格: https://www.doczj.com/doc/0717631584.html,/acrobat/literature/9398/39340011.pdf 运用背景、版本演进之别 首先从规格的制订背景开始,I2C是在设计电视应用时所研发的界面,首版于1992 年发表;而SMBus(System Management Bus)则是Intel与Duracell (金顶电池)共同制订笔记本电脑所用的智能型电池(Smart Battery)时所研发的接口,首版于1995 年发表,不过SMBus文件中也提及,SMBus确实是参考自I2C,并以I2C为基础所衍生成。 I2C起源于电视设计,但之后朝通用路线发展,各种电子设计都有机会用到I2C;而SMBus则在之后为PC所制订的先进组态与电源管理接口(Advanced Configuration & Power Interface;ACPI)规范中成为基础的管理讯息传递接口、控制传递接口。 虽然I2C与SMBus先后制订时间不同,但都在2000年左右进入成熟化改版,I2C的过程改版以加速为主要诉求,而SMBus以更切合Smart Battery及ACPI的需求为多。 I2C三次主要改版: 1992 年v1.0 1998 年v2.0 2000 年v2.1 SMBus三次主要改版: 1995 年v1.0 1998 年v1.1 2000 年v2.0

简要对比TWI总线与I2C总线

简要对比TWI总线与I2C总线 摘要在简要对比TWI总线与I2C总线的基础上,详细介绍TWI总线的内部模块、工作时序和工作模式,并给出一个编程实例加以说明.对TWI总线和传统的I2C总线的正确区分及使用具有现实的指导意义。 关键词两线串行总线TWI I2C AVR系列的单片机内部集成了TWI(Two-wire SerialInterface)总线。该总线具有I2C总线的特点,即接线简单,外部硬件只需两个上拉电阻,使用时钟线SCL和数据线SDA就可以将128个不同的设备互连到一起;而且支持主机和从机操作,器件可以工作于发送器模式或接收器模式,数据传输率高达400 kHz。正因为TWI总线具有这么多的优点,因此受到了使用者的青睐。 由于该总线与传统的I2C总线极其相似。因此不少人误以为TWI总线就是I2C总线,其实这只是一种简单化的理解。TWI总线是对I2C总线的继承和发展。它定义了自已的功能模块和寄存器,寄存器各位功能的定义与I2C总线并不相同;而且TWI总线引入了状奁寄存器,使得TWI总线在操作和使用上比I2C总线更为灵活。在实际应用上,由于大部分单片机内部没有集成I2C总线,因此单片机的控制是通过模拟I2C总线的时序来完成其操作的。 AVR系列的单片机内部集成了TWI总线,而且其用法也比I2C更为灵活。本文结合一个实例对TWI总线的内部模块、工作时序和工作模式进行了详细介绍,目的在于正确区分TWI 总线和传统的I2C总线,对如何正确使用TWI总线编程也具有现实的指导意义。 1 TWI内部模块 TWI内部由总线接口单元、比特率发生器、地址匹配单元和控制单元等几个子模块组成,如罔1所示。图中,SCL、SDA为MCU的TWI接口引脚。引脚的输出驱动器包含一个波

SPI、I2C、UART三种串行总线的原理、区别及应用

简单描述: SPI 和I2C这两种通信方式都是短距离的,芯片和芯片之间或者其他元器件如传感器和芯片之间的通信。SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些很薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C 是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存这两种线属于低速传输; 而UART是应用于两个设备之间的通信,如用单片机做好的设备和计算机的通信。这样的通信可以做长距离的。UART和,UART就是我们指的串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范围不会很长,约10米左右,UART优点是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡; SmBus有点类似于USB设备跟计算机那样的短距离通信。 简单的狭义的说SPI和I2C是做在电路板上的。而UART和SMBUS是在机器外面连接两个机器的。 详细描述: 1、UART(TX,RX)就是两线,一根发送一根接收,可以全双工通信,线数也比较少。数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。在多机通信上面用的最多。 2、SPI(CLK,I/O,O,CS)接口和上面UART相比,多了一条同步时钟线,上面UART 的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。 3、I2C(SCL,SDA)接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。一般单片机系统里主要用来和24C02等小容易存储器连接。 SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 SPI:一种串行传输方式,三线制,网上可找到其通信协议和用法的 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用异步收发器 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了

SPI_IIC_USART_区别

第一个区别当然是名字: SPI(Serial Peripheral Inter face:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。 如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART 发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行; 第四,看看牛人们的意见吧! wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI 则无所谓,因为它是有时钟的协议。 quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。 SPI总线 ----串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口。Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI总线是一种三线同步总线,因其硬件功能很强,所以,与SPI有关的软件就相当简单,使CPU有更多的时间

i2c区别spi

I2C的数据输入输出用的是一根线,SPI则分为dataIN和dataOUT。由于这个原因,采用I2C时CPU的端口占用少,SPI多一根。但是由于I2C的数据线是双向的,所以隔离比较复杂,SPI则比较容易。所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2C和SPI都不适合长距离传输。长距离时就要用485了。 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如P89LPC900. SPI,是一种高速的,全双工,同步的通信总线,其工作模式有两种:主模式和从模式,无论那种模式,都支持 3Mbit/s的速率,并且还具有传输完成标志和写冲突保护标志。 I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。 I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。 I2C的数据输入输出用的是一根线,SPI则分为dataIN和dataOUT。由于这个原因,采用I2C时CPU的端口占用少,SPI多一根。但是由于I2C的数据线是双向的,所以隔离比较复杂,SPI则比较容易。所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2C和 SPI都不适合长距离传输。长距离时就要用485 了。 第一: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)

iic和spi有什么区别

iic和spi有什么区别 什么是iicIIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的一种简单、双向、二线制、同步串行总线,主要是用来连接整体电路(ICS),IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线接口。 IIC简介即I2C,一种总线结构。例如:内存中的SPD信息,通过IIC,与BX芯片组联系,IIC 存在于英特尔PIIX4结构体系中。 随着大规模集成电路技术的发展,把CPU和一个单独工作系统所必需的ROM、RAM、I/O 端口、A/D、D/A等外围电路集成在一个单片内而制成的单片机或微控制器愈来愈方便。目前,世界上许多公司生产单片机,品种很多。其中包括各种字长的CPU,各种容量的ROM、RAM以及功能各异的I/O接口电路等等,但是,单片机的品种规格仍然有限,所以只能选用某种单片机来进行扩展。扩展的方法有两种:一种是并行总线,另一种是串行总线。由于串行总线的连线少,结构简单,往往不用专门的母板和插座而直接用导线连接各个设备。因此,采用串行线可大大简化系统的硬件设计。PHILIPS公司早在十几年前就推出了I2C串行总线,利用该总线可实现多主机系统所需的裁决和高低速设备同步等功能。因此,这是一种高性能的串行总线。 飞利浦电子公司日前推出新型二选一I2C主选择器,可以使两个I2C主设备中的任何一个与共享资源连接,广泛适用于从MP3播放器到服务器等计算、通信和网络应用领域,从而使制造商和终端用户从中获益。PCA9541可以使两个I2C主设备在互不连接的情况下与同一个从设备相连接,从而简化了设计的复杂性。此外,新产品以单器件替代了I2C多个主设备应用中的多个芯片,有效节省了系统成本。 什么是spiSPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时

SPI,UART,I2C都有什么区别,及其各自的特点

SPI,UART,I2C都有什么区别,及其各自的特点 区别: SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 I2C:一种串行传输方式,三线制,网上可找到其通信协议和用法的 3根线实现数据双向传输 串行外围接口Serial peripheral interface UART:通用异步收发器 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。作为接口的一部分,UART还提供以下功能: 将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。现在如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。 I2C:能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。 更详细的区别: 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS:意为IC之间总线) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上:

SMBus与I2C总线的区别

SMBus与I2C总线的区别 The I 2C bus and the SMBus are popular 2-wire buses that areessentially compatible with each other. Below,significantdifferences between the two buses. I2C SMBus Timeout No Yes Minimum Clock Speed DC 10kHz Maximum Clock Speed 100kHz (400kHz and 2MHz also available) 100kHz V HIGH0.7 x V DD, 3.0V Fixed 2.1V V LOW0.3 x V DD, 1.5V Fixed 0.8V Max I 3mA 350(iA Clock Nomenclature SCL SMBCLK Data Nomenclature SDA SMBDAT General Call Yes Yes Alert# No Yes SMBus与I2C的差别 SMBus与I2C总线之间在时序特性上存在一些差别。首先, SMBus需要一定数据保持时间,而I2C 总线则是从内部延长数据保持时间。 SMBus具有超时功能,因此当SCL太低而超过35 ms时,从器件将复位正在进行的通信。相反,I2C采用硬件复位。SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为 止。SMBus只工作在从10kHz到最高100kHz。最低工作频率10kHz是由SMBus超时功能决定的 (1)SMBus是一种二线制串行总线,1996年第一版规范开始商用。它大部分基于I2C总线规范。和I2C 一样,SMBus不需增加额外引脚,创建该总线主要是为了增加新的功能特性,但只工作在100KHZ且专 门面向智能电池管理应用。它工作在主/从模式:主器件提供时钟,在其发起一次传输时提供一个起始位, 在其终止一次传输时提供一个停止位;从器件拥有一个唯一的7或10位从器件地址。 SMBus与I2C总线之间在时序特性上存在一些差别。首先, SMBus需要一定数据保持时间,而I2C 总线则是从内部延长数据保持时间。SMBus具有超时功能,因此当 SCL太低而超过35 ms时,从器件将 复位正在进行的通信。相反,I2C采用硬件复位。SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为止。 SMBus只工作在从10kHz到最高100KHZ。最低工作频率10kHz是由SMBus超时功能决定的。

I2C与UART的区别与比较

I2C IIC本身是为板级通讯设计,没有考虑远距离通讯.UART通讯编程简单,通讯速度远比IIC 快,可以直接使用RS485延伸通讯距离达到1km,通讯速度很容易做高。 UART是一个并行输入成为串行输出的芯片...有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信. I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用 于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优 点。 发送器:发送数据到总线的器件; 接收器:从总线接收数据的器件; 主机:初始化发送产生时钟信号和终止发送的器件; 从机:被主机寻址的器件; 多主机:同时有多于一个主机尝试控制总线但不破坏传输; 仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏 的过程; 同步:两个或多个器件同步时钟信号的过程。 两条总线线路:一条串行数据线SDA,一条串行时钟线SCL;SDA 线上的数据必须在 时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。

SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件; SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。 发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个 字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。 数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器 释放SDA 线(高)。在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。 写操作 写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不 同有所不同。 读操作

IIC与IIB的区别

防爆电器产品的分类 1.按使用场所不同分为: Ⅰ类:煤矿用防爆电器; Ⅱ类:工厂用防爆电器; 2.按用途不同分为: 灯具:有内装灯泡、灯管及LED三种; 电器:操作柱、开关、按钮、配电箱、起动器、控制柜; 管件:接线盒(箱)、穿线盒、活接头、挠性连接管; 仪表:安全栅、电表、电话机; 其它类:电铃、风机、风扇、变压器、插销、镇流器、加热器、空调; 3.按最大试验安全间隙和最小点燃电流比例不同,Ⅱ类防爆电器又可分为:ⅡA类防爆电器; ⅡB类防爆电器; ⅡC类防爆电器; 防爆级别:ⅡC>ⅡB>ⅡA 本质安全型及隔爆型防爆电气设备有ⅡA、ⅡB、ⅡC 分级外,其它类型无级别规定。 4.按防爆类型分为: 隔爆型(d);增安型(e);正压型(P);充砂型(q);充油型(O);本质安全型(i);无火花型(n);气密型(h);浇封型(m);特殊型(s);粉尘防爆型(DIP);复合型(ed); 5. 按危险环境的区域选用防爆电气设备类型 0区:ia、S; 1区:ia、ib、d、e(部分)、m、p、O、q; 2区:ia、ib、d、e、m、p、O、q、n. 以上符号代表:ia、ib-本质安全型;d-隔爆型;e-增安型;m-浇封型;p-正压型;O-充油型;q-充沙型;n-无火花型;S-特殊型。 S型防爆电气设备是指不符合上述防爆型式标准的电气设备,但经检验单位认可。一般由检验单位确认使用的危险区域。 1区环境使用的e型防爆电气设备仅限于接线盒(箱)、三相鼠笼式异步电动机、单插脚荧光灯产品。 爆炸性气体(蒸气)混合物的分类、分组

1. 爆炸性气体(蒸气)混合物分类: 中国: Ⅰ类(甲烷)、Ⅱ类(爆炸性气体混合物)、Ⅲ类(爆炸性粉尘和纤维) 北美: ClassⅠ(爆炸性气体);ClassⅡ(爆炸性粉尘);ClassⅢ(纤维) 2. 爆炸性气体(蒸气)混合物分级: 3.爆炸性气体分组总汇 4. 爆炸性气体(蒸气)环境的分区 世界各国对危险场所区域划分不同,但大致分为两大派系:我国和大多数欧洲国家采用国际电工委员会(IEC)的划分方法,而以美国和加拿大为主要代表的其他国家则采用北美划分方法。 1)我国对爆炸性危险场所划分的依据: GB3836.14-2000《爆炸性气体环境用电气设备第14部分危险场所分类》

I2C总线入门(很详细-很经典)

12 C总线入门 I)最近学习5 1单片机,学到A/D, D/A转换的时候发现我板子上的转换芯片?不是书上所讲的ADCO 8 0 4和DACO 8 3 2而是P CF 8 591 T ,看了一下它的数据手册,发现它并不是书上所说的并行传输数据,是使用I2C总线传输的。搞了两天才搞懂,写出来给大家分享一下,不足之处请务必不吝指岀。 1. i?c gtt 介绍 I J C Ata(IMer IC Bu≤) Ih PHlUPS公司捡Hl?绘近"束锻电FMIm控Sw皱城广泛采冊的M 标ML它肚附通信的Jlff按口仪少■控Mm*>妙件MKB :仁违估JaE较扁第优点.Λ hΛ?f∣M?.砒以“7个总IUl件的时按到Fc总线上? Af?的暮件AJl川知0的按【】? Ii过淮址来谏別迪仃对叙便它们町以性曲l j CJ^ it irdMur. I J Cfitt由数飙嫂SDA和时伸饮$ci?IWi剣农购成通仙找烁Kt町发iX&?.也廨?Λ CPυ 1J?F? ICZrn]? IC I HCZrWJΛ5

8-lead PDlP 以上是I 2 C 总线通信的格式。 2 1 8 2 3 4 AOE Al 匚 A2□ GND 匚 □ VCC WP ZJS □ SDA A N N3 AI N V 辽 叵 rlF 匡 叵Jθ] v DD 回 AoUT 回 迢 AGND PCFδ591P — 卫IExT 2 )接下来看如何使用I 2C 总线进行通信 3. FC 总线通信格式 图8.1.2为I 2 C 总线上进厅一次数据传输的通信格式? N A

I2C总线入门(很详细,很经典)

I2C总线入门 1)最近学习51单片机,学到A/D,D/A转换的时候发现我板子上的转换芯片不是书上所讲的ADC0804和DAC0832而是PCF8591T,看了一下它的数据手册,发现它并不是书上所说的并行传输数据,是使用I2C 总线传输的。搞了两天才搞懂,写出来给大家分享一下,不足之处请务必不吝指出。 以上是I2C总线的简单介绍。 就比如说AT24C02存储芯片,和PCF8591数模模数转换芯片都支持I2C端口。(如下图)

2)接下来看如何使用I2C总线进行通信 以上是I2C总线通信的格式。 由上图可以看出进行通信需要以下几个步骤a.初始化I2C总线 就是把SDA和SCL都变成高电平。

void init() //初始化 { SDA=1; delay(); SCL=1; delay(); } delay()为延时函数 void delay() //延时4-5个微秒 {;;} b.发送起始信号 就是保持SCL为高电平,而SDA从高电平降为低电平(这是I2C总线的规定,别问我为什么) void start()//起始信号 { SDA=1; delay(); SCL=1; delay(); SDA=0; delay(); } c.发送地址字(芯片的硬件地址)

(8591的数据手册) 前四位对同一种芯片来说是固定的,不同的芯片之间不同。就像pcf8591是1001而at24c02是1010 接下来三位A0,A1,A2是可编程的三个地址位,这里说说的编程并不是通过软件编程,而是把A0,A1,A2三个引脚接不同的电压来确定数值。接VCC 表示1,接GND表示0。为什么要有这三个呢?因为有可能你在I2C总线上“并联”了不止一个相同的元件(比如说接了三个8591),那你如何来分辨你要操作的是哪一个芯片呢,就是通过设置A0,A1,A2的数值,来区别。可编程的地址一个有三位,也就是说最多可以接8个相同的芯片在同一个I2C总线上。 最后一位是读/写位,1为读,0为写。 @如何写数据 写数据只需要按照时序图 1.先将SCL置0(只有它为0的时候SDA才允许变化) 2.改变SDA是数值(就是你当前要穿的一位是0还是1) 3.把SCL置1(此时芯片就会读取总线上的数据)

I2C总线入门(很详细-很经典)

I2C总线入门 1)最近学习51单片机,学到A/D,D/A转换的时候发现我板子上的转换芯片不是书上所讲的ADC0804和DAC0832而是PCF8591T,看了一下它的数据手册,发现它并不是书上所说的并行传输数据,是使用I2C总线传输的。搞了两天才搞懂,写出来给大家分享一下,不足之处请务必不吝指出。 以上是I2C总线的简单介绍。 就比如说AT24C02存储芯片,和PCF8591数模模数转换芯片都支持I2C端口。(如下图)

2)接下来看如何使用I2C总线进行通信 以上是I2C总线通信的格式。

由上图可以看出进行通信需要以下几个步骤 a.初始化I2C总线 就是把SDA和SCL都变成高电平。 voidinit()?//初始化 { ?SDA=1; ?delay(); SCL=1; delay();? } delay()为延时函数 voiddelay()?//延时4-5个微秒 {;;} b.发送起始信号 就是保持SCL为高电平,而SDA从高电平降为低电平(这是I2C总线的规定,别问我为什么) void start()//起始信号 { ?SDA=1; delay(); SCL=1; ?delay(); SDA=0; ?delay(); }

c.发送地址字(芯片的硬件地址) (8591的数据手册) 前四位对同一种芯片来说是固定的,不同的芯片之间不同。就像pcf8591是1001而at24c02是1010 接下来三位A0,A1,A2是可编程的三个地址位,这里说说的编程并不是通过软件编程,而是把A0,A1,A2三个引脚接不同的电压来确定数值。接VCC表示1,接GND表示0。为什么要有这三个呢?因为有可能你在I2C总线上“并联”了不止一个相同的元件(比如说接了三个8591),那你如何来分辨你要操作的是哪一个芯片呢,就是通过设置A0,A1,A2的数值,来区别。可编程的地址一个有三位,也就是说最多可以接8个相同的芯片在同一个I2C总线上。 最后一位是读/写位,1为读,0为写。 @如何写数据 写数据只需要按照时序图 1.先将SCL置0(只有它为0的时候SDA才允许变化) 2.改变SDA是数值(就是你当前要穿的一位是0还是1)

SPI,UART,I2C的区别以及RS232与RS485的区别

SPI,UART,I2C的区别以及RS232与RS485的区别 详细的区别: 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS:意为IC之间总线) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。 主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。 在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。 如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART

I2C与SMBus的区别总结

I2C与SMBus的差异总结 关于I2C与SMBus,许多人很少去谈论与了解两者的细节差异,包括很多国外的简报,文章也经常将两者混写、交杂描述、交替运用。 确实,在一般运用下,I2C Bus与SMBus没有太大的差别,从实际接线上看也几乎无差异,甚至两者直接相连多半也能相安无误地正确互通并运作。不过若真要仔细探究,其实还是有诸多不同,如果电子设计工程师不能明辨两者的真实差异,那么在日后的开发设计的验证纠错阶段必然会产生困扰,为此本文将从各层面来说明I2CBus与SMBus的细微区别,期望能为各位带来些许帮助。 运用背景、版本演进之别 首先从规格的制订背景开始,I2C是在设计电视应用时所研发的界面,首版于1992年发表;而SMBus(System Management Bus)则是Intel与Duracell(金顶电池)共同制订笔记本电脑所用的智能型电池(Smart Battery)时所研发的接口,首版于1995年发表,不过S MBus文件中也提及,SMBus确实是参考自I2C,并以I2C为基础所衍生成。 I2C起源于电视设计,但之后朝通用路线发展,各种电子设计都有机会用到I2C;而SMBus 则在之后为PC所制订的先进组态与电源管理接口(AdvancedConfiguration&Power Inte rface;ACPI)规范中成为基础的管理讯息传递接口、控制传递接口。 虽然I2C与SMBus先后制订时间不同,但都在2000年左右进入成熟化改版,I2C的过程改版以加速为主要诉求,而SMBus以更切合Smart Battery及ACPI的需求为多。 I2C三次主要改版: 1992年v1.0 1998年v2.0 2000年v2.1 SMBus三次主要改版: 1995年v1.0 1998年v1.1 2000年v2.0

CAN总线和I2C等对比

CAN、I2S、I2C、SPI、SSP总线简介 一、SPI总线说明 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI 用于CPU 与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线CS。这些外围器件可以是简单的TTL移位寄存器,复杂的LCD显示驱动器,A/D、D/A转换子系统或其他的MCU。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。主SPI的时钟信号(SCK)使传输同步。其典型系统框图如下图所示。 SPI主要特点有: 可以同时发出和接收串行数据; 可以当作主机或从机工作; 提供频率可编程时钟; 发送结束中断标志; 写冲突保护; 总线竞争保护等。 图2示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式(实线表示): SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI总线接口时序如图所示。

I2C总线读时序的详解(新手必看)

I2C总线读时序的详解(新手必看) 作者:曾小贤2013届大一新生 I2c总线协议中的读时序与ds1302时钟芯片的读时序是有很大的区别的,ds1302时钟芯片是scl下降沿读取数据的,而i2c 读时序和写时序其实是同一个图,只是读时序可以看成是芯片写数据给单片机。 以下是i2c读时序程序 unsigned char RcvByte() { unsigned char retc; unsigned char BitCnt; retc=0; SDA=1; //置数据线为输入方式 for(BitCnt=0;BitCnt<8;BitCnt++) { _Nop(); SCL=0; //置时钟线为低,让芯片刷新(改变)数据,准备发送数据到数据线上, _Nop(); _Nop(); //延时是为了让芯片有时间释放出数据到数据线上, _Nop(); _Nop(); _Nop(); SCL=1; //通知单片机检测数据线是高电平还是低电平 _Nop(); _Nop(); retc=retc<<1; if(SDA==1)retc=retc+1; //读数据位,接收的数据位放入retc中 _Nop(); _Nop(); } SCL=0; _Nop(); _Nop(); return(retc); } 以下是读时序还要注意的细节,对比下面两段for循环中的读取8位数据的程序 程序一 unsigned char RcvByte() {

unsigned char retc; unsigned char BitCnt; retc=0; SDA=1; //置数据线为输入方式 for(BitCnt=0;BitCnt<8;BitCnt++) { SCL=0; SCL=1; //没有时间给芯片放出数据到数据线上,就通知单片机检测电平,错误! _Nop(); _Nop(); _Nop(); _Nop(); retc=retc<<1; if(SDA==1)retc=retc+1; _Nop(); _Nop(); } SCL=0; _Nop(); _Nop(); return(retc); } 上面程序没有时间给芯片放出数据到数据线上,就通知单片机检测电平,错误! 再看下面程序二 unsigned char RcvByte() { unsigned char retc; unsigned char BitCnt; retc=0; SDA=1; //置数据线为输入方式 for(BitCnt=0;BitCnt<8;BitCnt++) { SCL=1; _Nop(); _Nop(); _Nop(); _Nop();

SPI、IIC与UART区别

SPI、IIC、UART区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。 如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行; 第四,看看牛人们的意见吧! wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。 quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

I2C和SPI,UART的区别

I2C和SPI,UART的区别 2009-11-22 23:00 SPI--Serial Peripheral Interface,(Serial Peripheral Interface:串行外设接口)串行外围设备接口,是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。 I2C--INTER-IC(INTER IC BUS:意为IC之间总线)串行总线的缩写,是PHILIPS 公司推出的芯片间串行传输总线。它以1根串行数据线(SDA)和1根串行时钟线(SCL)实现了双工的同步数据传输。具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。 能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何 一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根 据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。 最主要的优点是其简单性和有效性。它支持多主控(multimastering),其中任何能够进行发送 和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。 UART(Universal Asynchronous Receiver Transmitter:通用异步收发器):单端,远距离传输。 大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多 GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通 信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,

相关主题
文本预览
相关文档 最新文档