I2C 接口实现通用 IO 扩展
I2C总线接口详解

应用领域拓展
智能家居
i2c总线接口在智能家居领域的应用不断拓展,如智能照明、智 能安防等。
工业控制
i2c总线接口在工业控制领域的应用也越来越广泛,如传感器数 据采集、电机控制等。
医疗设备
随着医疗技术的进步,i2c总线接口在医疗设备领域的应用也在 逐步增加,如医疗监测设备、医疗机器人等。
未来展望
标准化
i2c总线接口详解
• i2c总线接口概述 • i2c总线接口工作原理 • i2c总线接口硬件设计 • i2c总线接口软件编程 • i2c总线接口常见问题及解决方案 • i2c总线接口发展趋势与展望
01
i2c总线接口概述
i2c总线接口定义
I2C总线是一种串行总线,用于连接微控制器和各种外围设 备。它由两条线组成:一条是数据线(SDA),另一条是 时钟线(SCL)。
I2C总线允许多个主设备 同时工作,提高了系统
的灵活性。
I2C总线具有强大的寻址 能力,可以连接多个外
围设备。
i2c总线接口应用场景
传感器接口
I2C总线可以方便地连接各种传 感器,如温度传感器、光传感 器等。
存储器接口
I2C总线可以连接各种类型的存 储器,如EEPROM、RAM等。
实时时钟
I2C总线的实时时钟(RTC)外 围设备可以用于提供系统时间。
根据设备地址的寻址方式,选择合适的寻址模式, 以实现正确的设备寻址。
寻址操作
发送设备地址
在开始数据传输之前,主设备需要发送目标设备的地址,以标识 要与之通信的设备。
接收应答信号
主设备发送地址后,等待从设备返回的应答信号,以确认从设备已 准备好进行数据传输。
发送操作指令
主设备根据需要发送相应的操作指令,如读或写,以指示接下来的 数据传输方向。
io 扩展原理

io 扩展原理
IO 扩展原理指的是输入和输出的扩展方式。
在计算机系统中,IO(Input/Output)是指计算机与外部设备之间进行数据交换
的过程。
常见的外部设备包括键盘、鼠标、显示器、打印机、硬盘等。
在计算机系统中,IO 扩展可以通过多种方式实现,包括硬件
扩展和软件扩展。
硬件扩展是指通过添加新的硬件设备来实现IO的扩展。
例如,可以通过添加USB接口来连接更多的外部设备。
硬件扩展需
要硬件工程师进行设计和实现,并且需要有相应的硬件接口和驱动程序。
软件扩展是指通过编程和软件设计来实现IO的扩展。
软件扩
展可以通过编写驱动程序或者操作系统的接口来实现。
例如,可以通过编写设备驱动程序来支持新的外部设备。
IO 扩展的实现需要考虑多个因素,包括设备的兼容性、性能、稳定性等。
为了保证IO扩展的稳定性,通常需要进行严格的
测试和验证。
总结来说,IO扩展原理是通过硬件或者软件的方式来增加计
算机与外部设备之间的数据交换能力,以满足用户对IO需求
的扩展。
IO接口扩展电路设计

IO接口扩展电路设计概述:设计目标:设计一个IO接口扩展电路,使原有设备能够扩展2个输入接口和2个输出接口,并实现数据的读取和写入功能。
设计方案:本设计方案主要采用74HC138芯片作为IO口选择器,74HC273芯片作为触发器,通过这两个芯片的组合,实现IO接口的扩展。
具体设计如下:1.输入接口扩展:使用一个74HC138芯片,将其8个输入引脚分别连接到原有设备的数据总线上,并将3个使能引脚和2个输出引脚连接到原有设备的控制总线上。
通过控制使能引脚的状态,可以选择不同的输入端口进行数据读取。
2.输出接口扩展:使用一个74HC273芯片,将其8个输入引脚通过与门连接到原有设备的控制总线上。
通过控制输入引脚的状态,可以选择不同的输出端口进行数据写入。
此外,还需要将芯片的输出引脚连接到扩展设备的数据总线上,以实现数据的输出。
3.扩展电路控制:通过一个微控制器或者其他逻辑电路,控制74HC138芯片和74HC273芯片的使能和输入引脚的状态,从而实现对IO接口扩展电路的控制。
优化设计:为了提高扩展电路的稳定性和可靠性,可以采取以下优化措施:1.添加电源稳压电路,确保电路工作在稳定的电压范围内,避免电压波动对电路性能的影响。
2.添加滤波电路,用于滤除噪声信号,提高数据传输的稳定性和可靠性。
3.保证电路的接地良好,减少接地电阻和噪声干扰。
4.使用优质的连接器和电子元件,提高电路的可靠性和使用寿命。
总结:通过上述设计方案和优化措施,可以实现IO接口的扩展,并满足特定需求。
扩展电路的设计需要考虑电路的稳定性、可靠性和数据传输的性能,合理选取芯片和电子元件,并进行必要的优化措施,以确保电路工作正常。
此外,设计者还需要根据实际情况进行调试和测试,确保电路性能的稳定和可靠。
I2C的I_O扩展

