简要对比TWI总线与I2C总线
TWI,IIC总线
采用串行总线技术可以使系统的硬件设计大大简
化、系统的体积减小、可靠性提高。同时,系统 的更改和扩充极为容易。 常用的串行扩展总线有: I2C (Inter IC BUS) 总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线及Microwire/PLUS 等。
c、在传送过程中,当需要改变传送方向时, 起始信号和从机地址都被重复产生一次,但两 次读/写方向位正好反相。
4、总线的寻址
I2C总线协议有明确的规定:采用7位的寻址字节 (寻址字节是起始信号后的第一个字节)。 (1)寻址字节的位定义
D7~D1位组成从机的地址。D0位是数据传送方向位, 为“0”时表示主机向从机写数据,为“1”时表示主机由从 机读数据。
每一个字节必须保证是8位长度。数据传送时,先传 送最高位(MSB),每一个被传送的字节后面都必须跟 随一位应答位(即一帧共有9位)。
由于某种原因从机不对主机寻址信号应答时(如从机 正在进行实时性的处理工作而无法接收总线上的数据), 它必须将数据线置于高电平,而由主机产生一个终止信号 以结束总线的数据传送。 如果从机对主机进行了应答,但在数据传送一段时间后 无法继续接收更多的数据时,从机可以通过对无法接收的 第一个数据字节的“非应答”通知主机,主机则应发出终 止信号以结束数据的继续传送。 当主机接收数据时,它收到最后一个数据字节后,必须 向从机发出一个结束传送的信号。这个信号是由对从机的 “非应答”来实现的。然后,从机释放SDA线,以允许主 机产生终止信号。
两线串行总线概述
两线串行总线采用TWI协议。对外只有两根线。一根数据线SDA,一根时 钟线SCL。可与128个从设备连接。连接方式如图所示:
TWII2C总线技术_单片机
图5.11 启动、停止和重启动状态
• 5、地址数据包格式
在TWI 总线上传送的地址包均为9位,包括7位地 址位、1 位READ/WRITE 控制位与1位应答位。 如果READ/WRITE 为1,则执行读操作;否则执 行 写 操 作 。 从 机 被 寻 址 后 , 必 须 在 第 九 个 SCL (ACK) 周期通过拉低SDA 作出应答。若该从机忙 或有其它原因无法响应主机,则应该在ACK 周期 保持SDA 为高。然后主机可以发出STOP 状态或 REPEATED START状态重新开始发送。地址包 包括从机地址与分别称为SLA+R 或SLA+W 的 READ 或WRITE 位。
(3) TWDR 只有在TWINT 为高时方可写入。否则, 访问被忽略,寄存器TWCR 的写碰撞位TWWC 置位。 TWDR更新后,TWINT位应清零后继续传送。 通过对 TWCR寄存器中写入下述值完成操作:
(4) 这过程会一直重复下去,直到最后的字节发 送完且发送器产生 STOP 或REPEATED START 信号 。STOP 信号通过在 TWCR 中写入下述值 实现:
• Bits 7..1 – TWA: TWI 从机地址寄存器其值为从机 地址。
• Bit 0 – TWGCE: 使能TWI 广播识别置位后MCU 可以识别TWI 总线广播。
• 5.4.6 使用TWI AVR的 TWI接口是面向字节和基于中断的。所有 的总线事件,如接收到一个字节或发送了一个 START 信号等,都会产生一个TWI 中断。 由于TWI 接口是基于中断的,因此TWI接口在字 节发送和接收过程中,不需要应用程序的干预。 TWCR 寄存器的 TWI 中断允许TWIE位和SREG 寄存器的全局中断允许位一起决定了应用程序是 否响应TWINT标志位产生的中断请求。
I2C总线——总结
I2C总线——总结I2C总线是一种串行数据通信协议,用于连接集成电路之间进行通信。
它由Phillips公司于1982年首次提出,并在随后的几十年中得到广泛应用和发展。
I2C总线采用两根线(SDA和SCL)进行通信,具有简单、高效的特点,适用于较短距离的通信。
首先,I2C总线的架构包括两个主要组成部分:主设备和从设备。
主设备通常是微控制器或其他控制器,负责发起和控制通信。
从设备是主设备的外围设备,例如传感器、电池芯片、存储器等。
主设备通过发送信号来控制从设备,并接收从设备发送的响应信号。
在I2C通信中,数据以字节为单位传输,每个字节都包含8位。
通信的起始由主设备发起,并发送设备地址标识。
从设备必须匹配该地址才能进入通信状态。
在通信过程中,主设备发送读取或写入指令,然后发送或接收数据。
每个数据字节都由从设备发送确认信号,以确保数据的准确接收。
除了基本的读写操作,I2C总线还支持一些高级功能,例如时钟同步、主从模式切换和热插拔功能。
这些功能使得I2C总线适用于各种应用场景,包括电子设备、通信系统、工业控制和汽车电子等。
然而,尽管I2C总线具有许多优点,但也存在一些限制和挑战。
首先,I2C总线在传输速度方面不如其他通信协议(如SPI和CAN)。
其次,长距离传输可能受到电压下降、信号失真和干扰等因素的影响。
此外,I2C总线的主设备需要额外的控制逻辑和处理能力,这可能增加系统的复杂性和成本。
综上所述,I2C总线是一种非常常用和实用的串行通信协议。
它具有简单、高效的特点,适用于较短距离的设备间通信。
通过多主机配置和高级功能支持,I2C总线可以满足各种应用的需求。
然而,需要根据具体的应用场景和要求来选择合适的通信协议,以确保系统的性能和可靠性。
SPI、I2C、UART三种串行总线协议的区别
SPI、I2C、UART三种串行总线协议的区别第一个区别当然是名字: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发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;第四,看看牛人们的意见吧!wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。
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等小容易存储器连接。
第七章 TWII2C总线技术 单片机
//停止I2C void iic_stop(void) { clr_iic_scl(); DelayuS(30); clr_iic_sda(); DelayuS(30); set_iic_scl(); DelayuS(30); set_iic_sda(); } //向I2C发送一个字节 void iic_write_8bits(byte writedata) { byte i; for(i=8;i!=0;i--) { clr_iic_sda(); if(writedata&0x80) set_iic_sda(); set_iic_scl(); DelayuS(30); clr_iic_scl(); DelayuS(30); writedata=writedata<<1; } }
void iic_start(void) { set_iic_en(); set_iic_output(); set_iic_sda(); DelayuS(30); set_iic_scl(); DelayuS(30); clr_iic_sda(); DelayuS(30); clr_iic_scl(); } //等待ACK响应 void iic_wait_ack(void) { byte ErrorBit; set_iic_sda(); DelayuS(30); set_iic_scl(); set_iic_input(); DelayuS(30); while(get_iic_sda()) ; set_iic_output(); clr_iic_scl(); }
//ACK响应 void iic_ack(void) { clr_iic_sda(); DelayuS(30); set_iic_scl(); DelayuS(30); clr_iic_scl(); DelayuS(30); set_iic_sda(); } //NOACK响应 void iic_no_ack(void) { set_iic_sda(); DelayuS(30); set_iic_scl(); DelayuS(30); clr_iic_scl(); }
SPI总线,IIC总线
2
I2C总线 总线
I2C总线始终和先进技术保持同步,并保持其向 总线始终和先进技术保持同步, 总线始终和先进技术保持同步 下兼容性。 下兼容性。 I2C总线采用二线制传输,一根是数据线SDA 总线采用二线制传输,一根是数据线 总线采用二线制传输 ),另一根是时钟线 (Serial Data Line),另一根是时钟线 ),另一根是时钟线SCL ),所有 (serial clock line),所有 2C器件都连接在 ),所有I 器件都连接在 SDA和SCL上,每一个器件具有一个唯一的地 和 上 址。 I2C总线是一个多主机总线,总线上可以有一 总线是一个多主机总线, 总线是一个多主机总线 个或多个主机(或称主控制器件), ),总线运行 个或多个主机(或称主控制器件),总线运行 由主机控制。 由主机控制。 I2C总线支持多主(multi-mastering)和主从 总线支持多主( 总线支持多主 ) (master-slave)两种工作方式。 )两种工作方式。 3
4
I2C总线 总线
多主方式下, 总线上可以有多个主机 总线上可以有多个主机。 总线 多主方式下,I2C总线上可以有多个主机。I2C总线 需通过硬件和软件仲裁来确定主机对总线的控制权。 需通过硬件和软件仲裁来确定主机对总线的控制权。 主从工作方式时,系统中只有一个主机, 主从工作方式时,系统中只有一个主机,总线上的 其它器件均为从机(具有I 总线接口),只有主 总线接口), 其它器件均为从机(具有 2C总线接口),只有主 机能对从机进行读写访问,因此, 机能对从机进行读写访问,因此,不存在总线的竞 争等问题。在主从方式下, 总线的时序可以模 争等问题。在主从方式下,I2C总线的时序可以模 总线的使用不受主机是否具有I 拟 ,I2C总线的使用不受主机是否具有 2C总线接口 总线的使用不受主机是否具有 总线接口 的制约。 的制约。 ——MCS-51系列单片机本身不具有 2C总线接口, 系列单片机本身不具有I 总线接口, 系列单片机本身不具有 总线接口 可以用其I/O口线模拟 总线 口线模拟I 可以用其 口线模拟 2C总线
i2c总线的工作原理与应用
i2c总线的工作原理与应用1. 简介i2c(Inter-Integrated Circuit)总线是一种常见的串行通信总线,用于在集成电路之间进行数据传输。
它采用两根线(SDA和SCL)进行通信,支持多主机和多从机的连接。
i2c总线通常用于连接传感器、存储器、显示器等设备。
2. 工作原理i2c总线采用主从式架构。
主机(Master)负责控制总线的访问和数据传输,从机(Slave)接收并响应主机的指令。
2.1 信号线i2c总线有两根信号线:•SDA(Serial Data Line):用于传输数据。
•SCL(Serial Clock Line):用于同步数据传输。
2.2 传输模式i2c总线支持两种传输模式:•标准模式(Standard Mode):最大传输速率为100kbps。
•快速模式(Fast Mode):最大传输速率为400kbps。
2.3 通信流程i2c总线的通信流程如下:1.主机发送起始信号(Start):主机将SDA从高电平拉到低电平,然后拉低SCL线。
2.主机发送地址和读写位:主机发送从机的地址和读写位,指定数据是读取还是写入操作。
3.从机应答:从机接收地址和读写位后,发送应答信号(ACK)给主机。
4.数据传输:主机和从机之间传输数据,每个字节都要从高位(MSB)依次传输到低位(LSB)。
5.应答验证:每个字节传输后,接收方发送应答信号,表示接收成功。
6.停止信号(Stop):主机发送停止信号,将SDA从低电平拉到高电平,然后拉高SCL线。
应用案例i2c总线广泛应用于各种电子设备中,以下是一些常见的应用案例:3.1 传感器模块传感器模块通常使用i2c总线进行数据传输。
例如,温度传感器可以通过i2c 总线将实时温度数据发送给主控制器,以便进行温度监测和控制。
3.2 存储器i2c总线可以连接到存储器芯片,用于存储和读取数据。
例如,实时时钟芯片可以使用i2c总线来存储和读取时间数据。
3.3 显示器一些液晶显示器可以通过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主模块和与之通信的外设音时钟相位和极性应该一致。
AVR单片机学习九iic总线及TWI模块的使用方法
AVR 单片机学习(九)iic总线及TWI模块的使用方法IIC总线定义与特点I2C总线的工作原理AVR的TWI模块的使用方法AT24C02IIC inter integrated circuit 总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。
I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。
例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如:电源和系统风扇,可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
TWI:ATMega系列单片机内集成两线制串行接口模块,ATmegl文档称为TWI接口事实上TWI与PHILIOS的I2C总线是同一回事,之所以叫它TWI是因为这样命名可使ATmel避免交术语版税。
所以,TWI是兼容I2C的一种说法。
I2C总线最只要的优点是其简单性和有效性。
由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。
总线的长度可高达25英尺,并且能够以10KPS的最大传输率支持40个组件,I2C总线的另一个优点是,它支持多主控(MULTIMASTERING),其中任何能够进行发送和接受的设备都可以称为主总线,一个主控能够控制信号的传输和时钟频率。
当然,在任何时间点上只能有一个主控。
由于AVR 有上拉电阻所以 R1 R2可以不要。
其实还的共地应该是3根线。
在多主控上有个总线总裁的知识可以参阅相关文档学习。
呵呵、初学者不用了解。
I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接受数据。
在CPU与被控IC之间、IC与IC之间进行双向传送、最高传送速率100KBPS.各种被控制电路均并联在这条总线上,最高传送速率100KBPS.各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能,CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定调整的类别(如对比度、亮度等)及需要调整的量。
CAN、I2C、SPI、PCI总线简介
首先,CAN控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差;
CAN采用报文识别符识别网络上的节点,从而把节点分成不同的优先级,高优先级的节点享有传送报文的优先权。
报文是短帧结构,短的传送时间使其受干扰概率低,CAN有很好的效验机制,这些都保证了CAN通信的可靠性。
3. CAN总线应用领域
CAN总线最初是德国BOSCH为汽车行业的监测,控制而设计的。现已应用到铁路、交通、国防、工程、工业机械、纺织、农用机械、数控、医疗器械机器人、楼宇、安防等方面。
目前有很多半导体集成电路上都集成了I2C接口。带有I2C接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外围器件如存储器、监控芯片等也提供I2C接口。
3 总线基本操作
I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。
3.1 控制字节
TWI学习心得
Atmega8a TWI学习总结丁炳亮经过一个多星期的折腾终于搞懂的TWI的协议。
刚开始看的时候感觉这是个非常强大的东西,看到后面越感觉到Atmega这么好的单片机这么会存在一个很不相称的TWI,太不简洁了。
设置了过多的状态,其实很多都是没必要的。
整个通信协议其实就是IIC,只是TWI增加了很多状态显得是画蛇添足。
USART、SPI、IIC这三种常用的通信接口个人认为个有优缺点,需要针对不同的需求选择。
IIC和其他两种相比最大的不同点应该是IIC的主机仲裁机制,有了主机仲裁机制的存在就使能IIC总线上的每个设备都可以经过仲裁成为主机。
1工作原理1.1电气连接TWI使用两根总线,一根用于传输数据(SDA),另一根用于传输时钟(SCL)。
由于总线上可以挂载多个设备,所以设备的TWI总线接口不可能使用推挽输出,但是可以使用内部上拉电阻,在挂载的设备数量过多时等效上拉电阻为所有设备上拉电阻的并联值,可能会非常小,为此还是建议不要把相应的IO上拉电阻打开,使用外部上拉更妥(其实如果只用内部上拉电阻,在传输数据时很容易出错,因为内部上拉电阻太大了)。
总线上不允许出现没有上电的AVR设备。
因为在单片机没有上电时IO口之间存在比较小的导通电阻,相当于在SDA和SCL之间接了一个电阻,这会造成传输的数据出错。
同时手册中还规定了通信总线间的最大分布电容。
(图一)TWI总线的连接1.2数据格式TWI 总线上数据位的传送与时钟脉冲同步。
时钟线为高时,数据线电压必须保持稳定(应该是下降沿移位,高电平采样),除非在启动与停止的状态下。
和USART 一样,TWI 也没有使用使能端口,所以数据传输时需要一个起始信号和一个停止信号。
TWI 的起始信号(START)和停止信号(STOP)并不是用数据”1”和”0”表示,START 的产生是在SCL 高电平时,SDA 上输出一个下降沿。
STOP 的产生是在SCL 高电平时,SDA 上输出一个上升沿。
简要对比TWI总线与I2C总线
简要对比TWI总线与I2C总线摘要在简要对比TWI总线与I2C总线的基础上,详细介绍TWI总线的内部模块、工作时序和工作模式,并给出一个编程实例加以说明.对TWI总线和传统的I2C总线的正确区分及使用具有现实的指导意义。
关键词两线串行总线TWI I2CAVR系列的单片机内部集成了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接口引脚。
引脚的输出驱动器包含一个波形斜率限制器以满足TWI规范;引脚的输入部分包含尖峰抑制单元,以去除小于50ns的毛刺。
总线接口单元包括数据与地址寄存器TWDR、START/STOP控制器和总线仲裁判定硬件电路。
I2C总线工作原理
I2C总线工作原理I2C总线是一种多主控制、多从设备的串行通信总线,它的全称是Inter-Integrated Circuit,也被称为IIC或者TWI(Two-Wire Interface)。
I2C总线采用两根线进行数据传输,一根是串行数据线(SDA),另一根是串行时钟线(SCL),这两根线都是双向传输的。
首先是信号电平部分,I2C总线采用双线传输,SDA线和SCL线的电平都是通过开漏输出来实现的。
在总线上的主设备和从设备都应当具备开漏输出功能,这样才能保证总线上的设备不会被外来电源驱动影响。
在I2C总线上,高电平被定义为逻辑“1”,低电平为逻辑“0”。
总线上的设备对信号电平进行采样,以确定传输的数据值。
接下来是地址传输部分,每一个I2C设备都分配有一个唯一的7位地址。
主设备可以向总线上的多个从设备发出地址命令,这些从设备会根据I2C总线的规定进行地址的识别。
主设备在发送地址时,第一个字节应当是设备地址和读/写位,根据这个位的取值,对应的设备进行读或写操作。
如果设备的地址少于7位,则在高位补0。
再接下来是数据传输部分,数据传输可以分为两种模式:数据读取和数据写入。
在I2C总线上,数据的传输是按照字节为单位进行的。
在数据写入模式中,主设备发送一字节数据到从设备,并等待从设备发送一个应答位(ACK)作为确认。
在数据读取模式中,主设备从从设备中读取一个字节,并发送一个应答位作为确认。
最后是总线控制部分,I2C总线使用起始位和停止位来标识一次数据传输的开始和结束。
起始位表示一次数据传输的开始,它是由主设备产生的。
停止位表示一次数据传输的结束,它也是由主设备产生的。
在数据传输过程中,主设备可以根据需要发出起始位和停止位,以控制数据的传输。
总之,I2C总线是一种简单而有效的串行通信总线,它的工作原理包括信号电平、地址传输、数据传输和总线控制四个主要部分。
通过这些机制,不同的主设备和从设备可以在I2C总线上进行可靠的数据交换,实现各种应用场景中的通信需求。
SPI、I2C、UART三种串行总线协议的区别
SPI、I2C、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)、串行、多主控(mul TI-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。
在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。
(注:I2C资料了解得比较少,这里的描述可能很不完备)UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;第四,看看牛人们的意见吧!wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。
I2C总线介绍
I2C总线介绍1、⾸先I2C这是个什么玩意? I2C⾸先百度上的定义是双向⼆线制同步串⾏总线。
它只需要两根线即可在连接与总线上的器件之间传送信息。
当然在我看来,I2C⾸先是⼀个通信接⼝,同理通信接⼝就是⽤于模块之间的通信的,同SPI接⼝学习思路⼀样,⾸先明⽩它是⼀个接⼝,然后再理解它是⼀个怎样的接⼝。
I2C(Inter - Integrated Circuit)总线是由Philips公司开发的⼀种简单、双向⼆线制同步串⾏总线。
它只需要两根线即可在连接于总线上的器件之间传送信息(当然设备必须⽀持I2C接⼝)。
具体在应⽤的时候总线上的设备节点分为主机和从机两种⾓⾊。
在物理上传统标准的I2C接⼝定义: 除去地线外,⼈民常说的只有两根线:SDA和SCL,SDA是串⾏数据线,SCL是串⾏时钟线,都是双向IO线 接⼝电源为开漏输出,需通过上拉电阻接电源VCC,当总线空闲时,两根线都是⾼电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电器。
在总线上消耗的电流很⼩,因此,总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总线接⼝都有⼀定的等效电容,⽽线路中电容会影响总线传输速度。
当电容过⼤时,有可能造成传输错误,所以,其负载能⼒为400pF,因此可以估算出总线允许长度和所接器件数量。
其实I2C总线上的每⼀个器件内部的SDA、SCL引脚电路结构都是相同的,引脚的输出驱动与输⼊缓冲连在⼀起,输出为漏极开路的场效应管、输⼊缓冲为⼀个⾼输⼊阻抗的同相器。
这种电路具有两个特点:(1)由于SDA、SCL为漏极开管电路,借助于外部的上拉电阻实现了信号的线与逻辑 (2)引脚在输出信号的同时还将引脚上的电平进⾏检测,检测是否与刚才输出⼀致。
为“时钟同步”和“总线仲裁”提供硬件基础 I2C标准连接如下图: 模拟I2C与硬件I2C有什么区别? 原理上:硬件I2C(提供专门的SDA,SCL⼝)的时钟是由系统产⽣的,⼀般由晶振分频产⽣。
简单介绍I2C总线协议_华清远见
简单介绍I2C总线协议本篇文章主要是简单介绍一下I2C总线协议。
毕竟在智能开发的过程中,有很多时候都会用到I2C总线协议。
新手赶紧拿好笔记本和笔,往下看!什么是I2C总线:I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。
它只需要两根线即可在连接于总线上的器件之间传送信息。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。
如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。
在这种情况下.主机负责产生定时时钟和终止数据传送。
在物联仓储系统和智能小车中,很多情况下都需要使用I2C总线协议进行数据传输,下面请看详细的介绍。
一、I2C 总线的一些特征:• 只要求两条总线线路一条串行数据线SDA 一条串行时钟线SCL• 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址主机可以作为主机发送器或主机接收器• 它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏• 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达400kbit/s 高速模式下可达3.4Mbit/s• 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整• 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制二、I2C总线在传送数据过程中共有三种类型信号:开始信号、结束信号和应答信号。
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
i2c参数
I2C参数1. 简介I2C(Inter-Integrated Circuit),又称为IIC(Inter-IC)或TWI(Two-Wire Interface),是一种串行通信协议,用于在集成电路之间进行通信。
它由飞利浦(现在的恩智浦半导体)公司于1980年代开发,并在现代电子设备中广泛应用。
I2C协议使用两根线进行数据传输,即SDA(Serial Data Line)和SCL(Serial Clock Line)。
SDA线用于传输数据,而SCL线则用于同步时钟信号。
2. I2C参数2.1 总线速率I2C总线的速率由时钟频率决定,通常表示为单位时间内发送的比特数。
常见的总线速率有100 Kbps、400 Kbps和1 Mbps等。
选择适当的总线速率要考虑到所连接设备的最大支持速率以及系统中其他因素。
较高的总线速率可以提高数据传输效率,但也可能导致更大的传输误差。
2.2 地址格式每个I2C设备都有一个唯一的地址,用于在总线上进行识别和访问。
根据设备类型和供应商不同,地址格式可以是7位或10位。
对于7位地址格式,最低有效位为0,用于指示读或写操作。
这意味着最多可以连接128个设备(2^7),其中一半用于读操作,另一半用于写操作。
10位地址格式可以连接更多设备,最多可达1024个(2^10)。
它使用了额外的3位地址位来提供更大的灵活性。
2.3 起始和停止条件I2C通信的起始和停止条件是通过在SDA线上产生特定电平变化来实现的。
起始条件是将SCL保持高电平时,SDA从高电平转变为低电平。
这表示一个新的传输周期的开始。
停止条件是将SCL保持高电平时,SDA从低电平转变为高电平。
这表示传输周期结束。
起始和停止条件之间的数据传输称为I2C帧或I2C消息。
2.4 数据格式在I2C通信中,数据以字节为单位进行传输。
每个字节都由8位二进制数字组成。
数据可以是读取或写入操作。
对于写入操作,主设备发送一个或多个字节给从设备。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简要对比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接口引脚。
引脚的输出驱动器包含一个波
形斜率限制器以满足TWI规范;引脚的输入部分包含尖峰抑制单元,以去除小于50ns的毛刺。
总线接口单元包括数据与地址寄存器TWDR、START/STOP控制器和总线仲裁判定硬件电路。
比特率发生器单元用来控制TWI工作于主机模式时时钟信号SCL的周期,具体由TWI状态寄存器TWSR的预分频系数以及比特率寄存器TWBR设定;当TWI工作于从机模式时,无需对比特率或预分频进行设定。
地址匹配单元将检测从总线上接收到的地址是否与TWAR寄存器中的7位地址相匹配。
控制单元监视TWI总线,根据TWI控制寄存器TWCR的设置作出相应的响应。
2 TWI的工作时序
TWT接口是面向字节和基于中断的。
所有的总线事件(例如接收到一个字节或发送一个START信号等),都会产生一个TWI中断。
由于TWI接口是基于中断的,因此TWI接口在字节发送和接收过程中,不需要应用程序干预。
TWCR寄存器的TWI中断允许TWTE位和
SREG寄存器的全局中断允许一起决定应用程序是否响应TWINT标志位产生的中断请求。
如果TWIE被清零,则应用程序只能采用轮询TWINT标志位的方法来检测TWI总线状态;
如果TWINT标志位被置位,则表示TWI接口完成了当前的操作,等待应用程序响应。
在这种情况下,TWI状态寄存器TWSR包含了当前TWI总线的状态值。
应用程序可读取TWCR 的状态码,判别此时的状态码是否正确,并通过设置TWCR与TWDR寄存器来决定下一个TWI总线周期TWI接口应如何工作。
典型的主机字节发送的工作时序如图2所示。
3 TWI的工作模式
TWI可以工作于4种不同的模式,即主机发送模式(MT)、主机接收模式(MR)、从机发送模式(ST)和从机接收器模式(SR)。
即使同一应用程序也可以使用几种模式。
例如,TWI可用MT模式向TWI的EEPROM写入数据,用MR模式从EEPROM读取数据。
如果系统中有其他主机存在,则它们可能给TWI发送数据,此时可以用SR模式。
由应用程序决定采用何种模式。
由于在实际使用过程中,多使用主机发送模式,所以只对主机发送模式作详细介绍,其它模式下格式和状态可以依此类推。
在主机发送模式下,主机向从机发送数据。
为了进入主机模式,必须先发送START信呼;紧接着的地址包格式决定是进入MT或MR模式。
如果发送SLA+W,则进入MT模式;如果发送SLA+R,则进入MR模式。
主机发送模式的格式和状态如图3所示。
4 TWI的编程实例
下面将通过一个具体的实例来说明如何在实际应用中对TWl进行编程。
本程序的主要功能是向PCA9554中写入数据,若错误则返回一1;否则返回O。
其中参数command为命令字节,data为要写入的数据。
5 结论
AVR系列单片机内部有可编程Flash,自带EEPROM,支持JTAG接口片内调试和对Flash、EEPROM、熔丝位和锁定位的编程,因此成为众多单片机芯片的首选。
同时,AVR系列单片机内部集成有TWI接口,弥补了其他型号单片机依靠时序模拟完成I2C芯片工作的缺陷。
本文通过对TWI总线的详细介绍,旨在介绍一种对TWI总线进行编程的方法,对TWI的正确使用具有现实的指导意义。