CN102880574B - 利用gpio模拟低速并行接口的方法 - Google Patents

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

Info

Publication number
CN102880574B
CN102880574B CN201110193331.8A CN201110193331A CN102880574B CN 102880574 B CN102880574 B CN 102880574B CN 201110193331 A CN201110193331 A CN 201110193331A CN 102880574 B CN102880574 B CN 102880574B
Authority
CN
China
Prior art keywords
data
gpio
pin
register
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110193331.8A
Other languages
English (en)
Other versions
CN102880574A (zh
Inventor
甘景全
崔志民
宋晓林
贺毅
王招凯
洪岩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aisino Corp
Original Assignee
Aisino Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Aisino Corp filed Critical Aisino Corp
Priority to CN201110193331.8A priority Critical patent/CN102880574B/zh
Publication of CN102880574A publication Critical patent/CN102880574A/zh
Application granted granted Critical
Publication of CN102880574B publication Critical patent/CN102880574B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Bus Control (AREA)

Abstract

本发明公开了一种利用GPIO模拟低速并行接口的方法,其包括以下步骤:将接口转换芯片的GPIO引脚分为数据引脚和控制引脚,将数据引脚定义为低速并行接口的数据总线,将控制引脚定义为低速并行接口的控制总线;通过PCI e从接口的驱动程序中的GPIO控制模块对接口转换芯片内部的GPIO数据寄存器和输入输出控制寄存器进行控制,使得数据总线和控制总线处于一种低速并行接口的工作运行状态。

Description

利用GPIO模拟低速并行接口的方法
技术领域
本发明涉及税控领域,具体而言,涉及一种利用GPIO模拟低速并行接口的方法。
背景技术
现有税控专用硬件设备,因为产品延续的原因,其核心单元只具有低速的并行接口,该低速的并行接口通过一个并口转PCI(Peripheral ComponentInterconnect)接口的转换芯片转接出一个PCI从接口,转接出的PCI从接口作为税控设备整体的对外通信接口,在使用时税控设备安装在微型计算机的PCI扩展插槽上。
随着计算机总线技术的发展,微型计算机的扩张插槽将由PCI e(Peripheral Component Interconnect Express)来取代PCI,所以税控设备的PCI从接口也需要升级为PCI e的从接口,才能适应新的计算机总线。
一般来说,更换接口转换芯片,使用新的接口转换芯片将核心单元的低速并行接口转换为PCI e的从接口,即能满足这样的升级需求,但市场中无法找到具有此功能的转换芯片,只能找到由PCI e的从接口转换出的若干GPIO(General Purpose Input Output,通用输入/输出)这样的转换芯片,该芯片内部提供多个控制寄存器,实现对GPIO的控制。
为了满足税控专用硬件设备的升级要求,本方案的研发人员决定使用现有的这款转换芯片来实现PCI e的从接口到低速并行接口的转换。
相关背景技术1:
PCI e的从接口转若干GPIO的转换芯片的特点是:
接口转换芯片内部具有GPIO数据寄存器、输入输出控制寄存器和高阻寄存器,GPIO数据寄存器为32位寄存器,寄存器中的每1位与一个GPIO引脚对应,当设置引脚为输入状态时,如果某一GPIO引脚的电平为高电平时,该位值为1,当电平为低电平时,该位值为0。反之,当设置为输出状态时,数据寄存器的值则决定了GPIO引脚的电平高低状态。输入输出控制寄存器为32位,寄存器中的每1位对应一个GPIO引脚,用来控制GPIO引脚处于输入或是输出状态,某一位值为1,表示该位对应的GPIO引脚为输入状态,值为0,表示该位对应的GPIO引脚为输出状态。高阻寄存器也是32位,一位对应一个GPIO引脚,当某一位为1时,对应的GPIO引脚为高阻状态,为0时为输入或输出状态,由输入输出控制寄存器决定。
相关背景技术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控制模块循环读取数据寄存器中对方读信号输入引脚对应数据位的值,当发现该数据位由0变为1又变回0时,表示对方完成了本次数据的读取;
GPIO控制模块将自身缓存状态引脚设置为低,表示无数据发送,将高阻寄存器数据总线对应数据位置为1,表示将数据总线置为高阻状态;
当要发送的数据为多个字节时,重复上述过程,直到全部数据发送完毕。
较佳的,GPIO控制模块控制接口转换芯片的控制总线和数据总线接收从接口设备返回的数据步骤包括:
GPIO控制模块循环读取数据寄存器中对方缓存状态输入引脚对应数据位的值,当该位值为1时,表示对方有数据返回;
将输入输出控制寄存器中数据总线对应数据位设置为输入,将高阻寄存器中数据总线对应数据位设置为非高阻状态;
将数据寄存器中自身读信号输出引脚对应数据位写为1,表示发起读操作,将数据寄存器中数据总线对应数据位中的数据读出,写入驱动程序的接收数据的变量中;
将数据寄存器中自身读信号输出引脚对应数据位置为0,表示完成读操作;
将高阻寄存器中数据总线对应数据位设置为高阻;
当要接收的数据为多个字节时,重复上述过程,直到全部数据接收完毕。
在上述实施例中,通过将PCI e的从接口转为低速并行接口,使得税控专用硬件设备能够满足计算机总线升级的要求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例的利用GPIO模拟低速并行接口的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的实施例中,选择PCI e桥芯片XR17V352IB113-F进行设计,该芯片具有PCI e从接口,具有16个GPIO,分别为GPIO[0]到GPIO[15],将GPIO[0]到GPIO[3]定义为控制信号引脚,分别为:GPIO[0]定义为自身缓存状态输出引脚,GPIO[1]定义为对方读信号输入引脚,GPIO[2]定义为对方缓存状态输入引脚,GPIO[3]定义为自身读信号输出引脚。将GPIO[8]到GPIO[15]定义为8位数据总线,GPIO[4]到GPIO[7]空闲不用。
根据芯片手册,桥芯片XR17V352IB113-F中内置的与本方案有关的寄存器特点如下:
MPIOINT[15:0]:中断输入开关寄存器,一位对应一个GPIO,某一位值为0表示关闭该位中断,值为1表示开启该位中断。
MPIOSEL[15:0]:输入输出控制寄存器,一位对应一个GPIO,某一位值为1表示输入,值为0表示输出。
MPIO3T[15:0]:三态控制寄存器,一位对应一个GPIO,某一位值为0表示依据MPIOBIT寄存器的值决定输出状态,值为1表示设置输出引脚为三态断开状态。
MPIOLVL[15:0]:电平控制寄存器,也称为数据寄存器,一位对应一个GPIO,控制引脚的输出电平状态,或者是提供引脚的输入电平状态。
图1为本发明一实施例的利用GPIO模拟低速并行接口的方法流程图。如图1所示,该方法包括以下步骤:
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控制模块循环读取数据寄存器中对方读信号输入引脚对应数据位的值,当发现该数据位由0变为1又变回0时,表示对方完成了本次数据的读取;
GPIO控制模块将自身缓存状态引脚设置为低,表示无数据发送,将高阻寄存器数据总线对应数据位置为1,表示将数据总线置为高阻状态;
当要发送的数据为多个字节时,重复上述过程,直到全部数据发送完毕。
例如,GPIO控制模块控制接口转换芯片的控制总线和数据总线接收从接口设备返回的数据步骤包括:
GPIO控制模块循环读取数据寄存器中对方缓存状态输入引脚对应数据位的值,当该数据位值为1时,表示对方有数据返回;
将输入输出控制寄存器中数据总线对应数据位设置为输入,将高阻寄存器中数据总线对应数据位设置为非高阻状态;
将数据寄存器中自身读信号输出引脚对应数据位写为1,表示发起读操作,将数据寄存器中数据总线对应数据位中的数据读出,写入驱动程序的接收数据的变量中;
将数据寄存器中自身读信号输出引脚对应数据位置为0,表示完成读操作;
将高阻寄存器中数据总线对应数据位设置为高阻;
当要接收的数据为多个字节时,重复上述过程,直到全部数据接收完毕。
需要说明的是,上述实施例中,关于控制信号的高低电平定义是为了说明控制区别,当电平反过来定义,也能达到同样的效果。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

Claims (4)

1.一种利用GPIO模拟低速并行接口的方法,其特征在于,包括以下步骤:
将接口转换芯片的GPIO引脚分为数据引脚和控制引脚,将所述数据引脚定义为低速并行接口的数据总线,将所述控制引脚定义为低速并行接口的控制总线;
通过PCI e从接口的驱动程序中的GPIO控制模块对接口转换芯片内部的GPIO数据寄存器和输入输出控制寄存器进行控制,使得所述数据总线和所述控制总线处于低速并行接口的工作运行状态;
其中,所述控制总线包括4个控制信号引脚,分别为自身缓存状态输出引脚、对方读信号输入引脚、对方缓存状态输入引脚、自身读信号输出引脚;
通过PCI e从接口的驱动程序中的GPIO控制模块对接口转换芯片内部的GPIO数据寄存器和输入输出控制寄存器进行控制,使得所述数据总线和所述控制总线处于一种低速并行接口的工作运行状态步骤包括:
在上电复位后,对PCI e从接口的驱动程序中的GPIO控制模块进行初始化操作;
当应用程序有数据要发送给PCI e的从接口设备时,应用程序将要发送的数据传递所述驱动程序,所述驱动程序再把要发送的数据传递给所述GPIO控制模块,所述GPIO控制模块控制所述接口转换芯片的控制总线和数据总线将要发送的数据传递给从接口设备;
GPIO控制模块控制所述接口转换芯片的控制总线和数据总线接收所述从接口设备返回的数据;
所述GPIO控制模块控制所述接口转换芯片的控制总线和数据总线将要发送的数据传递给从接口设备步骤包括:
将数据的一个字节或者两个字节写入所述数据总线对应的数据寄存器,将所述数据寄存器中的对应数据位设置为输出,将高阻寄存器中的对应数据位设置为0,表示撤销高阻状态;
将自身缓存状态引脚电平设置为高,表示有数据要发送;
所述GPIO控制模块循环读取所述数据寄存器中对方读信号输入引脚对应数据位的值,当发现该数据位由0变为1又变回0时,表示对方完成了本次数据的读取;
所述GPIO控制模块将自身缓存状态引脚设置为低,表示无数据发送,将高阻寄存器数据总线对应数据位置为1,表示将所述数据总线置为高阻状态;
当要发送的数据为多个字节时,重复上述过程,直到全部数据发送完毕。
2.根据权利要求1所述的方法,其特征在于,所述数据引脚定义为8的倍数。
3.根据权利要求1所述的方法,其特征在于,在上电复位后,对PCI e从接口的驱动程序中的GPIO控制模块进行初始化操作步骤包括:
将高阻寄存器中定义为数据总线的GPIO引脚置为高阻状态;
将自身缓存状态输出引脚设置为输出状态,引脚电平设置为低,表示自身缓存为空;
将对方读信号输入引脚和对方缓存状态输入引脚设置为输入状态;
将自身读信号输出引脚设置为输出状态,电平设置为低,表示没有发起读操作。
4.根据权利要求1所述的方法,其特征在于,GPIO控制模块控制所述接口转换芯片的控制总线和数据总线接收所述从接口设备返回的数据步骤包括:
GPIO控制模块循环读取数据寄存器中对方缓存状态输入引脚对应数据位的值,当该位值为1时,表示对方有数据返回;
将输入输出控制寄存器中数据总线对应数据位设置为输入,将高阻寄存器中数据总线对应数据位设置为非高阻状态;
将数据寄存器中自身读信号输出引脚对应数据位写为1,表示发起读操作,将数据寄存器中数据总线对应数据位中的数据读出,写入驱动程序的接收数据的变量中;
将数据寄存器中自身读信号输出引脚对应数据位置为0,表示完成读操作;
将高阻寄存器中数据总线对应数据位设置为高阻;
当要接收的数据为多个字节时,重复上述过程,直到全部数据接收完毕。
CN201110193331.8A 2011-07-11 2011-07-11 利用gpio模拟低速并行接口的方法 Active CN102880574B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110193331.8A CN102880574B (zh) 2011-07-11 2011-07-11 利用gpio模拟低速并行接口的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110193331.8A CN102880574B (zh) 2011-07-11 2011-07-11 利用gpio模拟低速并行接口的方法

Publications (2)

Publication Number Publication Date
CN102880574A CN102880574A (zh) 2013-01-16
CN102880574B true CN102880574B (zh) 2015-01-07

Family

ID=47481905

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110193331.8A Active CN102880574B (zh) 2011-07-11 2011-07-11 利用gpio模拟低速并行接口的方法

Country Status (1)

Country Link
CN (1) CN102880574B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103914424B (zh) * 2014-04-14 2016-08-03 中国人民解放军国防科学技术大学 基于gpio接口的lpc外设扩展方法及装置
CN105068950A (zh) * 2015-07-24 2015-11-18 深圳市微纳集成电路与系统应用研究院 一种管脚复用的系统和方法
CN107942794B (zh) * 2017-11-27 2020-04-28 上海航天测控通信研究所 一种利用GPIO接口模拟McBSP接口的方法
CN110781118B (zh) * 2019-09-30 2023-11-03 深圳震有科技股份有限公司 实现并行总线从模式的方法及装置、计算机设备、介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2690961Y (zh) * 2003-11-12 2005-04-06 中国人民解放军总参谋部第六十三研究所 接口转换装置
CN1758232A (zh) * 2004-10-10 2006-04-12 中兴通讯股份有限公司 一种接口转换模块和对fpga进行配置的方法
CN101377764A (zh) * 2008-09-12 2009-03-04 北京中星微电子有限公司 Gpio的配置系统及其数据通信方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2690961Y (zh) * 2003-11-12 2005-04-06 中国人民解放军总参谋部第六十三研究所 接口转换装置
CN1758232A (zh) * 2004-10-10 2006-04-12 中兴通讯股份有限公司 一种接口转换模块和对fpga进行配置的方法
CN101377764A (zh) * 2008-09-12 2009-03-04 北京中星微电子有限公司 Gpio的配置系统及其数据通信方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
利用FPGA实现与PCI总线接口的数据通信;邓晓勇等;《华北工学院学报》;20020630;第23卷(第6期);第437-439页 *
基于FPGA的PCI总线串口卡设计;高晓青等;《电子技术应用》;20100831;第36卷(第8期);第141-144页 *

Also Published As

Publication number Publication date
CN102880574A (zh) 2013-01-16

Similar Documents

Publication Publication Date Title
CN103559053B (zh) 一种板卡系统及通信接口卡fpga在线升级方法
CN100383737C (zh) 单片机在线加载升级方法及系统
WO2013164869A1 (en) Storage system and control method therefor
US20070208900A1 (en) Virtual ide storage device with pci express interface
CN101140556A (zh) 用可编程器件实现访问多个i2c从器件的方法及装置
CN101645055B (zh) 逻辑器件在线加载的方法、系统和处理器
CN204028898U (zh) 一种硬盘、兼容多种固态硬盘任意混插的服务器
US9524262B2 (en) Connecting expansion slots
CN102880574B (zh) 利用gpio模拟低速并行接口的方法
CN104461970B (zh) Dma控制器、移动终端以及数据搬运方法
CN1650276B (zh) Ata/sata组合控制器
US20070214306A1 (en) Virtual usb flash memory storage device with pci express interface, controller and method thereof
CN103412834A (zh) 一种单soc芯片及单soc芯片多工作模式的复用方法
CN103092810A (zh) 具有可编程虚拟端口的处理器
CN101436171B (zh) 模块化通信控制系统
CN101133386A (zh) 用于主机控制器上的独立和并发数据传送的方法和装置
JP2503183B2 (ja) バス・アダプタ・システム
CN105335548A (zh) 一种用于ice的mcu仿真方法
CN103729165A (zh) 应用于高速运动控制系统的pci从设备核心控制模块
CN113487006B (zh) 一种可移动人工智能辅助计算设备
CN117278890B (zh) 光模块访问方法、装置、系统、电子设备及可读存储介质
CN102193804B (zh) 一种单板驱动的加载方法和通信设备
CN113190084B (zh) 一种支持多种位宽硬盘的硬盘背板连接方法及装置
CN103793263A (zh) 一种基于PowerPC处理器的DMA事务级建模方法
CN102929813A (zh) 一种pci-e接口固态硬盘控制器的设计方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant