I2C的原理与应用
- 格式:doc
- 大小:575.50 KB
- 文档页数:14
i2c隔离方案随着现代电子设备的不断发展,对于电路间隔离的需求越来越重要。
随之而来的是对于I2C通信协议的隔离方案的需求。
本文将介绍i2c隔离方案的原理、应用以及一些常见的解决方案。
一、i2c通信的原理和特点I2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接芯片之间的通信。
它采用主从结构,通过两根线(时钟线SCL和数据线SDA)实现通信。
I2C通信具有如下特点:1. 高效:I2C通信占用的引脚数量较少,可以在多个设备之间共享同一个总线,提高了系统的灵活性和简洁性。
2. 速度可变:I2C通信的速度可以根据需求进行调整,对于不同的应用场景可以选择不同的速度。
3. 多设备支持:I2C通信协议支持多个设备共享同一个总线,通过每个设备有不同的地址来实现区分。
4. 传输距离有限:I2C通信协议在传输距离方面存在限制,对于长距离通信需要考虑信号衰减和抗干扰能力。
二、i2c隔离的需求尽管I2C通信具有诸多优点,但在一些特殊情况下,需要对I2C信号进行隔离,以确保系统的可靠性和稳定性。
1. 地址冲突:当多个设备位于不同电源域或者地线域中时,可能会出现地址冲突的情况。
通过隔离I2C信号可以解决这个问题。
2. 抗干扰:长距离传输或者噪声环境下,I2C信号容易受到干扰,导致通信错误。
隔离可以提高I2C信号的抗干扰能力。
3. 电气隔离:一些应用场景需要进行电气隔离,例如隔离高电压和低电压环境下的通信。
I2C隔离可以满足这方面的需求。
三、i2c隔离的解决方案1. 光耦隔离:光耦隔离是一种常见的I2C隔离方案。
它通过光电耦合器将电路分为输入和输出两个部分,实现了电气隔离。
2. 磁耦隔离:磁耦隔离采用磁耦合器将电路分离,实现电气隔离。
这种隔离方案可以提供更高的隔离电压和抗干扰能力。
3. 电容隔离:电容隔离通过电容耦合器实现电路的隔离。
相比于光耦和磁耦隔离,电容隔离的成本更低,但是隔离性能也有所下降。
I2C串行总线工作原理及应用I2C(Inter-Integrated Circuit)是一种串行总线协议,用于连接芯片和外设,允许它们之间进行通信和数据交换。
I2C总线由飞利浦公司(现在的恩智浦半导体)于1980年代初引入,是一种简单、高效、可扩展的通信协议。
I2C总线由两根信号线组成,分别是SCL(串行时钟线)和SDA(串行数据线),可以连接多个设备,每个设备都有一个唯一的地址,设备之间可以通过发送和接收数据来进行通信。
I2C总线的工作原理如下:1.主从模式:在I2C总线上,一个设备必须充当主设备,其他设备充当从设备。
主设备负责生成时钟信号和控制整个通信流程,从设备只能在主设备允许时传输数据。
2.起始和停止条件:通信开始时,主设备会发送一个起始条件来指示数据的传输开始。
而通信结束时,主设备会发送一个停止条件来指示数据的传输结束。
3.传输过程:在传输数据之前,主设备首先会发送一个地址码来指定要通信的从设备。
然后,主设备将数据传输到从设备(写操作)或从设备将数据传输给主设备(读操作)。
每个数据字节都会被从设备确认,并继续传输下一个数据字节。
4.时钟和数据线:SCL线用于同步数据传输的时钟信号,SDA线用于传输实际的数据。
数据传输是按字节进行的,每个字节有8个位,其中第一个位是数据位,后面的7个位是地址位或数据位。
I2C总线的应用非常广泛,包括但不限于以下几个方面:1.传感器:I2C总线可以用于将传感器连接到主控芯片。
例如,温度传感器、湿度传感器、光照传感器等可以通过I2C总线传输采集到的数据给主控芯片进行处理和分析。
2. 存储器:I2C总线可以连接EEPROM(Electrically Erasable Programmable Read-Only Memory)和其他类型的存储器芯片,用于存储数据和程序。
主控芯片可以通过I2C总线读取和写入存储器中的数据。
3.显示器:一些液晶显示器和OLED显示器可以通过I2C总线与主控芯片进行通信。
i2c转模拟量摘要:1.I2C 简介2.I2C 转模拟量的原理3.I2C 转模拟量的实现方法4.I2C 转模拟量的应用实例5.I2C 转模拟量的优缺点正文:1.I2C 简介I2C(Inter-Integrated Circuit)是一种串行通信总线,它是由Philips 公司(现在的NXP 半导体公司)于1980 年代开发的。
I2C 用于在微控制器(MCU)和周边设备(如EEPROM、LCD 显示器、传感器等)之间进行低速通信。
I2C 总线上可以连接多个设备,其中一个设备作为主设备(Master),其他设备作为从设备(Slave)。
2.I2C 转模拟量的原理I2C 转模拟量的原理是将数字信号转换为模拟信号。
I2C 总线传输的是数字信号,而许多传感器和器件需要模拟信号进行控制或输出。
因此,在I2C 总线和这些传感器/器件之间需要进行信号转换。
I2C 转模拟量的过程分为两个方向:I2C 输入和I2C 输出。
(1)I2C 输入:将I2C 总线上的数字信号转换为模拟信号,以便传感器或器件能够识别和处理这些信号。
这通常需要将I2C 数据线上的信号转换为模拟电压或电流信号。
(2)I2C 输出:将传感器或器件产生的模拟信号转换为数字信号,以便I2C 总线上的主设备能够读取和处理这些信号。
这通常需要将模拟电压或电流信号转换为I2C 数据线上的数字信号。
3.I2C 转模拟量的实现方法实现I2C 转模拟量的方法有很多,主要包括以下几种:(1)通过模拟多路开关实现:使用模拟多路开关将I2C 数据线转换为模拟信号。
这种方法简单易实现,但可能会引入较多的噪声和误差。
(2)通过运算放大器实现:使用运算放大器设计一个模拟电路,将I2C 数据线转换为模拟信号。
这种方法可以获得较高的信号质量,但电路设计较为复杂。
(3)通过微控制器的I2C 接口实现:部分微控制器内部集成了I2C 转模拟量的功能,可以直接将I2C 数据线转换为模拟信号。
I2C总线原理及应用实例I2C总线是一种串行通信总线,全称为Inter-Integrated Circuit,是Philips(飞利浦)公司在1982年推出的一种通信协议。
它可以用于连接各种集成电路(Integrated Circuits,ICs),如处理器、传感器、存储器等。
I2C总线的原理是基于主从架构。
主设备(Master)负责生成时钟信号,并发送和接收数据,从设备(Slave)通过地址识别和响应主设备的命令。
I2C总线使用两根线来传输数据,一根是时钟线(SCL),用于主设备生成的时钟信号;另一根是数据线(SDA),用于双向传输数据。
1. 主设备发送起始位(Start)信号,将SDA线从高电平拉低;然后通过SCL线发送时钟信号,用于同步通信。
2.主设备发送从设备的地址,从设备通过地址识别确定是否响应。
3.主设备发送要传输的数据到从设备,从设备响应确认信号。
4. 主设备可以继续发送数据,或者发送停止位(Stop)信号结束通信。
停止位是将SDA线从低电平拉高。
1.温度监测器:I2C总线可以连接到温度传感器上,通过读取传感器的输出数据,进行温度的监测和控制。
主设备可以设置警报阈值,当温度超过阈值时,可以触发相应的措施。
2.显示屏:很多智能设备上的显示屏都采用了I2C总线,如液晶显示屏(LCD)或有机发光二极管(OLED)等。
主设备通过I2C总线发送要显示的信息,并控制显示效果,如亮度、对比度、清晰度等参数。
3.扩展存储器:I2C总线可以用于连接外部存储器,如电子存储器(EEPROM)。
通过I2C总线,可以读取和写入存储器中的数据,实现数据的存储和传输。
4.触摸屏控制器:许多触摸屏控制器也使用了I2C总线,主要用于将触摸信号传输给主设备,并接收主设备的命令。
通过I2C总线,可以实现对触摸屏的操作,如单击、滑动、缩放等。
5.电源管理器:一些电源管理器也采用了I2C总线,用于控制和监测电池电量、充电状态、电压、电流等参数。
i2c隔离方案I2C是指Inter-Integrated Circuit,是一种串行通信协议,可在多个设备之间进行数据传输。
然而,在特定的应用场景中,I2C信号会受到干扰,导致通信过程中的问题。
为了解决这些问题,开发了I2C隔离方案。
本文将介绍I2C隔离方案的原理、应用和优势。
一、I2C隔离方案的原理I2C隔离方案通过隔离器件将I2C总线分为两个电气隔离区域,分别为主机端和从机端。
在主机端,I2C信号经过隔离器件进行转换,并传输到从机端。
这样做的目的是隔离主机与从机之间的地线和电源线,从而防止地线回路、不同地电位和噪声干扰对I2C通信的影响。
二、I2C隔离方案的应用1. 工业自动化:在工业自动化领域,传感器和执行器通常连接到控制器或PLC。
通过使用I2C隔离方案,可以防止地线回路引起的干扰,确保高可靠性和稳定性。
2. 医疗设备:医疗设备中经常使用I2C总线连接传感器和监测设备,如心率监测、血压计等。
通过使用I2C隔离方案,可以保障医疗设备的准确性和安全性。
3. 航空航天:在航空航天领域,I2C总线被广泛应用于飞行控制系统和通信系统。
I2C隔离方案可以提供可靠的通信和数据传输,确保飞行器的稳定性和安全性。
三、I2C隔离方案的优势1. 数据完整性:使用I2C隔离方案可以防止噪声和电气干扰对数据传输的影响,确保数据的完整性和准确性。
2. 地线回路隔离:I2C隔离器件可以有效隔离主机和从机之间的地线回路,避免地线回路引起的干扰问题。
3. 电气隔离:通过电气隔离,可以消除不同地电位之间的干扰,提高系统的稳定性和可靠性。
4. 安全性提升:I2C隔离方案可以防止潜在的电源线干扰,提高设备的安全性和可靠性。
5. 简化系统设计:使用I2C隔离方案,可以减少对其他外部元件的需求,简化系统设计和布线。
结论I2C隔离方案在工业自动化、医疗设备、航空航天等领域具有重要的应用价值。
它通过隔离器件将I2C总线分为两个电气隔离区域,避免了地线回路和噪声干扰对通信的影响。
I2C串行总线工作原理及应用I2C(Inter-Integrated Circuit)是一种串行总线通信协议,用于在数字系统之间传输数据。
它由飞利浦公司开发,用于连接微控制器、存储器和外围设备等数字电子设备。
I2C总线是一种非常常见的通信协议,被广泛应用于许多领域,包括消费电子、通信、工业自动化和汽车电子等。
I2C总线的工作原理是基于主从架构。
其中一个设备担任主机角色,控制总线的操作和数据传输。
其他设备则是从设备,等待主机的指令,并按照指令执行相应的操作。
总线上可以连接多个从设备,每个设备都有一个唯一的7位或10位地址,主机通过这个地址来选择要与之通信的从设备。
I2C总线是串行通信的,使用两根数据线:Serial Data Line(SDA)和Serial Clock Line(SCL)。
SDA用于传输数据,SCL用于传输时钟信号。
在每个时钟周期,主机通过变动SCL线上的电平来同步通信,而SDA线的电平表示数据位。
总线上的每个设备都必须能够感知和响应这些时钟信号,并在正确的时机进行数据传输。
I2C总线还有两种常见的模式:主模式和从模式。
主模式由主机设备控制,通常用于发起读写操作。
从模式由其他设备控制,用于响应读写操作。
主模式下,主机发送一个启动信号(Start),然后发送目标设备的地址(包括读/写位),设备响应后进行数据传输。
传输完成后,主机发送一个停止信号(Stop),结束通信。
从模式下,从设备等待主机的启动信号和地址,然后响应主机的读写操作。
I2C总线的应用广泛。
以下是一些常见的应用领域:1.消费电子产品:例如智能手机、电视、音频设备等都使用I2C总线连接不同的模块和传感器。
例如,智能手机使用I2C连接触摸屏、陀螺仪和环境传感器等多个外围设备。
2.工业自动化:I2C总线被用于连接传感器和执行器到PLC(可编程逻辑控制器)或其他控制系统。
通过I2C总线,传感器可以实时将数据传输给控制系统,并控制执行器的动作。
i2c通信协议I2C通信协议一、简介I2C (Inter-Integrated Circuit),即集成电路互连,是用于在集成电路之间进行通信的串行通信协议。
它是由Philips(飞利浦)公司于1982年提出,并在当今的电子设备中广泛应用。
I2C通信协议采用两根总线:串行数据线SDA(Serial Data Line)和串行时钟线SCL(Serial Clock Line)。
不同于其他协议,I2C通信协议具有简单、节约外设引脚的特点,被广泛应用于各种嵌入式系统中,如传感器、温度计、数字信号处理器等。
二、基本原理在I2C通信协议中,设备之间的通信通过主从关系进行。
主设备负责生成时钟信号和控制总线的传输,从设备则根据主设备的请求进行响应。
主设备和从设备之间的通信是基于传输一个字节数据的方式进行的。
传输的字节数据由一个起始位、八位数据位、一个奇偶校验位和一个停止位组成。
信息按照从高位到低位的顺序传输,同时由时钟信号进行同步。
三、通信过程I2C通信协议的通信过程主要包括起始信号、地址传输、数据传输和停止信号四个阶段。
1. 起始信号起始信号由主设备产生,用于标识接下来的通信过程开始。
起始信号的产生是通过将数据线(SDA)从高电平切换到低电平时完成的。
在通信开始之前,主设备需要发送起始信号来获取总线控制权。
2. 地址传输主设备在发送起始信号后,紧接着发送一个I2C从设备的地址。
地址由7位或10位组成,其中7位地址方式是I2C通信协议最常用的方式。
地址中的最高位表示对从设备进行读取(1)或写入(0)操作。
通过这个地址,主设备可以选择与特定从设备进行通信。
3. 数据传输地址传输完成后,主设备和从设备之间的数据传输开始。
数据的传输顺序是从高位到低位。
主设备向从设备传输数据时,从设备通过拉低SDA线来接收数据。
从设备向主设备传输数据时,主设备必须确认数据的接收情况,操作是保持SDA线为高电平。
4. 停止信号通信结束时,主设备发送停止信号,用于标示通信过程的结束。
i2c方案原理一、引言i2c(Inter-Integrated Circuit,简称I2C)是一种串行通信协议,用于连接集成电路芯片。
它由飞利浦公司于1982年推出,并在2006年被发布为开放标准。
i2c方案广泛应用于消费电子、工业自动化、汽车电子等领域,具有简单、灵活、可靠的特点。
二、基本原理i2c方案基于主从结构,其中一个设备充当主设备,其他设备作为从设备。
主设备控制总线的时序和数据传输,从设备响应主设备的请求。
1. 总线结构i2c总线由两根线组成:串行数据线(SDA)和串行时钟线(SCL)。
SDA用于双向数据传输,SCL用于时钟同步。
2. 数据传输数据传输分为两种模式:地址模式和数据模式。
在地址模式下,主设备发送从设备的地址和读写方向的位,从设备通过SDA线响应。
在数据模式下,主设备发送或接收数据位,从设备通过SDA线响应。
3. 时序控制i2c使用时钟同步进行数据传输。
时钟由主设备产生,并控制数据的读写。
三、i2c的工作方式i2c方案的工作方式可以概括为以下几个步骤:1. 总线初始化主设备启动总线,通过发送一个特定的起始条件将总线置为忙状态。
2. 从设备选择主设备发送从设备的地址和读写方向的位,从设备通过SDA线响应。
3. 数据传输主设备根据需要发送或接收数据。
4. 响应控制从设备接收到数据后,通过响应控制线(ACK)发送一个ACK或NACK信号,表示接收到了数据或出现了错误。
5. 信号终止主设备发送一个停止条件来结束数据传输。
四、i2c的优势和应用领域i2c方案具有以下优势,使其广泛应用于各个领域:1. 简单i2c只需要两根线,使硬件设计更加简单。
2. 灵活i2c总线可以连接多个设备,每个设备都有唯一的地址,提供了灵活的系统设计选择。
3. 可靠i2c使用时钟同步,可以有效减少传输错误和冲突。
i2c方案适用于以下领域:1. 消费电子i2c广泛应用于智能手机、平板电脑、数码相机等消费电子产品中,用于连接各个芯片和模块。
I2C的原理与应用I2C(Inter-Integrated Circuit)是一种串行通信协议,由飞利浦公司于1980年代开发,用于在数字电子系统中连接各个芯片。
它主要使用两根线进行通信,即SDA(Serial Data Line,串行数据线)和SCL (Serial Clock Line,串行时钟线),同时支持多主机和多从机的通信方式。
I2C协议被广泛应用于各种数字设备的互连,包括传感器、存储器、协处理器等。
I2C的通信原理如下:1.总线结构:I2C总线包含一个主机和多个从机。
主机负责控制总线,并发起数据传输请求;从机等待主机发送命令,并根据命令执行相应操作。
2.时序:I2C总线上的通信需要依靠时钟信号进行同步。
主机通过时钟信号SCL驱动数据传输。
数据线SDA上的数据在时钟信号的上升沿或下降沿进行采样和发送。
3.起始和停止位置:数据传输始于主机发送一个起始信号,结束于主机发送一个停止信号。
起始信号通知所有从机总线上的数据传输即将开始;停止信号表示数据传输已经结束。
4.地址与数据传输:在起始信号之后,主机发送一个地址帧给从机。
地址帧的最高位表示读写操作,从机通过地址帧判断自身是否为数据传输的对象,并相应地进行操作。
主机可以在同一个传输过程中多次发送数据,并且可以从一个从机读取多个字节的数据。
I2C的应用广泛,以下是一些常见的应用领域:1.传感器:I2C通信协议在许多传感器和芯片中得到应用,例如加速度计、陀螺仪、温度传感器和压力传感器等。
这些传感器通过I2C协议与主处理器进行通信,并将采集到的数据传输到主处理器进行处理。
2. 存储器:I2C接口也广泛应用于存储器设备,如EEPROM (Electrically Erasable Programmable Read-Only Memory)和FRAM (Ferroelectric Random Access Memory)。
这些存储器设备可以通过I2C总线进行读写操作,从而存储和检索数据。
I2C协议概述协议名称:I2C协议1. 引言I2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接集成电路(IC)之间的通信。
它由飞利浦半导体(现在的恩智浦半导体)在1982年开发,被广泛应用于各种电子设备和系统中。
本文将详细介绍I2C协议的概述、特点、工作原理以及应用场景。
2. 概述I2C协议是一种双线制串行通信协议,由两条线路组成:串行数据线(SDA)和串行时钟线(SCL)。
这两条线路连接了多个I2C设备,实现了在同一总线上进行通信的能力。
I2C协议支持多主设备和多从设备的连接,可以实现点对点或多对多的通信。
3. 特点3.1 简单:I2C协议使用双线制,只需要两条线路就可以实现通信,相比其他通信协议来说,I2C协议的硬件设计和实现更为简单。
3.2 高效:I2C协议使用了主从式通信模式,主设备控制通信的发起和结束,从设备负责响应和数据传输。
这种通信方式可以提高通信效率。
3.3 可靠:I2C协议通过校验和机制来确保数据的完整性和准确性。
主设备在发送数据时会生成校验和,并在接收数据时进行校验,以保证数据的可靠性。
4. 工作原理4.1 起始条件和停止条件:I2C通信的起始条件是SDA线从高电平跳变到低电平,而SCL线保持高电平。
停止条件是SDA线从低电平跳变到高电平,而SCL线保持高电平。
4.2 时钟信号:SCL线上的时钟信号用于同步数据传输。
数据的传输必须在时钟信号的边沿进行。
4.3 数据传输:数据传输分为地址传输和数据传输两个阶段。
在地址传输阶段,主设备发送目标设备的地址和读/写位。
在数据传输阶段,主设备和从设备之间交换数据。
4.4 硬件地址:每个I2C设备都有一个唯一的硬件地址,用于在总线上进行寻址和识别。
5. 应用场景5.1 存储器:I2C协议常用于连接存储器芯片,如EEPROM和SRAM。
存储器芯片可以通过I2C总线与其他设备进行数据交换。
5.2 传感器:I2C协议广泛应用于各种传感器,如温度传感器、湿度传感器和加速度传感器。
EEPROM的I2C与并口的读写通设计试验目的:认识计算机并口和I2C总线,用计算机并口模拟I2C总线,最后,以24CL02为例,完成对I2C EEPROM的读写操作。
试验器材:一台装有 Tubor C 2.0 的计算机、一条25针并口电缆(看图1插头可要选对了)、自制的用于插入EEPROM芯片的适配器(图2)、一片 EEPROM 如HT24LC02或AT24C02等。
试验前的准备知识:一、I2C总线:i2c总线是 Philips 公司首先推出的一种两线制串行传输总线。
它由一根数据线(SDA)和一根时钟线(SDL)组成。
i2c总线的数据传输过程如图3所示,基本过程为:1、主机发出开始信号。
2、主机接着送出1字节的从机地址信息,其中最低位为读写控制码(1为读、0为写),高7位为从机器件地址代码。
3、从机发出认可信号。
4、主机开始发送信息,每发完一字节后,从机发出认可信号给主机。
5、主机发出停止信号。
I2C总线上各信号的具体说明:开始信号:在时钟线(SCL)为高电平其间,数据线(SDA)由高变低,将产生一个开始信号。
停止信号:在时钟线(SCL)为高电平其间,数据线(SDA)由低变高,将产生一个停止信号。
应答信号:既认可信号,主机写从机时每写完一字节,如果正确从机将在下一个时钟周期将数据线(SDA)拉低,以告诉主机操作有效。
在主机读从机时正确读完一字节后,主机在下一个时钟周期同样也要将数据线(SDA)拉低,发出认可信号,告诉从机所发数据已经收妥。
(注:读从机时主机在最后1字节数据接收完以后不发应答,直接发停止信号)。
注意:在I2C通信过程中,所有的数据改变都必须在时钟线SCL为低电平时改变,在时钟线SCL为高电平时必须保持数据SDA信号的稳定,任何在时钟线为高电平时数据线上的电平改变都被认为是起始或停止信号。
下面以24LC02为例,对几个主要工作时序做详细说明。
24LC02的控制字(节)格式(图4):发送时紧跟开始信号后的4位是器件选择位,通常为‘1010’,它和后面的3位器件地址码(由24LC02的A0、A1、A2上的电平决定)共同构成了7位的从机地址。
从机地址后紧跟1位读/写控制位,该位为1表示读,为0表示写。
图中最后1位是应答位,这里它由从机给出。
24LC02写时序(图⑤):主机发送开始信号,接着发出从机地址和写控制码,主机接收从机发出的应答,主机发送1字节的地址信息,主机接收应答,主机写1字节数据到从机,主机接收应答,主机发出停止信号。
写操作完成,1字节数据被写入24LC02内指定地址。
24LC02提供一种页写的方式,每次最多可连续写入8字节数据再发送停止信号,当写入数据多时可采用这种方式以加快速度。
24LCO2随机读时序(图⑥):主机发送开始信号,接着发送从机地址和写控制码,主机接收应答,主机发送1字节的的地址信息,主机接收应答(注意:前面的时序为写操作,目的把起始地址写入24CL02缓冲中,以告知随后的读操作从哪个地址开始,这个步骤在读时序中有时被称为“伪写”),主机发送开始信号,主机发送从机地址和读控制码,主机接收应答,主机读取1字节数据,主机不发应答,主机发送停止信号。
完成上面步骤,主机已从24LCO2中读出指定地址内1字节数据。
24LC02读时序(图⑦):如图⑦所示,与随机读时序相比,主机没有给从机写入起始地址,所以这种方式用于读取当前地址内的数据。
另,24LC02也可以采用连续读的方式(见图⑧),这样每次最多可以读取8字节。
注意:连续读时每读完1字节后主机要发应答给主机,但在最后1字节后(即停止信号前)主机不发应答。
数据线(SDA)上的信号:读时,从机在SCL的上升沿将数据放到SDA上,写时,遇到SCL 的上升沿,从机将接收SDA上的数据。
二、并行口:它包含了一批输入/输出端口,在PC机上它是一个25针的 D 型插口,一般用于连接打印机,因此有时也称为打印口。
并行口信号:以打印机为例,并口I/0信号中有些是专门用来把数据传送给打印机的,有些则是用来对传送过程给以控制的,还有将打印机的各种工作状态信息发送给CPU的。
详细如表1所示。
表中所有信号用低电平(0V)表示逻辑0,用高电平(5V)表示逻辑1(电压都是相对于18-25脚上的接地电势而言),凡是前缀用符号‘-’表示的信号均指低电平为现役信号。
可以看出,编号为2-9针脚上的信号是传递实际数的信号,而其它线上的信号则是用在对打印机进行初始化处理和对打印机动作进行同步上。
下面简单介绍一下打印过程以加深对并口的理解,CPU通过并口中16和17脚上的信号来选择打印机,并给以初始化处理。
且用13脚上的信号给以响应。
在打印机已准备好接收数据时,就将11脚置为低电平(表示可以接收),CPU把数据放到并口的数据线(2-9)上,并通过1脚上的选通信号对打印机的数据进行选通。
打印机在收到选通信号时将忙信号(11)置为高电平,表示正在接收数据。
数据接收完毕后,打印机在短时间内把现役的确认信号(10脚低电平)发送出去,然后再把忙信号(11)置成低电平(既非现役)并准备好接收更多数据。
并行口硬件:并口行现在通常被集成在系统板上,25针插口上的信号可通过数据锁存器、打印状态和打印机控制三个寄存器(也就是三个输入/输出端口)进行程序设计和控制。
计算机系统中通常有多个并行端口,表2列出了它们在输入/输出系统中的地址。
需要注意的是这些地址是由系统 BIOS 给出的,并不是硬件的物理地址,所以可以通过设置 BIOS 来改变当前端口的配置。
端口寄存器:表3列出了并行端口寄存器各位的意义。
这些信号也是在外部插头上出现的主要信号。
不过寄存器中有些信号的极性与插头上相应信号的极性正好相反。
比如,选通信号在插头上为低电平时,信号是现役的,而在打印机控制寄存器中则为高电平是现役的。
通过上面的准备知识,应有以下理解:1、可以把并口的25个针脚理解为三个寄存器对外的映射,除了传送8位实际数据的引脚外,还有用于控制打印机和取得打印机当前状态的引脚,这些引脚有的为输入,有的为输出,因此可以像用单片机I/O一样灵活的运用它们。
2、I2C总线在通讯过程中,数据线(SDA)上的信号流动方向是不断变化的,如:主机正在写24LC02时,SDA的方向为主机到从机,SDA为输出,写完一字节后,要接收应答时,SDA的方向变为从机到主机,SDA为输入(对于主机)。
3、并口模拟I2C总线,其实是用软件控制并口的 I/O 来输入输出 I2C 总线需要的高、低电平信号,从而产生I2C总线的各种时序。
制作试验电路:试验用的电路如图⑨,分析如后:P1的4-7脚并联(为了加大输出电流),接IC1的VCC 端,为IC1供电。
P1的2脚接IC1的SCL端,用做I2C总线的串行时钟输出。
因I2C总线中数据线(SDA)在不同的时间可能是输入也可能是输出,所以接在IC1 SDA端上的信号也有两路,输出时,P1 3脚输出低电平T1导通,SDA被置为低电平,P1 3 脚输出高电平T1截止,因 R1的作用SDA被置为高电平。
输入时,P1 通过判断 13 脚上的电平高低,来读取SDA上的数据。
要注意的是用于输入时T1必须是截止的,以免SDA被箝位。
这个电路具有通用性,24C01、24CO2、24LC64等24系列的I2C EEPROM 均可按这个电路与并口连接,所以不妨把它当作实用工具来认真制作。
先找一条并口电缆,看电缆插头的形式,找一个与之配套的25针插座,购买一个拨动式的IC插座,将IC插座按图中IC1的连接方法与找来的并口插座相连,然后按图将T1、R1、C1、直接焊在IC插座或并口插座上,要尽量作的紧凑些。
最后将电路固定在一个合适的小塑料盒内,好了,现在它是我们的试验器材,等看过后面的内容,你会发现只要为其配上软件,它就是一个用于读写I2C EEPROM 的好工具。
试验程序编写:和其它高级语言相比,C 更适合于对硬件编程。
本试验所用的程序就是在 Tubor C 2.0 环境下编译通过的。
一、C 语言相关:对本试验较关键的几个函数和运算。
读端口函数 inprotb();可从指定的输入端口读入一个字节,并返回这个字节,用法为:inprotb(端口号或端口地址);例如:b=inprotb(379H);由于379H为‘打印机状态’寄存器的地址,因此执行后变量 b中将存放由函数读取的 379H 的值。
写端口函数 outprotb();可写一字节数据到指定的输出端口,用法为:outprotb(端口地址,整型数);例如:outprotb(378H,1);由于端口地址378H为并口的‘数据锁存器’地址,因此执行后将在并口的 2 脚输出高电平,3-9脚输出低电平。
位运算:位运算的对象只能是整型或字符型数据,本试验程序中用到了两种位运算。
左移运算(<<):运算符左边是位移对象,右边是整形表达式,代表左移的位数,左移时,右端补0;左端移出的部分舍弃。
右移运算(>>):运算符的使用方法与左移运算符一样,所不同的是移位方向相反。
右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补 0,对于负整数,高位补 1。
举例:假设b和c 为字符型变量,并且 b 已赋初值,用二进制表示时 b 的值为 01110110 ;现在若要求的 b 的第 3 位的二进制数是 1 ,还是 0 ,可暂将 b 的值赋给变量 c (c=b;),再对 c 进行位移运算,先将 c 右移 2 位(c=c>>2;),再左移 7 位(c=c<<7;),然后用程序判断 c 的值是否为0,为0则所求位的二进制数为 0,否则为所求位的二进制数为 1。
经过位移 c 的值变为‘10000000’,而不是0,因此可以判断 b 的第 3 位中的二进制数是 1。
后面的试验程序就是用这种方法来接收应答和读取SDA上的数据的。
二、编程前的分析:现在从编程的角度对图⑨ 的电路再次分析。
参见表1、表2、表3。
现在计算机上的并口通常被默认的设置成端口2,既数据锁存器地址为378H的端口。
并行口(P1)13脚:它是一个输入端,是‘打印机状态’寄存器(见表2、表3)中的位 4。
‘打印机状态’寄存器地址为379H,可以用 C 语言中的 inprotb() 函数来读取379H的值,然后通过位运算即可获得当前P1 13脚(IC1的SDA端)的电平状态。
注意:在读端口时,要确认T1是截止的。
并行口(P1)2 脚:它是‘数据锁存’寄存器中的位 0,在这里作为一个输出端。
‘数据锁存’寄存器的地址为378H,可以用 C 语言中的 outprotb() 函数给378H的位 0 写入1或0,,从而模拟出 I2C 总线中SCL上的高、低电平。