➢ 支持多主控(multimastering) ➢ 减少了芯片管脚的数量,降低了互联成本
武汉理工大学
I2C总线启停时序
❖I2C总线启停时序
➢SCL为高,SDA负跳变,启动 ➢SCL为高,SDA正跳变,停止
基于DSP技术的电子技术基础实验
——基于I2C技术的DSP的IO口扩展实验
指导教师:吴友宇
武汉理工大学
为什么要进行I/O扩展
❖ TMS320VC5402是TI公司近年推出的 C5000系列中性价比较高的定点数字 信号处理器。
➢ VC5402用于音频信号处理 ➢ 通用I/O口有限
武汉理工大学
I2C总线简介
武汉理工大学
I2C总线数据位传送
❖I2C总线上数据位传送时序
➢每一 位数据都有一个时钟脉冲相对应 ➢SCL高电平,SDA上的电平保持稳定 ➢SCL低电平,SDA上的电平改变状态
武汉理工大学
I2C总线应答信号
❖I2C总上应答信号时序
武汉理工大学
怎样进行I/O扩展(一)
❖把TMS320VC5402的McBSP口配置 成通用I/O口来模拟I2C 总线时序。
McBSP作为通用I/O的功能 武汉理工大学
怎样进行I/O扩展(二)
❖PCF8574 是PHILIPS 公司推出的一款带I2C 总线 的8位I/O 扩展口芯片,具有CMOS 电路,与大多 数MCU 兼容。
PCF8574结构图
武汉理工大学
I/O扩展的实现
❖PCF8574接口电路图
武汉理工大学
武汉理工大学
i2c 挂多个相同设备的问题的方法

文章标题:解决i2c挂载多个相同设备的问题方法一、引言在现代电子设备中,I2C(Inter-Integrated Circuit)总线被广泛应用,它是一种串行通信总线,能够实现微控制器和外设之间的通信。
然而,当我们需要挂载多个相同设备到同一个I2C总线上时,往往会面临一些问题。
本文将探讨如何解决i2c挂载多个相同设备的问题,并提供一些解决方法。
二、深入理解I2C总线1. 什么是I2C总线I2C总线是由飞利浦公司开发的一种串行通信总线,它使用两条线(SCL和SDA)进行通信。
其中,SCL线用于时钟信号的传输,而SDA线则用于数据传输。
这种双线通信方式使得I2C总线可以轻松地挂载多个设备。
2. I2C挂载多个相同设备的问题当我们需要连接多个相同的I2C设备到同一个总线时,容易出现位置区域冲突的问题。
每个I2C设备都有一个7位的位置区域,这意味着在同一总线上,不能有两个设备拥有相同的位置区域。
如何避免这种位置区域冲突成为了我们需要解决的问题。
三、解决方法1. 修改硬件位置区域许多I2C设备都提供了硬件位置区域的修改方式。
通过更改设备的引脚连接状态或设置跳线,可以轻松地修改设备的硬件位置区域。
这样,即使挂载多个相同设备,它们之间也不会出现位置区域冲突的情况。
2. 使用外部IO扩展芯片另一种解决方案是使用外部的IO扩展芯片,例如I/O expander。
这种芯片可以扩展额外的GPIO口,使得我们可以通过它来控制每个I2C 设备的使能引脚,从而实现对多个相同设备的独立控制。
3. 软件解决方案如果硬件上无法做出修改,我们还可以通过软件的方式来解决这个问题。
在代码中进行动态分配位置区域,或者在初始化每个设备时动态修改其位置区域。
当然,这种方法需要在软件层面投入更多的工作和资源。
四、总结从硬件位置区域的修改到外部IO扩展芯片的应用,以及软件解决方案的探索,我们有了多种方法可以解决i2c挂载多个相同设备的问题。
在实际应用中,我们可以根据具体情况来选择适合的解决方案。
I2C总线8位远程IO扩展口芯片PCF8574的驱动程序

//......................................//名称: PCF8574(A).c I2C扩展8位I/O芯片的接口程序//编程: 不详//日期: 20111025////发现问题请指点,谢谢!//......................................//CPU: 89C55 11.0592MHz//环境:KeilC51 V8.01//引脚定义://CPU_P2.0--- P CF8574X_SC L 时钟// CP U_P2.1 ---PCF8574X_SDA 数据//CPU_P2.2 --- PC F8574X_INT中断//......................................#incl ude <Publi c.h>#incl ude <Intri ns.h>#inc lude"dela y_s.h"#in clude "pcf8574.h"//PCF8574(A)芯片指令的定义#defi ne PC F8574_WRIT E 0x40 //器件地址= 0111 A2 A1 A0r/w#defin e PCF8574_READ0x41//器件地址= 0111 A2 A1A0 r/w#de finePCF8574A_W RITE0x70//器件地址= 0111 A2 A1A0 r/w#de finePCF8574A_R EAD 0x71 //器件地址= 0111 A2 A1 A0 r/w#de fineP CF8574X_R EGIST ER_AD DR_MA X 7 //器件内部寄存器地址的最大值//内部函数s tatic void i2c_star t_con d(voi d);s tatic void i2c_stop_cond(void);st aticuchar i2c_read_byte(void);sta tic u chari2c_r ead_b yte_n ack(v oid);stat ic vo id i2c_wr ite_b yte(u charda);//============================================================== ===============//接口调用函数部分//*******************************************************//序号:// HD_PC F8574X_S01//功能://读出芯片的复位状态// is_pcf8574a=1 是A芯片// ad d_of_part器件的子地址 0~3//输出://端口的数据//********************************************************uch ar PC F8574X_rea d_io(uchar is_p cf8574a, u charadd_o f_par t){uchar i;i2c_s tart_cond();i f(is_pcf8574a !=0){i2c_wr ite_b yte(P CF8574A_RE AD |((add_of_pa rt <<1) &0x0E));//器件地址=0111 A2 A1 A0 r/w}else{i2c_write_byte(PCF8574_R EAD |((add_of_p art <<1) &0x0E));//器件地址=0100 A2 A1A0 r/w}i =i2c_re ad_by te_na ck();//顺序读的方式读出一个字节i2c_st op_co nd();ret urn(i);}//*******************************************************//序号:// H D_PCF8574X_S02//功能://写数据到I/O端口//输入://is_pcf8574a =1 是A芯片//add_of_p art:器件的子地址 0~7//dat:写入的字节//输出: // 无//********************************************************voidPCF8574X_w rite_io(uc har i s_pcf8574a, uch ar ad d_of_part, ucha r dat){i2c_s tart_cond();i f(is_pcf8574a !=0){i2c_wr ite_b yte(P CF8574A_WR ITE |((add_of_p art <<1) &0x0E)); //器件地址=0111A2 A1 A0 r/wel se{i2c_wri te_by te(PC F8574_WRIT E |((add_o f_par t <<1) &0x0E));//器件地址=0100 A2 A1 A0 r/w}i2c_write_byte(dat);i2c_st op_co nd();}//==============//内部调用函数部分//==============//----------------------------------------------//I2C发启始条件:时钟线为高时数据线发生下降沿跳变//----------------------------------------------sta tic v oid i2c_st art_c ond(v oid){CO DE_SC L_LOW;_D ELAY_NOP3;COD E_SDA_HIGH;_D ELAY_NOP3;COD E_SCL_HIGH;_D ELAY_NOP3;COD E_SDA_LOW;_DE LAY_N OP3;}//----------------------------------------//I2C 发结束条件:时钟线为高时数据线发生上升沿跳变//----------------------------------------st aticvoidi2c_s top_c ond(v oid){CO DE_SC L_LOW;_D ELAY_NOP3;COD E_SDA_LOW;_DE LAY_N OP3;CODE_SCL_HIGH;_DE LAY_N OP3;CODE_SDA_HIGH;_DE LAY_N OP3;}//----------------------------------------// I2C 读取一个中间字节的数据//----------------------------------------/*stat ic uc har i2c_re ad_by te(vo id){uch ar i;uch ar da=0;for(i =0;i<8;i++){da <<=1; //传输的数据高位在前C ODE_S CL_LO W;_DELA Y_NOP3;CODE_SCL_H IGH;//时钟为高时读数据//N OP3;if(JUDG E_PCF8574X_SDA) da++;}CODE_SCL_LOW;_DEL AY_NO P3;CODE_SDA_L OW; //发送应答位_DELA Y_NOP3;C ODE_S CL_HI GH;_DELA Y_NOP3;C ODE_S CL_LO W;_DELAY_NOP3;CO DE_SD A_HIG H;r eturn(da);}*///----------------------------------------// I2C读取一个结尾字节的数据//----------------------------------------stat ic uc har i2c_re ad_by te_na ck(vo id){uch ar i;uch ar da =0;for(i =0; i<8; i++){da<<=1;CO DE_SC L_LOW;_DELAY_NOP3;C ODE_S CL_HI GH;//NOP3;i f(JUD GE_PC F8574X_SDA) da++;}COD E_SCL_LOW;_DE LAY_N OP3;CODE_SDA_HIGH;_DE LAY_N OP3;CODE_SCL_HIGH;_DE LAY_N OP3;CODE_SCL_LOW;retu rn( d a );}//----------------------------------------// I2C 写入一个字节的数据//----------------------------------------stat ic vo id i2c_wri te_by te(uc har d a ){uch ar i;for(i =0; i<8; i++){COD E_SCL_LOW;if(da&0x80){COD E_SDA_HIGH;}el se{CODE_SDA_L OW;}CODE_SCL_H IGH;da<<=1;}CODE_SCL_L OW; //第8个SCL下降沿,写入8位数据_DELA Y_NOP3;C ODE_S DA_HI GH;_DELA Y_NOP3;C ODE_S CL_HI GH;}//============================================================== ===============//End O f Fil e。
简单i o口扩展实验实验报告

简单i o口扩展实验实验报告简单I/O口扩展实验实验报告引言:简单I/O口扩展实验是一项基础的电子实验,通过扩展I/O口,可以实现对外部设备的控制和数据交互。
本实验旨在通过实际操作,了解I/O口扩展的原理和应用。
实验目的:1. 了解I/O口的基本概念和工作原理;2. 学习使用I/O口扩展芯片实现对外部设备的控制;3. 掌握I/O口扩展的编程方法和应用技巧。
实验器材和材料:1. Arduino开发板;2. I/O口扩展芯片;3. 连接线;4. 外部设备(如LED灯、蜂鸣器等)。
实验步骤:1. 连接Arduino开发板和I/O口扩展芯片。
将I/O口扩展芯片的引脚与Arduino开发板的数字引脚相连,确保连接正确可靠。
2. 编写程序。
使用Arduino开发环境,编写程序代码,实现对I/O口扩展芯片的控制。
根据实际需求,可以选择控制外部设备的开关、亮度、频率等。
3. 上传程序。
将编写好的程序上传到Arduino开发板,确保程序能够正确运行。
4. 运行实验。
运行程序,观察外部设备的状态变化。
通过改变程序中的参数,可以实现对外部设备的不同控制效果。
实验结果与分析:通过实验,我们成功地实现了对外部设备的控制。
通过改变程序中的参数,我们可以控制外部设备的开关、亮度、频率等。
这说明I/O口扩展技术具有很大的应用潜力,可以实现对各种外部设备的控制和数据交互。
实验总结:通过本次实验,我们深入了解了I/O口扩展的原理和应用。
通过编写程序,我们掌握了I/O口扩展的编程方法和应用技巧。
通过实验,我们成功地实现了对外部设备的控制,这为我们进一步研究和应用I/O口扩展技术奠定了基础。
实验中遇到的问题和解决方法:在实验过程中,我们遇到了一些问题,如连接错误、程序错误等。
我们通过仔细检查连接和程序代码,逐一解决了这些问题。
这提醒我们在实验中要认真细致,仔细检查和排除错误,以保证实验的顺利进行。
实验的局限性和改进方向:本次实验只是简单地介绍了I/O口扩展的基本原理和应用,还有很多相关的知识和技术需要进一步学习和探索。
简单io口扩展实验报告

