#程序员##IT教育##软件开发##IT#
背景
特征
版本
为什么仍然使用好的旧并行端口?
显然,并行端口比串行端口(RS232)快得多。此外,它提供了更多的输入线。
那么USB呢?
市场上有几种专业的逻辑分析仪,如 PCI 卡或 USB 设备。但它们非常昂贵(> 350 美元)。如果您必须测量非常高的频率或需要超过 17 个输入通道,则必须购买其中一个。但是对于高达 500 kSamples/s 的频率,并行端口就足够了。最大的好处是它是免费的。您只需要一条打印机电缆和 ElmüSoft LogicAnalyzer。
如果您的 PC 没有并行端口,您可以订购 PCI 适配器大约 10 美元。这是拥有数字示波器的最便宜的解决方案。
为什么不使用 USB 适配器?
例如,您可能会想到从 Dimax订购SUB-20设备。这是一款具有 32条通用输入/输出线( GPIO ) 和更多功能的 USB 适配器。
但是如果您需要数字示波器,SUB-20不能代替并行端口。原因是USB 速度极慢。
并口 |
USB 20 |
|
连接电脑 |
内置 |
USB |
价格 |
自由的 |
$80 – $120 |
单次读取操作的速度 |
1.3 微秒 |
1 毫秒 |
最大采样率 |
500.000 个样本/秒 |
1.000 个样本/秒 |
如果使用两条双绞线和至少两条允许硬件握手的状态线,就像在 RS232 和 Centronix 等旧协议中常见的那样,设计更快的 USB 总线会很容易。但这会大大增加电缆和 USB 芯片的成本。在低价比高质量更重要的今天,USB 总线的设计者决定节省这些微小的额外成本,并用较慢的软件替换较快的硬件。
如果您需要用于低频率的模拟或数字输入,或者必须与慢速 I 2 C 总线、SPI 总线、RS232、RS485、ModBus 或 SMBus 通信,而时序并不那么重要,那么 SUB-20 的微控制器可以做到这一点为你。但是您无法使用 SUB-20 或类似的 USB 设备构建有用的数字示波器或与高速串行总线通信。如果您需要,您唯一的选择是PCI 适配器。
并口
我没有用很多费话解释并口的逻辑,而是创建了一个图表。
俗话说:一张图说一千多个字:
注意:在某些计算机 (HP) 上,LPT 端口的针脚 21 未接地。
您必须将其接地,否则 LPT 端口将被禁用,甚至不会出现在控制面板中。
请注意,此图已简化:缺少 D 触发器,它存储处理器写入 IO 端口的数据。
根据硬件…
每当您启动 ElmüSoft LogicAnalyzer 或更改Port ComboBox时,所选端口将立即被初始化,这意味着通过写入高电平释放所有开路集电极晶体管,并且通过设置位 5将数据端口输出驱动器切换到 3-State 模式控制端口高。因此,端口必须工作在扩展控制寄存器(ECR 端口)中设置的“字节模式”。
并行端口通常位于地址 0x378。您可以在控制面板 -> 硬件 -> LPT 端口中查看分配了哪个端口 。
要找出您的硬件的输出类型,首先启动 LogicAnalyser,选择端口组合框,然后测量电压!
如果输出为 HIGH,则将其与 330Ω 电阻接地:
如果输出为低电平,则用一个 10kΩ 电阻将其连接到 +5V。
更改线路电压时,LogicAnalyzer GUI中相应的LED会发生变化(绿色或红色)。根据硬件,输入缓冲器的阈值通常为 0.8V,用于区分 LOW 和 HIGH。
注意
注意不要用跳线直接将任何线路短路到地或+5V,以免损坏!始终使用电阻器进行测试!
注意
建议先试用状态行。在将任何外部信 连接到数据或控制线之前,请分析输出类型。如果不能用 330Ω 电阻接地或 10kΩ 电阻改变电压到 +5V,那么这条线不能用作输入。
注意
在您的 BIOS 中,您应该将并行端口设置为在“ ECP 和 EPP 模式”下运行。ElmüSoft LogicAnalyzer 既不使用 ECP 也不使用 EPP 模式(硬件握手),但通过此 BIOS 设置,扩展控制寄存器(ECR) 变为可用,允许手动配置操作模式。
在“文档”文件夹中,您可以找到 3 个关于在SPP、EPP和ECP模式下对并行端口进行编程的详细 PDF 。
缓冲输入信
在许多情况下,您可以将输入信 直接连接到并行端口。如果信 来自工作于 +5V 的芯片,例如 MAX485,就会出现这种情况。如果您得到奇怪的结果,请将模拟示波器连接到输入线,以查看它们是否干净或是否受到打印机电缆容量的影响。
如果您的输入信 较弱、打印机电缆较长(> 1 米)或工作频率较高,则可能需要缓冲输入信 。这可以通过74HC541轻松完成。
注意
74HC541或74HCT54?1不能用74LS541或74S541 代替!
HC 芯片具有极高的输入阻抗(高速 CMOS 技术),而 LS 芯片(双极晶体管技术)对缓冲敏感输入信 无用。
注意
您必须将 74HC541 的所有未使用输入接地以避免剧烈振荡。
驱动
在Windows 95、98、ME的旧时代,您可以使用命令_inp(Port)和_outp(Port, Value).
在所有NT 平台(NT、2000、XP、Vista、Win7)上,这是被禁止的。尝试读取/写入 IO 端口的程序将退出并出现异常。仅允许驱动程序访问硬件。缺点是通过驱动程序访问硬件比直接使用_inp()and要慢_outp()。为了避免这个缺点,LogicAnalyzer 使用未记录的 API 调用Ke386IoSetAccessProcess(),例如修改进程的I/O 权限位图。设置权限映射可以在 NT 平台上的 EXE 中直接_inp()使用命令。_outp()IOPM 的修改是通过 OpenSource PortTalk内核驱动程序完成的。
在64 位 Windows上,很遗憾无法使用 PortTalk 驱动程序,因为不存在 64 位版本的驱动程序。所以在 64 位 Windows LogicAnalyzer 上使用 OpenSource WinRing0内核驱动程序。虽然它不能修改 IOPM,但它可以通过 IOCTL 驱动程序调用使用DeviceIoControl(). 这速度较慢,但??这是使其在 64 位 Windows 上运行的唯一方法。此外,Microsoft 要求在 64 位 Windows 上,必须对所有驱动程序进行签名。最新版本的 WinRing0 符合此要求。
视窗 95,98,ME |
32位Windows NT,2000,XP,2003,Vista,7,2008 |
64位Windows XP,2003,Vista,7,2008 |
无驱动(快) |
PortTalk(快速) |
WinRing0(较慢) |
有关驱动程序的详细信息,请参见文件夹“文档”!
首次运行 LogicAnalyzer 时,必须以Administrator身份启动。否则无法安装 PortTalk 或 WinRing0 驱动程序。安装后,每个普通用户都可以使用。微小的驱动程序文件作为嵌入式资源编译到 EXE 中并复制到 Windows 驱动程序文件夹中。在 64 位 Windows 上,LogicAnalyzer 关闭系统文件重定向,
Wow64DisableWow64FsRedirection()否则文件将被复制到不会加载驱动程序的Wow64文件夹中。
如果您没有听到 Blip 声音,您可能正在使用 LogicAnalyzer 的 Debug 版本,它保持静音,或者您使用的是Notebook。笔记本电脑从来没有 PC 扬声器。笔记本的内置扬声器连接到声卡。一些笔记本电脑模拟 PC 扬声器,但前提是声卡的驱动程序支持此功能。
最大速度
最大速度显然取决于您的硬件。因为 LogicAnalyzer 是用 C++ 编写的,以尽可能快地运行。
在32 位 Windows上,您可以使用更高的采样率进行捕获,因为 PortTalk 驱动程序允许直接访问 IO 端口。
在64 位 Windows上,访问通过 WinRing0 驱动程序调用。每次进行 IOCTL 调用以访问端口时,处理器必须从环 3 切换到环 0,然后再切换回来。
奇怪的是,即使直接访问端口,_inp()命令执行也很慢。C++_inp()命令直接编译成以下汇编代码:
没有明显的理由说明这应该很慢。但这绝对是:
单个_inp()命令与以下运行 500 次的循环所用的时间相同:
C++
|
C++
|
|
执行时间:1,3μs |
执行时间:1,3μs |
结果是最大捕获速度还取决于您启用了多少端口。对于每个端口(状态、控制、数据),_inp()必须执行一个:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!