利用gpio模拟低速并行接口的方法

文档序号:6428378阅读:363来源:国知局
专利名称:利用gpio模拟低速并行接口的方法
技术领域
本发明涉及税控领域,具体而言,涉及一种利用GPIO模拟低速并行接口的方法。
背景技术
现有税控专用硬件设备,因为产品延续的原因,其核心单元只具有低速的并行接口,该低速的并行接口通过一个并口转PCI (Peripheral Component Interconnect)接口的转换芯片转接出一个PCI从接口,转接出的PCI从接口作为税控设备整体的对外通信接口,在使用时税控设备安装在微型计算机的PCI扩展插槽上。
随着计算机总线技术的发展,微型计算机的扩张插槽将由PCI e (PeripheralComponent Interconnect Express)来取代PCI,所以税控设备的PCI从接口也需要升级为PCI e的从接口,才能适应新的计算机总线。一般来说,更换接口转换芯片,使用新的接口转换芯片将核心单元的低速并行接口转换为PCI e的从接口,即能满足这样的升级需求,但市场中无法找到具有此功能的转换芯片,只能找到由PCI e的从接口转换出的若干GPIO(General Purpose Input Output,通用输入/输出)这样的转换芯片,该芯片内部提供多个控制寄存器,实现对GPIO的控制。为了满足税控专用硬件设备的升级要求,本方案的研发人员决定使用现有的这款转换芯片来实现PCI e的从接口到低速并行接口的转换。相关背景技术I :PCI e的从接口转若干GPIO的转换芯片的特点是接口转换芯片内部具有GPIO数据寄存器、输入输出控制寄存器和高阻寄存器,GPIO数据寄存器为32位寄存器,寄存器中的每I位与一个GPIO引脚对应,当设置引脚为输入状态时,如果某一 GPIO引脚的电平为高电平时,该位值为1,当电平为低电平时,该位值为O。反之,当设置为输出状态时,数据寄存器的值则决定了 GPIO引脚的电平高低状态。输入输出控制寄存器为32位,寄存器中的每I位对应一个GPIO引脚,用来控制GPIO引脚处于输入或是输出状态,某一位值为I,表不该位对应的GPIO引脚为输入状态,值为O,表不该位对应的GPIO引脚为输出状态。高阻寄存器也是32位,一位对应一个GPIO引脚,当某一位为I时,对应的GPIO引脚为高阻状态,为O时为输入或输出状态,由输入输出控制寄存器决定。相关背景技术2 PCI e的从接口设备在安装到计算机上以后,如果要正常使用,还需要配套一个驱动程序,驱动程序安装在计算机上控制计算机的PCI e的主接口,每次通信由主接口发起,从接口响应,表现为一问一答的通信特点,从接口设备为被动式地等待主接口的命令。

