基于windows平台的GPIO模拟串行接口的方法和装置与流程

文档序号:12123733阅读:2257来源:国知局
基于windows平台的GPIO模拟串行接口的方法和装置与流程

本发明涉及计算机通过软件模拟硬件接口技术领域,尤其涉及基于windows平台的GPIO模拟串行接口的方法和装置。



背景技术:

GPIO是General Purpose Input Output(通用输入/输出)的简称,或称总线扩展器。串行接口是采用串行通信方式的扩展接口,常见的有I2C、SPI、UART接口、单总线接口等。其中,I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,串行总线接口广泛应用于连接微控制器及其外围设备。SPI(Serial Peripheral Interface)为串行外设接口,UART(Universal Asynchronous Receiver/Transmitter)为通用异步收发传输器。

GPIO是嵌入式系统中常见的一种通用输入输出接口,具有灵活和易于操作的特点,通常用作一些逻辑较为简单的设备的控制口,或者成组地被用于模拟某些简单的总线,实现对系统的扩展。嵌入式平台,如51单片机,Arm linux系统,经常使用GPIO来模拟简单的串行接口,如I2C,SPI等。

其中,51单片机上,可以通过访问端口或内存,直接访问到GPIO口。

Arm linux上,linux提供控制GPIO的驱动程序,可以方便的访问GPIO端口。

Windows(视窗)是美国微软公司研发的一套操作系统,windows系统在个人电脑(PC,personal computer)领域占用相当大的比重。由于该系统主要是面对普通个人用户,个人用户不会有访问GPIO硬件资源的需求,所以没有提供直接访问GPIO口的驱动程序供用户使用。在windows系统下,普通PC如果需要支持串行接口设备,普遍采用的方式是外接串行接口转换芯片(如USB转串行芯片,UART转串行芯片等)来实现,这需要增加硬件成本。



技术实现要素:

为此,需要提供基于windows平台的GPIO模拟串行接口的方案,解决windows平台下扩展串行接口成本高的问题。

为实现上述目的,发明人提供了基于windows平台的GPIO模拟串行接口的方法,包括如下步骤:

获取串行接口指令;

根据串行接口协议获取串行接口指令对应的电平时序;

根据电平时序调用windows内核驱动函数访问GPIO端口。

进一步地,所述获取串行接口指令步骤具体为:获取DeviceIOControl函数发送的IO控制码。

进一步地,“获取串行接口指令”后还包括步骤:

根据串行接口指令配置GPIO端口为输入或输出状态、及输入或输出电平的高低状态。

进一步地,所述根据电平时序调用windows内核驱动函数访问GPIO端口包括调用windows DDK提供的端口操作函数。

进一步地,所述根据电平时序调用windows内核驱动函数访问GPIO端口步骤还包括:获取PC南桥芯片的LPC控制器的虚拟内存地址访问GPIO端口对应的寄存器。

进一步地,所述串行接口包括下列中的一种:I2C接口、SPI接口、UART接口或单总线接口。

本发明还提供基于windows平台的GPIO模拟串行接口的装置,包括如下模块:

串行接口指令获取模块:用于获取串行接口指令;

电平时序获取模块:用于根据串行接口协议获取串行接口指令对应的电平时序;

GPIO端口访问模块:用于根据电平时序调用windows内核驱动函数访问GPIO端口。

进一步地,串行接口指令获取模块还用于获取DeviceIOControl函数发送IO控制码。

进一步地,还包括GPIO端口配置模块:用于根据串行接口指令配置GPIO端口为输入或输出状态、及输入或输出电平的高低状态。

进一步地,GPIO端口访问模块还用于调用windows DDK提供的端口操作函数。

进一步地,GPIO端口访问模块还用于获取PC南桥芯片的LPC控制器的虚拟内存地址访问GPIO端口对应的寄存器。

进一步地,所述串行接口包括下列中的一种:I2C接口、SPI接口、UART接口或单总线接口。

区别于现有技术,上述技术方案通过将串行接口指令转换为GPIO的电平时序并在windows内核上实现对GPIO端口的访问,从而实现了在windows平台下GPIO端口模拟串行接口,实现了对串行接口设备的控制,而不需要使用外置的芯片来实现对串行接口设备的控制,节省了芯片的成本。通过软件模拟还可以实现对多种串行接口的模拟,在需要多种串行接口的时候,无需多种外置芯片,大大节省了硬件成本。

通过本发明的方法,可方便地将GPIO端口扩展成需要的串行接口,从而实现与各种串行接口设备的通讯。

附图说明

图1为本发明方法实施例的流程图;

图2为本发明装置实施例的结构示意图。

附图标记说明:

200、模拟串行接口的装置,

201、串行接口指令获取模块,

203、电平时序获取模块,

204、GPIO端口配置模块,

205、GPIO端口访问模块。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