简单IO口扩展实验报告1. 背景在实际应用中,我们经常需要扩展计算机的输入输出(IO)接口,以满足不同的需求。
而简单IO口扩展就是一种常见且重要的扩展方式。
通过简单IO口扩展,我们可以将计算机连接到更多的外部设备,如传感器、执行器等,从而实现更多功能和应用。
2. 分析2.1 简单IO口介绍简单IO口是指通用输入输出接口,它可以通过数字信号来进行数据的输入和输出。
每个简单IO口通常包括一个输入引脚和一个输出引脚。
通过控制这些引脚的电平状态,我们可以实现数据的输入和输出。
2.2 简单IO口扩展方法简单IO口可以通过不同的方法进行扩展,常见的方法包括:•并行接口:使用并行接口可以同时传输多个位的数据。
它通常使用多条数据线和一些控制线来实现高速数据传输。
•串行接口:使用串行接口可以逐位地传输数据。
它通常使用一条数据线和一些控制线来实现较低速率但更简洁的数据传输。
•USB接口:USB(Universal Serial Bus)是一种常见的数字串行总线接口,它可以连接多种设备,并提供高速数据传输和供电功能。
•SPI接口:SPI(Serial Peripheral Interface)是一种常用的串行外设接口,它可以连接多个外设,并以主从模式进行数据传输。
•I2C接口:I2C(Inter-Integrated Circuit)是一种常见的串行通信接口,它可以连接多个外设,并使用两条线路进行数据传输。
2.3 简单IO口扩展实验本次实验旨在通过简单IO口扩展方法,将计算机与外部设备进行连接,并实现数据的输入和输出。
具体步骤如下:1.确定要使用的简单IO口扩展方法,如并行接口、串行接口等。
2.根据选择的扩展方法,准备相应的硬件模块和连接线缆。
3.将硬件模块与计算机进行连接,确保电气连通性。
4.编写相应的驱动程序或使用现有的驱动程序,以实现与硬件模块的通信。
5.运行程序并测试扩展功能。
3. 结果经过实验测试,我们成功地实现了简单IO口扩展,并达到了预期的结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用笔记494 利用MAX II CPLD 的I 2C 总线接口实现GPIO 引脚扩展引言本设计实例展示了Altera ® MAX ® II CPLD 通过工业标准I 2C 总线提供通用I/O (GPIO) 引脚扩展的能力。
为了减小封装尺寸和引脚数量,很多微处理器系统限制了通用I/O 的数量。
然而,如果系统有I 2C 接口,那么本设计可以通过I 2C 总线来加入更多的 GPIO 引脚。
借助于MAX IICPLD ,增加的这些GPIO 引脚要比微处理器的I/O 引脚功耗低。
GPIO 引脚扩展和I 2C在某些情况下,可能需要通过较长的PCB 走线来访问系统中的GPIO 引脚(例如蜂窝电话中不同部分的连接)。
I 2C 接口是2线系统,本设计通过普通的2线走线,在远端提供多个输入和输出引脚。
这提高了设计灵活性以及整个系统的物理紧凑性,还减小了封装尺寸和引脚数量。
可以通过这些通用输出引脚来连接并控制风扇控制器、LED 状态显示和状态指示器等设备。
同样的,复位引脚和按钮开关等设备可以直接连接到CPLD 的通用输入上,实现各种应用。
图1.通过I 2C 总线实现GPIO 引脚扩展2007年12月,1.0版利用MAX II CPLD的I2C总线接口实现GPIO引脚扩展GPIO引脚扩展的I2C接口MAX II CPLD用作I2C总线从机,在其I2C接口上有两个引脚:I2C时钟SCL和I2C 数据线SDA。
作为 I2C主机的主系统和MAX II(用作 I2C从机)进行通信。
CPLD为主系统提供8个通用输入端口和8个通用输出端口。
GPIO引脚并行接收 I2C总线串行发送的数据。
这样,可以同时读写所有8个通用I/O。
I2C接口对于I2C接口,CPLD(I2C从机)提供一个符合常用I2C 协议的内置7位地址。
主机发送起始信号,然后是7位地址和一个R/W位。
当I2C总线上广播的地址和从机设备的地址匹配时,根据主机发送的读或者写信号,设备发送一个ACK (应答)信号,然后是数据。
随后是另一个ACK信号。
以此不断进行数据交换,直到主机发送Stop (P)信号。
图2.I2C信号格式表1.I2C接口引脚说明信号目的方向SCL I2C时钟输出SDA I2C串行数据双向设计实现GPIO 接口当主机发出写命令(R/W = 0)时,I 2C 总线接收到的数据被用于更新通用输出引脚,直到接收到停止或者重新启动命令。
同样的,当I 2C 主机发出读命令(R/W = 1)时,在ACK 位对通用输入引脚上的数据进行采样,并通过I 2C 总线串行发送。
一直持续这一过程,直到主机发出停止或者重新启动命令。
图3.GPIO 引脚扩展演示电路设计实现该设计实例可以采用EPM240G 或者其他MAX II CPLD 来实现。
实现过程涉及到使用设计实例源代码, 为MAX II CPLD GPIO 分配I 2C 总线和GPIO 引脚扩展输入和输出。
在MDN-B2演示板上采用I 2C 仿真器演示了GPIO 引脚扩展。
使用PC 并口来生成该仿真器,通过接口硬件来生成I 2C兼容二线总线。
Dallas 半导体公司的Maxim 应用笔记AN3230详细说明了怎样建立 I 2C 环境,可以从下面的链接下载该应用笔记:表2.GPIO 引脚说明信号目的方向8位输入通用输入8位输出通用输出利用MAX II CPLD的I2C总线接口实现GPIO引脚扩展/appnotes.cfm/an_pk/3230。
除了能够从这一URL下载免费的软件外,还可以从下面的链接下载并口I2C设置的相应免费软件程序:/system_extension/AppNotes/AN3315/ParDS2W.exe这一实用程序采用了并口及其硬件和MAX II CPLD进行接口,并提供I2C2线系统需要的SDA和SCL连接。
完成后,该设计使MDN-B2演示板(通过DIP开关设置)的输入能够到达I2C主机。
同样,I2C主机发送的数据出现在MAX II CPLD的 GPIO输出端口 (连接到演示板的LED)上。
对于该演示,I2C主机是运行并口I2C 软件 PC的用户接口。
下面详细介绍了怎样在MDN-B2演示板上实现本设计实例。
表3列出了本设计实例的EPM240G引脚分配。
表3.MDN-B2演示板设计实例EPM240G引脚分配信号引脚信号引脚SCLK引脚39SDA引脚40GPIO_output[0]引脚69GPIO_output[1]引脚70GPIO_output[2]引脚71GPIO_output[3]引脚72GPIO_output[4]引脚73GPIO_output[5]引脚74GPIO_output[6]引脚75GPIO_output[7]引脚76GPIO_input[0]引脚55GPIO_input[1]引脚56GPIO_input[2]引脚57GPIO_input[3]引脚58GPIO_input[4]引脚61GPIO_input[5]引脚66GPIO_input[6]引脚67GPIO_input[7]引脚68在Quartus® II 软件中,把未使用的引脚分配为input-tristated。
您还必须使能SCLK和SDA引脚上的Auto Open-Drain设置。
对此,在Assignments菜单中,单击Settings,然后选择Analysis and SynthesisSettings,使能Auto Open-Drain设置。
设置完成后是进行编译。
设计说明按照以下步骤在MDN-B2演示板上演示本设计:设计实现1.使用滑动开关SW1打开演示板电源。
2.通过演示板上JTAG插头JP5和普通编程电缆(ByteBlaster™II或者USB-Blaster™),把设计下载到MAX II CPLD中。
3.在编程启动前和启动过程中,保持演示板上SW4的按下状态不变。
编程完成后,关断电源,拔下JTAG连接器。
4.按照以下步骤在PC上建立并口驱动I2C环境:a.下载Maxim并口实用程序等软件工具实现和I2C协议的从机进行通信。
安装并口软件。
(这一实例使用了ParDS2W.exe程序)b.对于这一并口程序,您必须安装并口驱动程序来使能对Windows XP或者Windows 2000并口的访问。
您可以从Direct-IO下载该驱动程序:/Direct-IO/directio.exec.安装完成后,必须配置Direct-IO程序。
打开Windows控制面板,单击Direct IO图标。
输入并口的起始和结束地址,这通常是378至37F;但是要查看下面的设置来确定PC的并口地址:Control Panel/System/Hardware/DeviceManager/Ports/ECP Printer port (LPT)/Resources。
d.启动PC时,在BIOS设置中把并口配置为ECP。
e.然后,在Direct IO控制面板中选择Security 标签,浏览ParDS2W.exe程序路径。
单击Open,然后单击Add,加入程序。
在Allowed Processes域中出现该程序的路径。
单击OK。
f.安装MDN-B2演示板提供的并口I2C软件狗。
如果需要,使用延长线延长并口连接,以靠近演示板。
g.连接I2C并口软件狗的4针插座和演示板的I2C插头(JP3),插座的红色标记对上JP3插头的引脚1。
h.打开ParDS2W程序,选择PC合适的并口地址 (配置Direct IO时可以看到),把2-Wire Device Address设置为00h。
i.最后,在Test Circuit标签下测试 I2C设置,观察在Status窗口中是否出现Test PASS消息。
如果出现,则表明现在建立了I2C环境。
5.通过并口实用程序,利用2线功能,进行I2C读写操作。
6.进行I2C写操作时,单击Start,然后单击Write Byte。
在靠近WriteData的区域中键入一个十六进制字节,单击Write Data。
观察8个红色LED上相应的数值。
每次写操作后,单击Stop。
7.同样的,单击Start,然后单击Read Byte,进行读操作。
Read窗口显示演示板上SW5 开关的设置。
每次读操作后,单击Stop。
源代码本应用笔记所介绍的设计实例采用了Verilog HDL来实现,成功地运行在MDN-B2演示板上。
下面的链接提供源代码、测试台文件以及完整的Quartus II工程:/literature/an/an494.zip结论正如本设计实例所示,MAX II CPLD是实现I2C等工业标准接口非常好的选择。
其低功耗以及易于上电特性及其内部振荡器功能使其成为需要I2C接口来提供GPIO引脚扩展等应用理想的可编程逻辑器件选择。
其他资源■MAX II CPLD主页:/products/devices/cpld/max2/mx2-index.jsp■MAX II器件资料:/literature/lit-max2.jsp■MAX II关断设计:/support/examples/max/exm-power-down.html■MAX II应用笔记:AN 422:利用MAX II CPLD实现便携式系统的功耗管理AN 428:MAX II CPLD设计指南文档版本历史表4列出了本应用笔记的版本历史。
表4.文档版本历史日期和文档版本进行的改动对改动的总结2007年12月,1.0版初次发布—101 Innovation DriveSan Jose, CA 95134 Technical Support: /support/ Literature Services: literature@ 版权© 2007Altera公司。
保留所有版权。
Altera、可编程解决方案公司、程式化Altera标识、专用器件名称和所有其他专有商标或者服务标记,除非特别声明,均为Altera公司在美国和其他国家的商标和服务标记。
所有其他产品或者服务名称的所有权属于其各自持有人。
Altera产品受美国和其他国家多种专利、未决应用、模板著作权和版权的保护。
Altera保证当前规范下的半导体产品性能与Altera标准质保一致,但是保留对产品和服务在没有事先通知时的升级变更权利。
除非与Altera公司的书面条款完全一致,否则Altera不承担由此处所述信息、产品或者服务导致的责任。
Altera建议客户在决定购买产品或者服务,以及确信任何公开信息之前,阅读Altera最新版的器件规范说明。