当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]Windows 2K平台下多机通信卡

摘要:在工业现场,监控系统经常采用RS-485/423/422通信标准。然而,在Windows2K平台下,复杂的多机通信和大数据量的传输会加重计算机的负担。作者采用自制的多机通信卡解决了这一问题。本文介绍了Windows2K平台下多机通信的基本原理,论述了多机通信卡的设计方法,进一步阐述了驱动程序设计的一般原则。

关键词:RS-485,单片机,多机通信,WDM

1引言

在电力监控系统中,为保证数据通信的可靠性,从机经常采用RS-485标准接口同主机进行通信。通常,主机是一台安装有Windows9X、WinNT或Windows2K等操作系统的计算机。从机为8051单片机系统,8051串行口的输入输出为TTL电平,抗干扰性较差,只能在几米的范围之内传输数据。

为了增强抗干扰性,提高串地通信的可靠性,增加传输距离,必须采用标准串行总线接口。若将串行口的输入输出电平转换成目前流行的RS-485标准串行总线接口,那么主机也必须完成相应的RS-485转换接口。普遍采用的做法是给计算机外接一个RS-485/232转换接口卡,利用现有的RS-232接口完成主机同从机之间的通信。

在单机通信的情况下,这种做法是可以的。但是在多机通信中,实现起来非常麻烦,而且会大量占用计算机CPU的时间。下面介绍Windows平台实现通信的几种基本方式,以及开发多机通信卡的方法和技巧。

2Windows平台下多机通信方式

利用计算机的串行通信适配器,其核心为可编程异步收发器UART8250芯片,8250由10个可寻址寄存器供CPU读/写,实现与外界的数据通信,制动通信协议和提供通信状态信息。这样,可以满足单机通信的要求。

8051单片机的串行通道是一个全双工的串行通信口,既可以实现双机通信,也可以实现多机通信。当串行口工作在方式2或方式3时,若特殊功能寄存器SCON的SM2由软件置为“1”,则为多机方式;若SM2置为“0”,则为9位异步通信方式。

在多机通信时,8051的帧格式是11位,其中第9位是SCON中的TB8,它是多机通信时发送地址(TB8=1)或发送数据(TB8=0)的标志。

计算机的串行通信接口芯片8250并不具有多机通信的功能,也不能产生类似8051的TB8。为了完成多机通信的功能,一般的实现方式是:

计算机给每台8051单片机系统发送9位数据,查询是否有要发送的数据,并等待应答。若有,则接收数据;没有,则继续查询下一台。由此可以看出,这种通信方式速度是很慢的(如果有一台8051长时间没有响应,则耗时更长),而且也并不可靠,从机的台数越多则计算机的资源浪费就会越严重。这种实现方式效率不高,不能满足我们的通信要求。

因此,直接利用计算机串口的方式进行通信是行不通的。为了尽可能减轻CPU的负担,采用自行设计的智能通信卡,利用中断方式的通信(这里指的是从机与通信卡之间的通信方式),来解决这个问题。

3通信卡与多个8051通信的原理

为完成异步串行通信,首先就需要实现异步收发器的功能,其次还要实现多机通信时发送的帧格式。考虑到8051除了实现异步收发的功能外,还可以编制控制程序,使用起来更加灵活、方便,因此,用8051来实现异步收发器。为了提高通信速度,从机与通信卡之间采用中断通信方式。

具体的实现方案如图1所示。

图示的这种硬件结构,使从机解放出来,平时不必处于监听状态。当计算机要求通信时,可以利用多机通信卡的处理器向从机发出中断信号,即通信卡通过3487(TTL电平转换为RS-485电平),从机通过3486(RS-485电平转换为TTL电平)进行从机中断信号联系。从机进入中断服务程序后,则关闭外部中断,保护现场,监听主机发送的地址信号,并对其进行识别,如果与本机地址相符,取消监听,进入通信状态。

通信卡与计算机进行通信是通过数据接口和译码电路实现的。该接口卡利用中断方式与计算机通信,即通信卡向计算机发出中断请求,计算机接收到相应中断请求后,执行数据收发的任务。其中,计算机对通信卡的访问是利用内存映射方式实现的。

4通信卡设计

该通信卡基于ISA总线工业标准。它的设计主要分为三个部分:地址译码电路、数据接口电路和控制逻辑电路。

(1)地址译码电路

由于采用的是端口统一编址的方式(也就是给每一个I/O端口分配一个存储器地址),I/O端口的寻址信号由地址总线通过译码得到。CPU用存储器读写指令对I/O接口进行读写,此时,I/O端口的读写操作控制信号采用存储器读(MEMR)和存储器写(MEMW)信号。而在通信卡上为实现内存映射就必须完成相应的译码转换,也就是将对应的双口RAM地址与分配的地址空间对应起来,实现地址的转换。

实现时,采用动态配置内存映射设备,改变内存映射端口的地址也相对方便,比老式的ISA[1]接口用跳线配置要优越些。该双口RAM为8K,但计算机能够访问的只有4K。其中CTRL线是8KRAM的控制线,通过该线可以实现“乒乓”结构[1]的数据传输。