请参阅图1到图2,本实施例提供基于windows平台的GPIO模拟串行接口的方法,本发明的方法可以应用于装有windows系统的设备上,如x86架构的PC上,这些设备具有GPIO端口,GPIO端口与串行接口设备的串行接口连接在一起。在本发明的实施例中,串行接口可以包括下列中的一种:I2C接口、SPI接口、UART接口或单总线接口。本实施例包括如下步骤:步骤S101获取串行接口指令,这里的串行接口指令可以由应用软件发出的,可以为应用软件与串行接口设备进行通信的指令。而后进入步骤S102根据串行接口协议获取串行接口指令对应的电平时序。串行接口协议即电平时序与串行接口指令的对应关系,不同的串行接口指令具有不同的电平时序。这些时序都要根据串行接口的标准协议来实现的。获取到电平时序后,进入步骤S103根据电平时序调用windows内核驱动函数访问GPIO端口。

对于GPIO端口的访问,在DOS操作系统下,C语言提供了操作I/O端口的函数。这些函数会调用IN和OUT汇编指令来访问I/O端口。由于windows操作系统的权限控制,应用层无法直接访问I/O端口。所以需要实现一个windows内核驱动函数,来实现内核层I/O端口的接口访问。在内核驱动函数中,实现了驱动的IO控制函数。即在步骤S103中调用windows内核驱动函数来访问GPIO端口,由于步骤S103中是根据电平时序来访问GPIO端口,则GPIO就会产生相应的串行接口电平时序,这个电平变化与串行接口协议的电平变化一致,则外围的串行接口设备就会接收到串行接口电平时序,从而获取到对应的串行接口指令。这样就完成了PC设备通过GPIO端口发送串行接口指令到串行接口设备,实现了PC设备与串行接口设备的交互。而不需要外置的芯片进行转换,节省了芯片的支出成本。通过软件模拟,也可以方便地实现对多种串行接口的模拟,这样在需要切换串行接口时,无需对硬件进行改变,节省了时间成本和硬件的支出成本。

在对GPIO端口进行访问的时候,还需要对GPIO端口进行配置,则本申请在“获取串行接口指令”后还包括步骤:根据串行接口指令配置GPIO端口,这里的配置包括配置指定GPIO端口的的传输方向是输入还是输出状态、及输入或输出电平的高低状态。具体配置方法:根据需要模拟的串行接口的类型,如I2C、SPI,配置对应GPIO端口的是输入状态还是输出状态。如果是配置成输出状态,还根据需要模拟的串行接口的类型,如I2C、SPI,配置对应GPIO端口的输出电平的高低状态。在本申请中,对于GPIO的访问包括对GPIO端口的读取和输出,其中,GPIO端口的读取包括读取指定GPIO端口的电平高低状态;GPIO端口的输出包括配置指定GPIO端口的电平高低状态。通过对GPIO端口进行配置,方便了接下来对GPIO端口的操作。

具体地,所述根据电平时序调用windows内核驱动函数访问GPIO端口包括调用windows DDK提供的端口操作函数。主要调用如下DDK函数:

DDK提供的函数可以方便地实现对GPIO端口的访问,降低了GPIO端口访问的复杂程度。

进一步地,获取串行接口指令步骤包括获取DeviceIOControl(设备接口控制)函数发送IO控制码。应用软件通过调用DeviceIOControl发送IO控制码,调用内核函数中的IO控制函数,从而间接实现应用层I/O端口访问。

进一步地,所述根据电平时序调用windows内核驱动函数访问GPIO端口还步骤包括:获取PC南桥芯片的LPC(Low Pin Count)控制器的虚拟内存地址访问GPIO端口对应的寄存器。应用软件通过I/O端口访问,获取PC南桥芯片的LPC控制器的虚拟内存基地址。由于GPIO端口的虚拟地址也在LPC控制器的虚拟内存基地址范围之内,因此能够利用LPC控制器的虚拟地址访问GPIO端口对应的寄存器,从而实现对GPIO端口的访问。

本发明还提供基于windows平台的GPIO模拟串行接口的装置200,如图2所示,包括如下模块:串行接口指令获取模块201:用于获取串行接口指令;电平时序获取模块203:用于根据串行接口协议获取串行接口指令对应的电平时序;GPIO端口访问模块205:用于根据电平时序调用windows内核驱动函数访问GPIO端口。其中,在本发明的实施例中,串行接口可以包括下列中的一种:I2C接口、SPI接口、UART接口或单总线接口。本装置通过GPIO端口实现串行接口的功能,节省了转换芯片的支出成本,还可以方便地实现对多种串行接口的模拟,这样在需要切换串行接口时,无需对硬件进行改变,节省了时间成本和硬件的支出成本。

在对GPIO端口进行访问的时候,还需要对端口进行配置,则本装置还包括GPIO端口配置模块204:用于根据串行接口指令配置GPIO端口为输入或输出状态、及输入或输出电平的高低状态。通过对GPIO端口进行配置,方便了接下来对GPIO端口的操作。

对于GPIO的访问可以通过DDK内的端口操作函数来实现,则GPIO端口访问模块还用于调用windows DDK提供的端口操作函数。使用DDK函数可以降低了GPIO端口访问的复杂程度。

在某些实施例中,串行接口指令获取模块还用于获取DeviceIOControl函数发送IO控制码,从而应用层间接地实现了对GPIO端口的访问。

在某些实施例中,GPIO端口访问模块还用于获取PC南桥芯片的LPC控制器的虚拟内存地址访问GPIO端口对应的寄存器,从而实现windows平台下对GPIO端口的访问。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。

本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。

上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1