发明内容
本发明提供一种利用GPIO模拟低速并行接口的方法,用以将PCI e的从接口转为低速并行接口,使得税控专用硬件设备能够满足计算机总线升级的要求。
为达到上述目的,本发明提供了一种利用GPIO模拟低速并行接口的方法,其包括以下步骤将接口转换芯片的GPIO引脚分为数据引脚和控制引脚,将数据引脚定义为低速并行接口的数据总线,将控制引脚定义为低速并行接口的控制总线;通过PCI e从接口的驱动程序中的GPIO控制模块对接口转换芯片内部的GPIO数据寄存器和输入输出控制寄存器进行控制,使得数据总线和控制总线处于一种低速并行接口的工作运行状态。较佳的,数据引脚定义为8的倍数。较佳的,控制总线包括4个控制信号引脚,分别为自身缓存状态输出引脚、对方读信号输入引脚、对方缓存状态输入引脚、自身读信号输出引脚。较佳的,通过PCI e从接口的驱动程序中的GPIO控制模块对接口转换芯片内部的GPIO数据寄存器和输入输出控制寄存器进行控制,使得数据总线和控制总线处于低速并行接口的工作运行状态步骤包括在上电复位后,对PCI e从接口的驱动程序中的GPIO控制模块进行初始化操作;当应用程序有数据要发送给PCI e的从接口设备时,应用程序将要发送的数据传递驱动程序,驱动程序再把要发送的数据传递给GPIO控制模块,GPIO控制模块控制接口转换芯片的控制总线和数据总线将要发送的数据传递给从接口设备;GPIO控制模块控制接口转换芯片的控制总线和数据总线接收从接口设备返回的数据。较佳的,在上电复位后,对PCI e从接口的驱动程序中的GPIO控制模块进行初始化操作步骤包括将高阻寄存器中定义为数据总线的GPIO引脚置为高阻状态;将自身缓存状态输出引脚设置为输出状态,引脚电平设置为低,表示自身缓存为空;将对方读信号输入引脚和对方缓存状态输入引脚设置为输入状态;将自身读信号输出引脚设置为输出状态,电平设置为低,表示没有发起读操作。较佳的,GPIO控制模块控制接口转换芯片的控制总线和数据总线将要发送的数据传递给从接口设备步骤包括将数据的一个字节或者两个字节写入数据总线对应的数据寄存器,将数据寄存器中的对应数据位设置为输出,将高阻寄存器中的对应数据位设置为0,表示撤销高阻状态;将自身缓存状态引脚电平设置为高,表示有数据要发送;GPIO控制模块循环读取数据寄存器中对方读信号输入引脚对应数据位的值,当发现该数据位由O变为I又变回O时,表示对方完成了本次数据的读取;GPIO控制模块将自身缓存状态引脚设置为低,表示无数据发送,将高阻寄存器数据总线对应数据位置为1,表示将数据总线置为高阻状态;当要发送的数据为多个字节时,重复上述过程,直到全部数据发送完毕。较佳的,GPIO控制模块控制接口转换芯片的控制总线和数据总线接收从接口设备返回的数据步骤包括GPIO控制模块循环读取数据寄存器中对方缓存状态输入引脚对应数据位的值,当该位值为I时,表示对方有数据返回;将输入输出控制寄存器中数据总线对应数据位设置为输入,将高阻寄存器中数据总线对应数据位设置为非高阻状态;将数据寄存器中自身读信号输出引脚对应数据位写为1,表示发起读操作,将数据寄存器中数据总线对应数据位中的数据读出,写入驱动程序的接收数据的变量中;将数据寄存器中自身读信号输出引脚对应数据位置为0,表示完成读操作;将高阻寄存器中数据总线对应数据位设置为高阻;当要接收的数据为多个字节时,重复上述过程,直到全部数据接收完毕。在上述实施例中,通过将PCI e的从接口转为低速并行接口,使得税控专用硬件设备能够满足计算机总线升级的要求。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明一实施例的利用GPIO模拟低速并行接口的方法流程图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明的实施例中,选择PCI e桥芯片XR17V352IB113-F进行设计,该芯片具有PCI e 从接口,具有 16 个 GPI0,分别为 GPIO [O]到 GPIO [15],将 GPIO [O]到 GPIO [3]定义为控制信号引脚,分别为GPI0
定义为自身缓存状态输出引脚,GPI0[1]定义为对方读信号输入引脚,GPI0[2]定义为对方缓存状态输入引脚,GPI0[3]定义为自身读信号输出引脚。将GPI0[8] IlJ GPIO[15]定义为8位数据总线,GPI0[4]到GPI0[7]空闲不用。根据芯片手册,桥芯片XR17V352IB113-F中内置的与本方案有关的寄存器特点如下ΜΡΙ0ΙΝΤ [15:0]:中断输入开关寄存器,一位对应一个GPI0,某一位值为O表示关闭该位中断,值为I表示开启该位中断。MPI0SEL[15:0]:输入输出控制寄存器,一位对应一个GPI0,某一位值为I表示输入,值为O表不输出。MPI03T[15:0]:三态控制寄存器,一位对应一个GPI0,某一位值为0表示依据ΜΡΙ0ΒΙΤ寄存器的值决定输出状态,值为I表示设置输出引脚为三态断开状态。MPI0LVL[15:0]:电平控制寄存器,也称为数据寄存器,一位对应一个GPI0,控制引脚的输出电平状态,或者是提供引脚的输入电平状态。图I为本发明一实施例的利用GPIO模拟低速并行接口的方法流程图。如图I所示,该方法包括以下步骤S102,将接口转换芯片的GPIO引脚分为数据引脚和控制引脚,将数据引脚定义为低速并行接口的数据总线,将控制引脚定义为低速并行接口的控制总线;S104,通过PCI e从接口的驱动程序中的GPIO控制模块对接口转换芯片内部的GPIO数据寄存器和输入输出控制寄存器进行控制,使得数据总线和控制总线处于低速并行接口的工作运行状态。例如,数据引脚定义为8的倍数,如可以为8位或16位。例如,控制总线包括4个控制信号引脚,分别为自身缓存状态输出引脚、对方读信号输入引脚、对方缓存状态输入引脚、自身读信号输出引脚。例如,通过PCI e从接口的驱动程序中的GPIO控制模块对接口转换芯片内部的 GPIO数据寄存器和输入输出控制寄存器进行控制,使得数据总线和控制总线处于一种低速并行接口的工作运行状态步骤包括在上电复位后,对PCI e从接口的驱动程序中的GPIO控制模块进行初始化操作;当应用程序有数据要发送给PCI e的从接口设备时,应用程序将要发送的数据传递驱动程序,驱动程序再把要发送的数据传递给GPIO控制模块,GPIO控制模块控制接口转换芯片的控制总线和数据总线将要发送的数据传递给从接口设备;GPIO控制模块控制接口转换芯片的控制总线和数据总线接收从接口设备返回的数据。例如,在上电复位后,对PCI e从接口的驱动程序中的GPIO控制模块进行初始化操作步骤包括将高阻寄存器中定义为数据总线的GPIO引脚都置为1,表示将这些引脚置为高阻状态;将自身缓存状态输出引脚设置为输出状态,引脚电平设置为低,表示自身缓存为空;将对方读信号输入引脚和对方缓存状态输入引脚设置为输入状态;将自身读信号输出引脚设置为输出状态,电平设置为低,表示没有发起读操作。例如,GPIO控制模块控制接口转换芯片的控制总线和数据总线将要发送的数据传递给从接口设备步骤包括将数据的一个字节(8位)或者两个字节(16位)写入数据总线对应的数据寄存器,将数据寄存器中的对应数据位设置为输出,将高阻寄存器中的对应数据位设置为0,表示撤销高阻状态;将自身缓存状态引脚电平设置为高,表示有数据要发送;GPIO控制模块循环读取数据寄存器中对方读信号输入引脚对应数据位的值,当发现该数据位由O变为I又变回O时,表示对方完成了本次数据的读取;GPIO控制模块将自身缓存状态引脚设置为低,表示无数据发送,将高阻寄存器数据总线对应数据位置为1,表示将数据总线置为高阻状态;当要发送的数据为多个字节时,重复上述过程,直到全部数据发送完毕。例如,GPIO控制模块控制接口转换芯片的控制总线和数据总线接收从接口设备返回的数据步骤包括
GPIO控制模块循环读取数据寄存器中对方缓存状态输入引脚对应数据位的值,当该数据位值为I时,表示对方有数据返回;将输入输出控制寄存器中数据总线对应数据位设置为输入,将高阻寄存器中数据总线对应数据位设置为非高阻状态;将数据寄存器中自身读信号输出引脚对应数据位写为1,表示发起读操作,将数据寄存器中数据总线对应数据位中的数据读出,写入驱动程序的接收数据的变量中;将数据寄存器中自身读信号输出引脚对应数据位置为0,表示完成读操作;将高阻寄存器中数据总线对应数据位设置为高阻;当要接收的数据为多个字节时,重复上述过程,直到全部数据接收完毕。需要说明的是,上述实施例中,关于控制信号的高低电平定义是为了说明控制区 另IJ,当电平反过来定义,也能达到同样的效果。本领域普通技术人员可以理解附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域普通技术人员可以理解实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
权利要求
1.一种利用GPIO模拟低速并行接口的方法,其特征在于,包括以下步骤 将接口转换芯片的GPIO引脚分为数据引脚和控制引脚,将所述数据引脚定义为低速并行接口的数据总线,将所述控制引脚定义为低速并行接口的控制总线; 通过PCI e从接口的驱动程序中的GPIO控制模块对接口转换芯片内部的GPIO数据寄存器和输入输出控制寄存器进行控制,使得所述数据总线和所述控制总线处于低速并行接口的工作运行状态。
2.根据权利要求I所述的方法,其特征在于,所述数据引脚定义为8的倍数。
3.根据权利要求I所述的方法,其特征在于,所述控制总线包括4个控制信号引脚,分别为自身缓存状态输出引脚、对方读信号输入引脚、对方缓存状态输入引脚、自身读信号输出引脚。
4.根据权利要求3所述的方法,其特征在于,通过PCIe从接口的驱动程序中的GPIO控制模块对接口转换芯片内部的GPIO数据寄存器和输入输出控制寄存器进行控制,使得所述数据总线和所述控制总线处于一种低速并行接口的工作运行状态步骤包括 在上电复位后,对PCI e从接口的驱动程序中的GPIO控制模块进行初始化操作;当应用程序有数据要发送给PCI e的从接口设备时,应用程序将要发送的数据传递所述驱动程序,所述驱动程序再把要发送的数据传递给所述GPIO控制模块,所述GPIO控制模块控制所述接口转换芯片的控制总线和数据总线将要发送的数据传递给从接口设备; GPIO控制模块控制所述接口转换芯片的控制总线和数据总线接收所述从接口设备返回的数据。
5.根据权利要求4所述的方法,其特征在于,在上电复位后,对PCIe从接口的驱动程序中的GPIO控制模块进行初始化操作步骤包括 将高阻寄存器中定义为数据总线的GPIO引脚置为高阻状态; 将自身缓存状态输出引脚设置为输出状态,引脚电平设置为低,表示自身缓存为空; 将对方读信号输入引脚和对方缓存状态输入引脚设置为输入状态; 将自身读信号输出引脚设置为输出状态,电平设置为低,表示没有发起读操作。
6.根据权利要求4所述的方法,其特征在于,所述GPIO控制模块控制所述接口转换芯片的控制总线和数据总线将要发送的数据传递给从接口设备步骤包括 将数据的一个字节或者两个字节写入所述数据总线对应的数据寄存器,将所述数据寄存器中的对应数据位设置为输出,将高阻寄存器中的对应数据位设置为0,表示撤销高阻状态; 将自身缓存状态引脚电平设置为高,表示有数据要发送; 所述GPIO控制模块循环读取所述数据寄存器中对方读信号输入引脚对应数据位的值,当发现该数据位由O变为I又变回O时,表示对方完成了本次数据的读取; 所述GPIO控制模块将自身缓存状态引脚设置为低,表示无数据发送,将高阻寄存器数据总线对应数据位置为1,表示将所述数据总线置为高阻状态; 当要发送的数据为多个字节时,重复上述过程,直到全部数据发送完毕。
7.根据权利要求4所述的方法,其特征在于,GPIO控制模块控制所述接口转换芯片的控制总线和数据总线接收所述从接口设备返回的数据步骤包括 GPIO控制模块循环读取数据寄存器中对方缓存状态输入引脚对应数据位的值,当该位值为I时,表示对方有数据返回; 将输入输出控制寄存器中数据总线对应数据位设置为输入,将高阻寄存器中数据总线对应数据位设置为非高阻状态; 将数据寄存器中自身读信号输出引脚对应数据位写为1,表示发起读操作,将数据寄存器中数据总线对应数据位中的数据读出,写入驱动程序的接收数据的变量中; 将数据寄存器中自身读信号输出引脚对应数据位置为O,表示完成读操作; 将高阻寄存器中数据总线对应数据位设置为高阻; 当要接收的数据为多个字节时,重复上述过程,直到全部数据接收完毕。
全文摘要
本发明公开了一种利用GPIO模拟低速并行接口的方法,其包括以下步骤将接口转换芯片的GPIO引脚分为数据引脚和控制引脚,将数据引脚定义为低速并行接口的数据总线,将控制引脚定义为低速并行接口的控制总线;通过PCI e从接口的驱动程序中的GPIO控制模块对接口转换芯片内部的GPIO数据寄存器和输入输出控制寄存器进行控制,使得数据总线和控制总线处于一种低速并行接口的工作运行状态。
文档编号G06F13/38GK102880574SQ20111019333
公开日2013年1月16日 申请日期2011年7月11日 优先权日2011年7月11日
发明者甘景全, 崔志民, 宋晓林, 贺毅, 王招凯, 洪岩 申请人:航天信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1