专利名称:一种usb通用编程器的利记博彩app
技术领域:
本发明属于集成电路技术领域,具体涉及一种USB通用编程器。
背景技术:
现代工业离不开集成电路(简称IC),IC中的相当一部分通用性强,针对特殊要求进行编程就能胜任不同的工作,因此产生了编程器。衡量一个编程器的好坏,有二个重要的特征指标。其一为是否需要外接电源,具有USB接口的编程器直接利用计算机USB接口的电源,减少了附件,减轻了重量;其二为是否具有通用性,初级编程器一般只支持特定IC厂家的同一系列的可编程芯片,好处是价格较低,坏处是不利于产品的改进与降低成本。究其根源,芯片编程一般需要3种电压地、5伏、12伏,同一系列IC的12伏的引脚位置一般是固定的,故相应的编程器易于设计。要达到通用性要求,设计编程器时应该考虑到12伏编程引脚位置的游移不定性,较多通用型编程器设计公司采用CPLD、三极管等复杂方案,优点是灵活,编程速度快,缺点是价格不菲。
发明内容
本发明的目的在于提出一种灵活性好、速度较快、价格较低的USB通用编程器。
本发明设计的USB通用编程器,由USB接口与电源产生电路、振荡电路、USB通信电路、DC-DC升压电路、主单片机控制电路、信号电压转换电路、串到并转换电路、从单片机编程控制电路、2选1开关阵列电路、双排插座编程电路经电路连接而成。其结构框图如图11所示。其中,USB接口与电源产生电路提供与USB通信电路的USB接口,并从USB接口导出(5伏)电源供其余电路工作;振荡电路驱动USB通信电路工作;USB通信电路负责USB数据包的收发;DC-DC升压电路的作用是DC-DC生压,向工作于12伏电压的电路供电;主单片机控制电路有3个作用产生脉冲驱动DC-DC升压电路,通过信号电压转换电路控制串到并转换电路及2选1开关阵列电路,以主从串行通信方式控制从单片机编程控制电路;信号电压转换电路将5伏控制信号转换成12伏控制信号;串到并转换电路将串行输入的数据转换成并行输出的数据,作为开关信号去控制2选1开关阵列电路的开关;从单片机编程控制电路一方面通过2选1开关阵列电路间接双排插座编程电路的部分引脚,另一方面直接控制双排插座编程电路的其余引脚;2选1开关阵列电路的开关由串到并转换电路提供,2选1连接从单片机编程控制电路或12伏信号到双排插座编程电路的部分脚;双排插座编程电路用于连接待编程的芯片。
本发明设计上述USB通用编程器,其中采用了单片机89C2051,通过USB接口与计算机交换数据;采用若干枚单片机MDT2005直接提供USB通用编程器所需的地、(5伏)VCC电源及控制信号;采用若干枚MC14054芯片组成2选1开关阵列,采用若干枚MC14094芯片实现串到并转换,并产生控制信号列控制MC14054阵列,由此组成灵活的12伏编程电压施加电路,从而使USB通用编程器具有通用性。
本发明还给出了USB通用编程器的传输规范,其主要结构为本发明设计的USB通用编程器,通用性强、灵活性好,其控制电路直观,而硬件成本较低。
图1为USB接口与电源产生电路。
图2为晶体振荡电路。
图3为USB通信电路。
图4为DC-DC升压电路。
图5为主单片机控制电路。
图6为信号电压转换电路。
图7为从单片机编程控制电路。
图8为串到并转换电路。
图9为双排插座编程电路。
图10为二选一开关阵列电路。
图11为本USB通用编程器总体结构框图。
图12为本USB通用编程器控制软件结构框图。
图中标号1为USB接口电路与电源产生电路,2为USB通信电路,3为振荡电路,4为主单片机控制电路,5为信号电压转换电路,6为DC-DC升压电路,7为单片机编程控制电路,8为串到并转换电路,9为双排插座编程电路,10为2选1开关阵列电路。
具体实施例方式
下面通过实施例和附图进一步描述本发明。
图1所示USB接口与电源产生电路,提供与USB通信电路的USB接口,并从USB接口导出5伏电源供其余电路工作。插座J3是USB接口,J3的1脚为地,2、3脚分别为USB的DP、DN差分信号,通过大小为18Ω的差分匹配电阻R15、R16与信号DP、DN相连接。J4的4脚为5伏USB电源,引进该电源作为USB通用编程器所需的VCC信号。D1为锗二极管,正向压降大约为0.2伏,其作用是当V12电压信号<5伏时通过它向V12信号提供电源,保证12伏信号驱动的电路此时能够工作。
图2所示晶体振荡电路,产生振荡信号驱动USB通信电路工作。由陶瓷振荡器Y1组成,该晶振器内部有两个电容稳定振荡波形,电容的一端经过J6接地。
图3所示USB通信电路,负责USB数据包的收发。采用USB接口器件PDIUSB12D,该芯片符合USB1.1规范,具有12Mbit/s的全速USB通信功能,有8位并行接口,方便单片机控制。该芯片的工作模式0提供端点0和端点2,端点0具有输入/输出功能,最大数据包长度为16字节,用于USB的控制传输;端点2具有输入/输出功能,最大数据包长度为64字节,有双重64字节的数据缓冲区,适合全速块传输。其引脚连接如下(1)5、24脚是其电源脚,5脚接地,24脚接在VCC信号上。
(2)22、23脚是它的振荡脚,按要求接到内置稳定电容的陶瓷振荡器Y1的两端,Y1的频率为6MHz,如图2所示。
(3)25、26脚分别是该芯片的USB信号DN、DP脚,连接至DN、DP。
(4)1、2、3、4、6、7、8、9是它的并行接口,接到USB通用编程器的8位数据总线AD
上,通过该总线,单片机可以控制该芯片并与该芯片交换数据。
(5)10脚是地址锁存输入信号,不用故接地;14脚是数据收发中断标志输出信号,不用,故悬空;12脚是使芯片进入挂起状态输入信号,开漏,本设计中该芯片从不进入挂起状态,故可以悬空;17、18、19脚分别是芯片的DMA请求输出、承认输入、中断输入信号,本设计不使用DMA功能,故分别悬空、接到V3.3信号上;Vout33是芯片的3.3伏电源输出脚,不用,可以悬空,或接到V3.3信号上;11脚是芯片片选信号,低有效。由于总线AD
只连接MCU单片机与该芯片,故片选信号接地,恒选通。
(6)28脚是地址位输入信号,该脚上信号为0时表示输入的是数据,否则是命令指令,故接到CASEL信号上,由单片机来控制。
(7)13脚是可编程振荡信号输出脚,频率为48MHz/(n+1),其中n为1到11之间的正数,开始时为11。该信号连接到clock上,用于驱动MCU单片机。
(8)15、16脚分别是读、写控制输入脚,低有效,接到nRD、nWR信号上,由MCU单片机来控制。
(9)21脚是USB连接状态指示灯,低有效,可吸收8mA的电流,故通过电阻R10与发光二极管LP1连接,二极管的另一端接到V3.3信号上,R10的作用是控制电流的大小,二极管的方向不可接反。
图4所示DC-DC升压电路,从5伏电压经过升压得到12伏电压,向工作于12伏电压的串到并转换电路、2选1开关阵列电路供电。由电感EL1、MOS管Q5、锗二极管ED1及负载电阻R14、稳压电容EC2构成。电感EL1的作用是储能,当Q5接通时,VCC向EL1充电;当Q5断开时,EL1通过ED1向V12放电。ED1的作用是隔离V12与地。R14的作用是放掉多余的电荷,控制V12的上限。EC2的作用是去掉V12的纹波。脉冲信号CASEL由单片机产生,其频率决定了V12的高低。在输出100mA电流的前提下,V12一般为12伏,实际上可以在5伏至18伏内连续变化,足够满足各种流行可编程芯片的需求。
图5所示主单片机控制电路有3个作用产生脉冲驱动DC-DC升压电路,通过信号电压转换电路控制串到并转换电路和2选1开关阵列电路,以主从串行通信方式控制从单片机编程控制电路。采用51兼容的单片机89C2051来实现,其引脚连接如下(1).电源脚10、20分别接地、VCC信号。
(2).5是振荡输入脚,连接到PDIUSB12D传来的Clk振荡信号,4是振荡输出脚,不用,悬置。
(3).1是复位输入脚,高有效,接在C1和R9的中间的RST信号上。上电时,C1充电,由于C1接在VCC上,故RST为高,复位芯片;经过一段时间后,C1中的电荷经过R9流至地,RST随之变低,复位结束。
(4).P1口的8个IO脚作为总线接口,连接到USB通用编程器的总线AD
上。由于P1的高6位具有弱上拉功能,低2位没有,为了能够灵活地输入/输出,需要通过电阻R11,R12将其上拉。
(5).2、3脚用于控制PDIUSB12D的写、读,分别连接到nWR、nRD信号上。
(6).11脚用于产生信号CASEL,一方面通知PDIUSB12D命令与数据,另一方面用于DC-DC升压。
(7).6、7、8、9分别与rD、rSTR、rCLK、rINH信号连接。
图6所示信号电压转换电路将5伏信号转换成12伏信号。由NPN三极管Q1、Q2、Q3、Q4及相应的电阻构成,负责将rD、rSTR、rCLK、rINH四个VCC大小的信号转换为V12大小的D、STR、CLK、INH信号。转换前后的电平极性相反。
图7所示从单片机编程控制电路一方面通过2选1开关阵列电路间接双排插座编程电路的24个引脚,另一方面直接控制双排插座编程电路的20个引脚。在89C2051的牵引下控制信号CTR
的输入/输出。采用PIC兼容的单片机MDT2005来实现,工作电压在2.3伏到5伏之间,端口出入电流最大可达20mA以上。MDT2005的引脚连接如下
(1).电源脚5、14分别接地、VCC信号。
(2).16是振荡输入脚,连接到PDIUSB12D传来的clock振荡信号,15是振荡输出脚,不用,悬置。
(3).4是复位输入脚,低有效,利用芯片的内部上电复位功能,不用该脚的功能故连接到VCC信号上。
(4).17、18、1、6、7、8、9、10、12、12、13脚11个IO口作为总线接口,连接到CTRx信号上,输入数据时,这些脚要设置成输入状态,输出命令/数据时,必须设置成输出状态。
(5).2脚连接到rD信号,3脚接到rCLK上,以89C2051主动、MDT2005被动的主从方式完成串行通信。
图8所示串到并转换电路将串行输入的数据转换成并行输出的数据,作为开关信号去控制2选1开关阵列电路的开关。其电源脚3、16分别接在地、V12上。脚2上的数据D在3脚上的CLK脉冲的作用下被串行输入到MC14094内部的寄存器上,1脚上的脉冲STR将内部的寄存器上的数值驱动到脚4、5、6、7、11、12、13、14上。MC14094被设置成恒允许输出状态,3枚共有24个输出信号SEL[10..21],SEL[32..43],用以驱动工作在V12上的MC14053。
图9所示双排插座编程电路的44个脚用于连接待编程的芯片。44个有效脚,排列成2排,分别与信号CTR
、CTR[22..31]、AD[10..21]、AD[32..43]相连接,这里,CTR信号的电压有地、VCC两种选择,AD信号有地、VCC、V12三种选择。具体放置芯片时,为保证芯片的V12电压脚落在插座的下面24个AD脚内,必要的话可以旋转18度放置待编程芯片。
图10所示2选1开关阵列电路的开关由串到并转换电路提供,二选一连接从单片机编程控制电路或12伏信号到双排插座编程电路的24个脚。由8枚模拟开关MC14053构成,其电源脚1、8、16分别与地、地、V12连接。模拟开关具有较小的接通电阻,可以流过20mA以上的电流。一片MC14053中有3组二选一开关,6脚上的INH信号为高时断开所有开关,低时接通。89C2051复位时所有IO口为高,经过图6电路反极性后为低,故开始时即接通。二选一开关的二选之一为CTRx信号(由MDT2005提供地、VCC),之二为V12信号,由SELx信号选择其中的一个,SELx为低时选择前者,高时后者。共有24开关接通接到信号AD[10..21]、AD[32..43]上。仅仅从插座上的芯片读出信息时,所有SELx应为0以选择MDT2005直接控制所有脚。
本发明设计的USB通用编程器的控制软件框图如图12所示,由2部分构成USB设备识别,通过控制端点0读写完成,符合USB规范1.1;USB通用编程器控制,通过端点2块读写完成,符合后面给出的USB通用编程器数据传输规范。
第一部分USB设备识别的详细过程如下(1)初始化。将主控制单片机89C2051的引脚设置成输入状态;(2)自我表现全速USB设备。拉低USB接口器件的DP脚,告诉计算机USB接口上插入了全速USB设备,并设置合适的输出振荡频率①调用该器件的使用说明文件中所提供的D12_SetMode函数,断开该器件。
②等待50毫秒;③调用D12_SetDMA函数,关闭DMA功能;④再次调用D12_SetMode函数,接通该器件并设置合适的输出振荡频率;(3)检查端点0是否接收到数据。调用D12_ReadEndpoint函数,仅仅读端点0输入缓冲区接收到的数据的长度(不可清除数据),该长度大于0的话,说明计算机向USB设备发送了数据。读数据包类型判别是否为SETUP包。通过函数D12_ReadLastTransactionStatus清除USB接口器件端点0输入的中断标志位,同时得到该端点的数据包的类型。如果不是建立包的话,设置空闲位。反之,要进一步处理。
(4)读缓冲区8字节,清空缓冲区。调用D12_ReadEndpoint函数读取端点0缓冲区8字节,清除缓冲区用于下一次读入数据。如果读到的数据不足8字节的话,说明穿过来的数据不对,设置空闲位,调用函数D12_SetEndpointStatus阻塞端点0的输入/出;否则要进一步具体情况具体分析。
(5)解析USB请求。调用D12_AcknowledgeEndpoint函数解锁端点0的输入/出,从建立包的长度域提取下一步操作的数据长度(大于127的话截取为127)。检查包类型域中的方向位,如果置位的话,下一步数据传输的方向是设备到计算机,这可能是GetConfiguration,Get Descriptor,Get Interface,Get status标准USB请求。反之是计算机到设备,检查下一步操作的数据长度①等于0,可能是Set Address,Set Configuration,Set Feature,Set Interface,SetDescriptor标准USB请求。
②不大于8,是向设备输出数据,清除空闲位,设置接收位准备接收数据。
③大于8,调用函数D12_SetEndpointStatus阻塞端点0的输入/出。
(6)响应所有标准USB请求。根据建立包请求域,作出具体相应①GET_STATUS,建立包请求类型域有3种情况,分别返回2字节信息0x000x00 0x00(远程唤醒禁止\总线电源)、0x02 0x00(允许);
0x010x00 0x00(接口情况);0x020x01 0x00(端点禁止)、0x00 0x00。
②CLEAR_FEATURE,分设备远程唤醒和端点禁止两种情况,记录并调用D12_SetEndpointStatus作相应的设置,返回返回0长度数据表示完成。
③SET_FEATURE,根据记录,返回一个字节的数据反映设备远程唤醒和端点禁止两种情况。
④SET_ADDRESS,从包的数值域提取新地址,调用D12_SetAddressEnable函数将设备设置成该地址,返回返回0长度数据表示完成。
⑤GET_DESCRIPTOR,视情况分别返回设备描述符,或返回所有的配置、接口、类、端点描述符。
⑥GET_CONFIGURATION,返回返回一个字节的配置/清除数据。
⑦SET_CONFIGURATION,从包的数值域提取配置/清除标志,调用函数D12_SetEndpointEnable设置/清除配置,返回返回0长度数据表示完成。
⑧GET_INTERFACE,返回一个字节的数据0表示完成。
⑨SET_INTERFACE,返回0长度数据表示完成。
⑩其余情况,调用函数D12_SetEndpointStatus阻塞端点0的输入/出。
(7)端点0有数据需要发送发送数据。调用函数D12_ReadLastTransactionStatus USB接口器件端点0输出的状态,并清除的中断标志位,如果空闲位=0且发送位=1,表示有数据需要发送。调用函数D12_WriteEndpoint进一步发送最多16个字节的数据。最后一次发送时必定小于16字节,表示发送结束。
第二部分USB通用编程器控制的详细过程如下检查端点2是否接收到数据。读缓冲区36字节,清空缓冲区,匹配检查开始4字节,并解析BLOCK命令。调用D12_ReadEndpoint函数,读最多36字节端点2输入缓冲区接收到的数据并清除缓冲区,该长度非0的话,说明计算机向USB设备发送了数据。匹配检查第0、1、2、3字节是否为’B’、’L’、’K’、’L’,不匹配的话则不再作进一步的处理。第15字节为BLOCK命令,遵照USB通用编程器规范作出响应,必要时发布一系列命令。
(1).BLOCK_INQUIRY(18)时,返回36字节的信息,4至18字节为”Programmer 1.00”。
(2).BLOCK_READ(40)/BLOCK_WRITE(42)时,主89C2051①取出第16字节的同步符,通过rCLK,rD信号启动MDT2005同步操作。
②取出第17、18、19字节,通过rCLK,rD信号启动MC14094输出24个开关位sw。
③取出第20、21字节,通过rCLK,rD信号控制U14的PA、PB口的输入/输出状态,1输入,0输出;类似22、23字节控制U12,24、25字节控制U15,26、27字节控制U13。
④BLOCK_WRITE时取出第28、29字节,通过rCLK,rD信号控制U14的PA、PB口上的数据,类似地30、31字节对应U12,32、33字节对应U15,34、35字节对应U13;时数据写到口上,从口上读得数据。
⑤BLOCK_READ时通过rCLK,rD信号读得U14的PA、PB口上的数据并填充到第28、29字节;类似地U12对应30、31字节,U15对应32、33字节,U13对应34、35字节,调用D12_WriteEndpoint写端点2输出口36字节数据。
⑥BLOCK_WRITE时取出第12、13字节控制DC-DC升压时间,取值于[1,255]。
⑦BLOCK_WRITE时取出第14字节控制DC-DC升压脉冲宽度。
USB通用编程器数据传输规范(1).计算机通过USB的块传输与USB通用编程器中的主控制单片机交换数据;(2).支持BLOCK_INQUIRY(18)、BLOCK_READ(40)、BLOCK_READ(42)三种操作命令;(3).插座引脚与4枚MDT2005的引脚匹配如下,其中内侧数字1至44表示插座的数字编号,sw出现的地方表示有3种电压可以选择,具体有示MC14094的输出位,相应的sw=1表示选通V12,否则选通某枚MDT2005的某个IO口Px.nU13PA.0 4434U12PA.0U13PA.1 4333U12PA.1U13PA.2 4232U12PA.2U13PB.0 4131U12PB.0U13PB.1 4030U12PB.1U13PB.2 3929U12PB.2U13PB.3 3828U12PB.3U13PB.4 3727U12PB.4U13PB.5 3626U12PB.5U13PB.6 3525U12PB.6U13PB.7 sw 2412 sw U12PB.7U15PA.0 sw 2311 sw U14PA.0U15PA.1 sw 2210 sw U14PA.1U15PA.2 sw 219 sw U14PA.2
U15PB.0 sw 208 sw U14PB.0U15PB.1 sw 19<---12V---> 7 sw U14PB.1U15PB.2 sw 186 sw U14PB.2U15PB.3 sw 175 sw U14PB.3U15PB.4 sw 164 sw U14PB.4U15PB.5 sw 153 sw U14PB.5U15PB.6 sw 142 sw U14PB.6U15PB.7 sw 131 sw U14PB.7(4).采用36字节的数据格式,该格式中的部分数据与USB通用编程器的插座具有一一对应的关系①0、1、2、3字节为’B’、’L’、’K’、’L’。
②第12、13字节控制DC-DC升压时间,取值于[1,255]。
③第14字节控制DC-DC升压脉冲宽度,取值于
。
④第15字节为BLOCK命令。
⑤16字节为同步符01010100。
⑥17、18、19字节为MC14094的24个输出开关位sw,从17字节的最低位至19字节的最高位分别对应于插座的1至24脚。
⑧20、21字节控制U14的PA、PB口的输入/输出状态,1输入,0输出;类似22、23字节控制U12,24、25字节控制U15,26、27字节控制U13。
⑨28、29字节对应U14的PA、PB口上的数据,类似地30、31字节对应U12,32、33字节对应U15,34、35字节对应U13。
本发明的实施过程中,电子工程师根据本发明中的原理,采用单片机89C2051作为主控制器,从网上下载Franklin C V3.2软件开发工具,根据本发明给出的软件流程,设计出正确的主控制软件,生成89C2051的HEX编程文件。采用单片机MDT2005作为从控制器,从网上下载MDT2005的软件开发工具,根据本发明给出的软件流程,设计出正确的从控制软件,生成MDT2005的二进制编程文件。用PROTEL电路图设计软件照附图所示画出原理图。电子工程师与美术工作人员协商共同规划元器件的放置方案,采用贴片元器件,画出PCB图。从PCB图生成元器件列表。
1.硬件设备驱动程序开发人员从网上下载Jungo的WinDriver设备驱动开发工具,生成运行于WINDOWS上的USB通用编程器驱动程序;硬件工程师开发出能编程若干种单片机的应用程序;用智能安装打包程序打包生成SETUP.EXE安装程序。
权利要求
1.一种USB通用编程器,其特征在于由USB接口与电源产生电路、振荡电路、USB通信电路、DC-DC升压电路、主单片机控制电路、信号电压转换电路、串到并转换电路、从单片机编程控制电路、2选1开关阵列电路、双排插座编程电路经电路连接而成,其中,USB接口与电源产生电路提供与USB通信电路的USB接口,并从USB接口导出电源供其余电路工作;振荡电路驱动USB通信电路工作;USB通信电路负责USB数据包的收发;DC-DC升压电路的作用是DC-DC生压,向工作于12伏电压的电路供电;主单片机控制电路有3个作用产生脉冲驱动DC-DC升压电路,通过信号电压转换电路控制串到并转换电路及2选1开关阵列电路,以主从串行通信方式控制从单片机编程控制电路;信号电压转换电路将5伏控制信号转换成12伏控制信号;串到并转换电路将串行输入的数据转换成并行输出的数据,作为开关信号去控制2选1开关阵列电路的开关;从单片机编程控制电路一方面通过2选1开关阵列电路间接双排插座编程电路的部分引脚,另一方面直接控制双排插座编程电路的其余引脚;2选1开关阵列电路的开关由串到并转换电路提供,2选1连接从单片机编程控制电路或12伏信号到双排插座编程电路的部分脚;双排插座编程电路用于连接待编程的芯片。
2.根据权利要求1所述USB通用编程器,其特征在于(1).有一枚单片机89C2051通过USB接口器件与计算机交换数据;(2).有若干枚单片机MDT2005直接提供USB通用编程器所需的地、VCC电源及控制信号;(3).有若干枚MC14094实现串到并转换、并产生控制信号列控制若干枚MC14053构成的2选1开关阵列,由此组成灵活的12伏编程电压施加电路。
3.一种如权利要求1所述的USB通用编程器的数据传输规范,其特征在于(1).计算机通过USB的块传输与USB通用编程器中的主控制单片机交换数据;(2).支持BLOCK_INQUIRY、BLOCK_READ、BLOCK_READ三种操作命令;(3).支持具有36字节的数据格式,该格式中的部分数据与USB通用编程器的插座具有一一对应的关系。
全文摘要
本发明是一种USB通用编程器。现有编程器要么简单,可编程器件品种较单一;要么采用CPLD、三极管等复杂结构,编程器件品种多但电路成本高。本发明提出一种USB、单片机、模拟开关阵列方案,具有通用型编程器的灵活性,其控制电路直观,降低了硬件成本。本发明还给出了计算机与USB通用编程器的数据传输规范。
文档编号G11C7/00GK1588550SQ20041005403
公开日2005年3月2日 申请日期2004年8月26日 优先权日2004年8月26日
发明者张德志 申请人:复旦大学