本篇运用笔记意图是演示怎么运用PC并口构建一种快速、简略和经济的2线(与I2C兼容)接口。尽管存在很多处理计划,在本篇笔记中给出的计划不需求微处理器、固件,也不存在购买芯片的困难。而是经过Windows软件,协助处理一同调试硬件和软件的困难。在给出的软件的一同,也给出几个调试东西,能够使硬件快速作业运转。
已然硬件并不与PC接口,不需求作规范的声明。尽管给出的硬件和软件一同构建和测验,用户运用有必定的危险。保证一再地查看一切的衔接和电源电压,由于电源直接衔接到PC的并口电路。Dallas Semiconductor/Maxim对或许引起的危害不负任何职责。本处理计划仅用于评价意图,不是用于产品或许发行品。尽管现在的软件仅适用于Win95/98,将来的版别会支撑Win NT。
为什么运用并口,而不是串口或许USB?
在本篇运用笔记中挑选并口作为接口是由于方针是制作一种快速、简略和经济的接口。这个并行接口是依据74HC05逻辑芯片和一些无源元件。别的一个方面,串口处理计划需求一个微处理器、固件、编程器或许体系可编程、电平转化、晶体以及更多的无源器材。相同地,USB除了作业量大的软件和固件投入外,也需求适当数意图硬件。并且调试USB硬件常常需求贵重的协议剖析仪。因而,依据咱们的方针,很明显地挑选并口。可是在作出终究决守时,有必要剖析缺陷以保证这些缺陷是可容忍的。
并口最大的缺陷是它的未来。更多的PC制造商抛弃了并口和串口,转而支撑USB。并口的别的一个缺陷是大多数的装备需求在PC的BIOS里设置。这意味着在PC和硬件之间不能树立通讯时,PC有必要从头启动才干进入BIOS东西(一般在启动时按F1或许DEL键)设置并口装备。在工程或许评价环境中,中止不会花费太多时刻,而一旦投入到商场中很多的支撑将成为问题。尽管更大的费事是PC之间的差异。由于并口是留传硬件,很多年来一直在发展变化和改善。可是,在规划硬件时,要使硬件能够作业在老版别和新版别的并口上。这样在规划接口硬件时有必要作个假定(守时和电气)。最终,别的一个缺陷是操作体系,在Windows NT体系中,需求设备驱动程序。Windows NT不答运用户程序直接读/写硬件寄存器。在软件方面假如购买驱动程序的话是十分贵重的。
走运的是,在评价环境中运用Windows 95和Windows 98并不是很费事,一旦软件批改以支撑Windows NT则不用介意这个论题。
硬件
图1给出了并行2线接口原理图。很简略取得一切的元器材。可运用表贴元件或许直插元件构建接口。
图1 PC 2线接口原理图
2线设备通讯
该接口依据一个74HC05芯片构建,在原理图中以U1表明。74HC05包括六个集电极开路输出的反相器 。在本运用中该芯片具有好几个功用。首要,它为PC并口电路与下一级电路供给阻隔功用。一同将并口的TTL信号转成2线接口需求的集电极开路输出。集电极开路输出需求衔接双向SDA信号到一个专门的并口输入引脚和一个专门的并口输出引脚(与运用一个并口双向引脚的景象相反,这一般需求用户设置PC BIOS)。
已然2线接口的SCL信号对芯片来说为仅输入(不完结时钟扩展),可运用并口的D0发生SCL (PC DB-25衔接器的引脚2),装备为输出。 D0衔接到74HC05反相器(U1E)的一个输入。可是,一些并口或许不能输出满足高的电压,反相器无法判别电压为高电平,所以电阻R3用作上拉电阻使接口对PC之间的差异不灵敏。相同地,为补偿这种差异,电容C4作为一个空的元件包括进去,假如与带有噪声的PC并口衔接时可将C4装置上去。对大多数运用不需求该电容,可是假如PCB正在构建,并不影响,至少包括电容的封装。最终,反相器U1E的输出为SCL。由于输出为漏极开路,需求上拉电阻R1完结高电平逻辑。
别的一个方面SDA信号是双向。运用一个输入引脚(PC DB-25衔接器引脚12)和一个输出引脚(D1, PC DB-25衔接器引脚3)完结双向作业。从PC到2线设备的通讯由发生SCL信号的相同电路完结。并口的输出D1衔接到别的74HC05 (U1)的另一个反相器的输入(U1A)。再着重一次,为保证并口高电平逻辑满足高,反相器能够正确判别,上拉电阻R4将信号D1电平上拉到VCC。相同地,电容C5作为一个空的元件,在遇到噪声的并口时可装置用以滤波。反相器的输出为漏极开路,需求R2完结高电平逻辑。
运用并口的一个输入引脚(引脚12)和74HC05反相器(U1B)完结从2线设备到PC的SDA通讯。应该指出的是,为使设备能够与PC通讯,运用软件有必要使D1为低电平,这样反相器的输出开释SDA,答应2线设备操控SDA。反相器U1B的输入监督SDA。反相器的输出经过R6上拉到VCC,R6担任断定高电平逻辑。串联电阻R5用作抵触状况下的维护。在这个比方中不需求串联电阻,由于并口的引脚12仅用作输入。假如运用并口引脚作为输入输出,在并口输出高电平电压且外部将高电平电压加入到并口上时这个电阻变得十分重要。即便运用软件没有导致抵触,或许别的一个程序也要在一段时刻内拜访该端口(例如,操作体系周期性查找打印机)。
仅需求74HC05六个反相器中的三个用于完结2线通讯,其他三个反相器并未没用。为避免糟蹋,原理图也包括了一个可选的电路,运用两个未运用的门驱动LED,可在软件操控下敞开或许封闭。并口引脚17为输出引脚,用于操控反相器U1C和U1D,并行供给满足的拉电流驱动各种LED。电阻R7,与R3、R4相同,使反相器输入具有满足高的电压,保证高电平逻辑。电阻R8是LED限流电阻,用于操控LED的亮度。风趣的是,并口引脚17,对PC内部有反相器。对引脚17写0将转化成高电平,在抵达DB25之前。高电平输入到U1C和U1D引起输出低电平,翻开LED。
其他没有用到的反相器输入应当衔接到GND,输出高阻以避免抵触。
电容C1和C2用于电源电压的旁路,尽量接近PCB上电源。相同地,去藕电容C3应该尽或许接近74HC05的VCC和GND放置。
当衔接SCL和SDA到2线设备时,应保证接口地与2线设备地共地。假如接口的SCL和SDA衔接到包括2线设备的电路时,留意R1和R2与运用电路2线上拉电阻并联。假如你计划在电路内与2线设备衔接,可适当调整R1和R2,假如运用电路已经有SDA和SCL上拉电阻,可去掉R1和R2。
最终,在原理图中给出的,阴型DB25接口用在接口原型中。在原理图中给出了制造商和器材类型以及阳型DB25电缆。取决于电源,很简略运用阳型DB25衔接器和DB25阳型到阴型电缆。
并口寄存器
PC与接口之间的通讯运用三个寄存器中的四位完结(表1)。并口(LPT1)缺省基地址为378h。其他的两个或许地址为3BCh和278h。基地址为8位数据字节的地址。该字节包括操控引脚D7-D0的位,最低有用位(LSB)为D0。在数据字节后边、基地址+1处的字节为状况字节。在给出的原理图中,状况字节的第5位(位0为LSB)为SDA的输入。状况字节位5的读数指示SDA的状况(经过U1B的倒相)。在履行读操作之前,保证数据字节中的D1写为低电平使得反相器U1A为高阻,答应反相器U1B检测SDA的状况。状况字节之后基地址+2处的字节为操控字节。咱们感兴趣的是操控字节的位3(位0为LSB)。位3经过PC内部的反相器,然后输出到PC的DB25接口的引脚17。该位使能LED或许使LED无效。读写该位的比方后边的章节给出。
校验和调试硬件
一旦硬件完结构建,首要对硬件做仔细查看。在衔接到PC或许电源之前,保证一切的衔接是安全的、正确的,且没有短路存在。保证VCC没有衔接到地。一旦履行这些防范措施后,衔接5V电源到该接口(不要衔接并口电缆)。假如电源有电流读数,保证电流不超越10mA到15mA。假如呈现更大的电流,一再查看一切衔接。保证芯片衔接正确,再次查看或许用到的极性%&&&&&%的极性,比方C1。另一个或许导致大作业电流是不正确的上拉电阻的阻值 ,比方运用470Ω替代4.7kΩ电阻会导致电流增大。
假如一切都正常,衔接并口电缆。由于上拉电阻的存在,电流略微发生变化。到此你能够试试附送的软件,或许依据下一部分学会怎么运用微软的调试东西直接读写并口寄存器,这样能够校验或许调试硬件。运用Debug Microsoft Windows 95和98和DOS东西Debug读写并口寄存器。尽管Windows NT包括Debug东西,可是操作体系不答应直接拜访硬件。在NT运用Debug对硬件不会有任何作用。为运转Debug,单击Sart菜单挑选Run指令..在编辑框输入Debug。带“-”提示符的DOS窗口呈现。图2给出了Debug的屏幕截图。很简略运用Debug。例如,读字节地址378h,在提示符“-”后输入: i 378
成果是从指定地址中读出两个数字(一个字节)十六进制数。可运用Debug写存储器。例如,将00h写入378h,输入以下然后回车。
主张当心运用Debug,仅可、拜访已知的寄存器。拜访其他的寄存器会或许导致不知道或许不期望的副作用。键入q退出Debug, 键入?寻求协助。这儿给出运用Debug校验/条是硬件的比方(运用缺省的LPT地址)。图2的Debug屏幕截图给出了这些比方。
-i 378 读数据字节。
-o 378 00 数据字节写为00h。SDA和SCL输出高电平。
-i 378 读数据字节。这会回来00,由于刚写入00。
-o 378 01 使SCL低电平,SDA高电平。
-o 378 02 使SDA低电平,SCL高电平。
-o 378 03 SDA 和SCL输出低电平。
-o 378 00 在履行下列指令时保证SDA为高电平。
-i 379 这回来SDA的状况。假如位5为0,则SDA为高电平,假如位5为1,SDA为低电平。
留意要读入SDA的值,数据字节应首要写入0, 这样反相器(U1A)会开释SDA。假如外部没有将SDA拉低,位5读入为0。
-o 378 02 使SDA为低电平。
-i 379 读SDA状况,这时位5读入为1。
为将LED敞开和封闭。主张操控字节中未运用的的位坚持不变。可经过读寄存器,然后运用与或许或操作设置铲除位3。留意PC内部
有反相器。
-i 37A 读操控字节。可看到如屏幕截图所示,PC回来0C(当时LED封闭)。为翻开LED,位3有必要铲除,可用F7h与上操控字节的读数。关于读数0C,铲除位3得到04。将其写入操控字节会敞开LED.
-o 37A 04 敞开LED。
并口软件东西
图3给出了并口软件的屏幕截图,该软件专为本篇运用程序中的硬件规划。可从以下地址下载: http://files.dalsemi.com/system_extension/AppNotes/AN3230/ParallelPort.exe 屏幕截图或许与所下载的程序略微有收支,由于软件有或许改善了或许增添了功用。
软件缺省的LPT地址为378h。假如发现软件不能与硬件通讯,能够挑选不同端口的地址。最简略判别软件是否与硬件通讯的办法是单击LED On和LED Off按钮。假如成功,单击Test按钮,它操控D1 (U1A),从U1B读入值。读数成果会显现在状况栏里。
疏忽同步脉冲。假如你期望运用示波器捕捉2线通讯,能够使能同步脉冲,将示波器探针放到DB25的引脚17上,作为触发器。
到此,能够预备与你已衔接的2线设备通讯了。保证设备的SDA, SCL和GND衔接到硬件上。保证74HC05的VCC尽或许等于设备的VCC。
有两种办法能够与设备通讯,首要需求保证软件知道2线设备从地址通讯。软件缺省地址为A0 (hex),这刚好为数字电压表的地址,尽管这常取决于设备地址引脚,假如有许多的话。要改动2线设备地址,在编辑框中键入地址,单击“Change”。假如不知道2线设备的地址,请查看设备数据手册。
最简略读写一个或许两个字节设备寄存器的办法是运用软件中的“One and Two Byte Reads/Writes”部分。该部分合适对设备编程/装备,由于2线设备中一切细节(start, stop, ACK, NACK, 等)自动隐藏。只需求输入需求的存储器地址去读或许读或许写。假如期望写,用需求的数据填充“DATA”域。
与设备通讯的别的一种办法是用“2-Wire Functions”部分,假如需求学习2线设备协议,这部分功用很合适。在演示比方之前,需求解说几个按钮的意义。“Send Write”按钮是用2线地址从2线地址域,将LSB (R/W位)屏蔽为0,然后发送8位。“Send Read”按钮是用相同的2线地址,可是将LSB (R/W位)屏蔽为1,指示下一步将进行读操作。8位数据发送。“Bus Reset”按钮在SCL输出9个时钟周期,从头设置2线设备总线。
比方(运用缺省的从地址)
1. 写存储器地址7Fh到01h。
Start
Send Write
Data [7F]
Data [01]
Stop
2. 读存储器地址7Fh (一个字节)。
Start
Send Write
Data [7F]
Start——通
常称作从头读。
Send Read – 这儿运用Rd w/NACK – Rd w/NACK是由于仅读1个字节。
Stop
3. 读存储器地址F0h和F1h (多个字节读)。
Start
Send Write
Data [F0]
Start
Send Read
Rd w/ACK – 假如超越2字节需求读,指令会重复。
; Rd w/NACK – 最终的读有必要是w/NACK。
Stop
定论
本篇运用笔记描绘了怎么运用PC并口构建一个简略、经济和快速的2线接口。除了原理图外,还供给软件协助构建硬件。一旦硬件构建结束,软件可当即用于与Dallas Semiconductor2线设备通讯,不需求写任何软件。
更多计算机与外设信息请重视:21ic计算机与外设频道