(2)数据接口电路

数据接口电路实现数据线的驱动功能。尽管很多计算机主板的数据总线都经过驱动,但为了确保可靠性,数据总线不应直接与双口RAM相连接,而是通过数据驱动器件与数据线相连。

(3)控制逻辑电路

控制逻辑电路是与计算机通信的核心部分,该部分主要是实现“乒乓”结构的硬件控制部分。当存储器中的RAM达到HALFREADY(半满状态)时发出中断申请实现数据的传输,同时,将CTRL状态取反,使得计算机访问的是其中的一半,即实现了数据传输的“乒乓”结构。此外,数据的读写控制也通过控制逻辑实现。

89C52实现与从机多机通信,同时将得到的数据存入双口RAM中,控制逻辑协调RAM的数据读写工作。

5设备驱动程序的设计

在Windows9x下的VxD(虚拟设备驱动程序)相比,Windows2K下的WDM(Windows设备驱动模型)驱动程序要复杂一些。

WDM驱动程序是分层的,不同层上的驱动程序有着不同的优先级[2]。此外,WDM还引入了FDO(功能设备对象)与PDO(物理设备对象)两个新类来描述硬件。[!--empirenews.page--]

在开发驱动程序过程中,使用了DriverStudio中的DriverWorks工具用来创建WDM框架。

DriverWorks提供用于访问内存映射地址的类KmemoryRange和KmemoryRegister。实现步骤如下:

(3)在初始化成功后,可以调用类KmemoryRange的成员函数实现对内存映射地址寄存器[2]的访问。

在驱动程序的开发中还涉及到硬件中断的处理。具体地说,首先安装一个中断服务例程(ISR),当相应的中断发生时,内核调用它的中断服务例程。中断服务例程的第一个工作是判断该中断是否由自己的设备产生。如果不是,则返回FALSE,交给其他的中断服务例程;如果是,则处理该中断,并返回TRUE。

同样,DriverWorks提供Kinterrpt和KdefrredCall类处理中断。具体编程如下:

6结束语

由于在接口卡中采用了89C52芯片完成数据收发工作,同时协助主机进行信号的处理,这在很大程度上减轻了主机的负担,加速了I/O操作。在驱动程序的编制上,采用了WDM驱动模型,这样可以很方便地将程序移植到任何支持WDM模型的操作系统中去。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

好用、高效的多合一传感器开发工具,支持给新一代高科技 MEMS 传感器产品开发应用软件

关键字: 传感器 Windows MacOS

双系统将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对双系统的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 双系统 Windows Linux

USB摄像头是一种采用USB接口的视频采集设备,其优点在于即插即用、操作简便,无需额外驱动程序,支持笔记本电脑,并且成本较低,可以支持远程网络观看。

关键字: usb摄像头 驱动程序

今天,小编将在这篇文章中为大家带来Windows 11系统的有关报道,通过阅读这篇文章,大家可以对Windows 11系统具备清晰的认识,主要内容如下。

关键字: Windows 操作系统

在许多应用中,我们需要将多个单片机连接在一起,实现它们之间的数据传输和通信。多机通信是指多个单片机之间通过一定的通信协议和方式进行数据交换的过程。在多机通信中,每个单片机都有其独立的地址,可以根据需要与其它单片机进行数据...

关键字: 单片机 多机通信

在多机通信过程中,主机先发送某一从机的地址,等待从机的应答,所有的从机接收到地址帧后与本机地址进行比较,若相同,则将SM2置0准备接收数据;若不同,则丢弃当前数据,SM2位不变。

关键字: 单片机 多机通信 通信

与两相双极步进电机的驱动电路相比,两相单极步进电机的驱动电路在输入段配置、内部逻辑及控制电路和驱动电路使用双通道方面基本相同,但是输出段的配置不同。

关键字: 四相步进电机 驱动程序 程序电路

本文介绍了如何实现嵌入式MICREL网卡的驱动程序开发和设计。首先,我们介绍了MICREL网卡的概述和工作原理。然后,详细探讨了驱动程序的开发流程,包括硬件和软件的配置以及驱动程序的编写和测试。最后,总结了几点注意事项和...

关键字: 嵌入式 MICREL网卡 驱动程序

(全球TMT2023年9月8日讯)亚马逊云科技日前在一年一度的存储服务创新日上宣布推出诸多亚马逊云科技存储服务的新功能,其中重点包括为支持人工智能/机器学习、大数据分析等数据密集型工作负载进一步提升Amazon Ela...

关键字: 亚马逊 FOR IC Windows

此芯科技自去年加入Linaro Windows on Arm工作组之后,发起成立了Client PC合作项目,旨在推动基于UEFI + ACPI标准的Arm PC启动架构标准化,通过统一的系统固件支持Windows和Li...

关键字: Arm PC生态 Windows Linux操作系统
关闭
关闭