当前位置:文档之家› I2C BUS

I2C BUS

I2C bus

Inter Integrated Circuits bus by Philips Semiconductors

Tomá?Matou?ek

tmd.havit.cz

Basic Characteristics

?two-wired bus

?originally to interact within small num. of devs (radio/TV tuning, …)?speeds:

–100 kbps (standard mode)

–400 kbps (fast mode)

– 3.4 Mbps (high-speed mode)

?data transfers: serial, 8-bit oriented, bi-directional

?master/slave relationships with multi-master option (arbitration)?master can operate as transmitter or receiver

?addressing: 7bit or 10bit unique addresses

?device count limit: max. capacitance 400 pF

Standard Mode

Wires and Signals ?two-wired bus

–serial data line (SDA)

–serial clock line (SCL)

?voltage levels

–HIGH 1

–LOW0

–not fixed, depends on associated level of voltage ?bit transfer (level triggered)

–SCL = 1 ?SDA = valid data

–one clock pulse per data bit

–stable data during high clocks

–data change during low clocks

Wired-AND connection ?bus is free ?SDA and SCL are high

–by pull-up resistors

?device output is ANDed with signal on bus

Frame

?start condition (S)

–SDA 1→0 transition when SCL = 1?stop condition (P)

–SDA 0→1 transition when SCL = 1

?repeated start (Sr)

–start is generated instead of stop

?bus state

–busy …after S and before next P

–free …after P and before next S

Masters and Slaves ?Master device

–controls the SCL

–starts and stops data transfer

–controls addressing of other devices

?Slave device

–device addressed by master

?Transmitter/Receiver

–master or slave

–master-transmitter sends data to slave-recevier

–master-receiver requires data from slave-transmitter

Data Transfer ?data bits are transferred after start condition ?transmission is byte oriented

?byte = 8 bits + one acknowledge bit ?most significant bit (MSB) first

?slave address is also datum

–first byte transferred

–during the first byte transfer:

?master is transmitter

?addressed slave is receiver

–next bytes: depends on the last bit in address byte

Data Transfer -SCL

?master sets SCL = 0 and generates pulse for each data bit ?8 pulses for data bits are followed by one pulse for ack. bit ?after ack.

–master tries to generate next byte’s first pulse

–slave can hold SCL low →master switches to wait state

Data Transfer -SDA

?data bits are generated by transmitter as SCL pulses

?9-th pulse:

–transmitter releases SDA

–receiver must hold SDA low in order to ack. received data

–slave must release SDA after ack. bit (allows master to end frame)

Multiple Masters ?more bus controllers can be connected ?several masters can start frame at once ?synchronization needed on SCL ?arbitration needed on SDA

?using wired-AND connection to SCL/SDA

Synchronization on SCL ?frame started →SCL = 1

?first 1→0 transition(*)

–involved masters restart their clocks

–master holds 0 until its low-period is over

?master finished its low-period

–releases SCL

–SCL = 0 →switches to wait state, waits for SCL = 1

–SCL = 1 or waiting finished →starts counting high-period ?first master finished its high-period

–sets SCL = 0

–equivalent to (*) state

Synchronized Clocks

?low-period

–determined by max{low-periods of involved masters}?high-period

–determined by min{high-periods of involved masters}

Arbitration on SDA

?frame started,SCL synchronized →high periods = valid data ?each master generates its data

?master aborts if there is another level on SDA than it generates →it loses arbitration, releases SDA and tries again when bus is free

Notes on Arbitration

?can continue for many bits

?adresses are compared at first stage

?if the same slave is addressed in the same mode (R/W):

–masters are transmitters →data-bits are compared

–masters are receivers →acknowledge-bits are compared

?if arbitration is not over before stop or repeated start:

–comparation not allowed: stop-data, repeated start-data, stop-repeated start –involved masters must generate stops/repeated starts in the same positions ?loser can generate SCL pulses for synchronization until the byte is over ?losing master which can be also a slave

–must switch immediately to slave mode

Addressing by 7 bits

?the first byte transmitted by master:

–7 bits:address

– 1 bit:direction (R/W)

0 … master writes data (W), becomes transmitter

1 … master reads data (R), becomes receiver

?data transfer terminated by stop condition

?master may generate repeated start and address another device ?each device listens to address

–address matches its own →device switches state according to R/W bit ?address = fixed part + programmable part

–fixed part assigned by I2C committee

Frame Formats master-transmitter

master-receiver (since second byte)

Special Addresses ?general call 0000 000 | 0?start byte 0000 000 | 1?CBUS address0000 001 | * –used for cooperation of I2C and CBUS

?High-speed mode master code 0000 1** | *?10-bit slave addressing1111 0** | *

General Call ?addresses all devices

?device ignores call →not acknowledges address

?device accepts call →acknowledges address

?R/W = 0 (W) →master-transmitter, slave-receiver ?command in the second byte

?LSB = 0 (least significant bit)

–programmable part of device’s address manipulation

–resetting devices

?LSB = 1

–master (e.g. keyboard scanner) doesn’t know where to send data –remaining 7 bits contain master’s address

Start Byte

?device connection to bus:

–fast

?on-chip hardware I2C bus interface

?device interrupted by requests from bus

–slow

?no hardware interface

?software bus monitoring (polling)

?longer start procedure needed

?start condition, first byte = 0000 0001, ack., repeated start condition

?fast device ignores, slow device can use lower sampling rate to detect frame start

I2CBus与SMBus间技术差异

I2C Bus与SMBus间技术差异 前言: 关于I2C与SMBus,许多人很少去谈论与了解两者的细节差异,包括很多国外的简报,文章也经常将两者混写、交杂描述、交替运用。 确实,在一般运用下,I2C Bus与SMBus没有太大的差别,从实际接线上看也几乎无差异,甚至两者直接相连多半也能相安无误地正确互通并运作。不过若真要仔细探究,其实还是有诸多不同,如果电子设计工程师不能明辨两者的真实差异,那么在日后的开发设计的验证纠错阶段必然会产生困扰,为此本文将从各层面来说明I2C Bus与SMBus的细微区别,期望能为各位带来些许帮助。 我写这篇文章,可以理解为郭長祐先生博客中相关文章的读书笔记,我可没有那么高的造诣,关于I2C Bus的基础,可参考先生之前的「I2C 界面之线路实务」,网址为: https://www.doczj.com/doc/df17785087.html,/n/article.asp?id=304799064272FED148256FDC00481D68 当然也可以去参考Philips半导体网站的I2C官方规格: https://www.doczj.com/doc/df17785087.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米;而对于串口而言,

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