专利名称:基于usb移动存储技术的便携式信号发生方法及系统的制作方法
技术领域:
基于USB移动存储技术的便携式信号发生方法及系统,属于信号发生技术领域,尤其是医疗电子仪器中的生理信号发生领域。
背景技术:
目前应用于信号处理的电子仪器的研究开发比较广泛,而信号处理的研发过程中,往往希望通过一些典型的信号对设备进行调试和检测,即需要用到信号发生器。以医疗仪器领域中的心电仪器为例,心电仪器研发过程中常常需要用到一些正常的心电信号,或者是反映某些心电疾病具有代表性的心电信号来检测设备的性能。而现有的心电信号发生器往往能提供的心电数据类型比较单一、种类不多、数据不可更新,或者数据的更新不方便。本发明在采用了FLASH存储技术、单片机技术与DA输出的基础上结合了USB移动存储技术,使用户对数据的处理更加的简便快捷,另外3V转5V的电源转换模块使得本发明可以通过两节5号电池供电,使用更加安全和便携。
发明简介本发明的目的在于提供一种实用安全、简便、快捷的信号发生器。
下面概述本发明的工作原理以51单片机为核心控制USB接口电路,FLASH存储器芯片和DA转换芯片,3V转5V的电源转换电路为整个设备提供正常工作的电源。8051单片机以定时器0的中断实现精确的定时器周期。单片机程序从FLASH存储器的FAT文件系统中寻找数据文件,在每个定时器周期中依次读出数据文件的数据并通过DA转换以模拟信号的格式输出,相当于对数据文件进行一次模拟播放过程,到达文件的末尾之后再从头播放。不过经过DA转换输出的信号大小一般为伏级,为了更好地模拟实际的生理信号如心电信号,通过数字电位器对伏级的信号进行分压使之衰减到毫伏级。另外单片机以中断和并行IO的方式与USB接口芯片通讯,单片机的内部程序中包含了USB1.1规范和Bulk Only方式的USBMass Storage设备类的实现,使得PC对设备的数据操作就像对一个USB移动磁盘的操作一样简便快捷,如图6所示。
本发明所述的方法的特征在于单片机中存入实现了USB1.1规范和USB移动存储设备类以及FAT文件读取和DA输出的固件程序,它依次包含有以下步骤(1).配置USB接口芯片的主端点为批量传输端点,分别为Bulk-In和Bulk-Out端点;(2).主机首先通过Bulk-Out端点向USB接口芯片发送命令块包,用CBW表述;
(3).单片机循环检测USB接口芯片的中断寄存器以判断是否有USB中断产生,若有,则执行下述USB传输处理程序;(4).运行USB传输处理程序,它依次包含有以下步骤(4.1).单片机从USB接口芯片的Bulk-Out端点中读出CBW,(4.2).判断是数据输出否?若为数据输出,则从Bulk-Out端点读出数据;若为数据输入,则单片机向Bulk-In端点发送数据;(4.3).若步骤(4.2)执行完毕,则单片机从Bulk-In端点向主机返回命令状态包,用CSW表示;(5).在步骤(3)中,若没有USB中断,则判断有无外部中断或计数器中断以执行文件搜索程序;若有外部中断,单片机在FAT12文件系统的根目录中按照文件日期依次向后搜索文件;若有计数器中断,单片机按照文件日期依次向前搜索文件;外部中断和定时器中断是通过系统中不同的按键产生的;(6).所述的文件搜索程序依次含有如下步骤(6.1).读取FAT12文件系统的根目录中的所有文件的信息;(6.2).对于计数器中断,找出所有比当前文件日期更早的文件;对于外部中断,找出所有比当前文件日期更新的文件;(6.3).判断是否找到了符合条件的文件。
对于计数器中断,若无符合条件的文件,则选取根目录中日期最新的文件;若有,则选择符合条件的文件中日期最新的文件;对于外部中断,若无符合条件的文件,则选择根目录中日期最早的文件;若有,则选择符合条件的文件中日期最早的文件;(7).在通过一定频率的定时器中断触发的定时器中断处理程序中依次将所选的当前数据文件的数据读出并进行DA转换输出信号;它依次包含以下的步骤(7.1).从pFlash地址中读出数据并进行DA转换,同时用于记录已从当前文件中读出的字节数的nCount值加一;(7.2).判断nCount值与当前文件长度是否相等;(7.2.1).若相等,则从当前文件头开始重新读数nCount值清零,将文件的起始簇的值赋予当前簇的值,用nCluster表示;(7.2.2).若不相等,同时nCount的值是512的倍数,则通过FAT表找到下一个簇的值并赋予nCluster;(7.2.3).若nCount值即不等于当前文件长度,也不是512的倍数,则pFlash的值加一,然后退出定时器中断处理程序;
(7.3).在执行完步骤(7.2.1)和(7.2.3)之后,按照FAT12文件系统中的公式pFlash=nCluster×512+0x4600重新计算pFlash值并退出定时器中断处理程序;本发明所述的系统的特征在于,它含有单片机,它是一个芯片89C52;USB接口芯片,它是一个芯片PDIUSBD12,它与上述89C52芯片互连,同时又经过USB总线与PC机相连;FLASH存储器,它是一个芯片W29C020C,与上述89C52单片机互连;DA转换器,它是一个芯片MAX5354,它的控制端和输入端与上述89C52的输出端相连;输出为2.5V的电压源,它是一个芯片MAX873,它的电压输出端与上述芯片MAX5354的参考电压输入端相连;数字电位器,它是一个芯片DS1689,它的输入端与上述芯片MAX5354的信号输出端相连,使输出信号由伏级信号衰减为毫伏级信号;电压转换器,它是一个芯片MAX1674,它的输入端接3V电池,它的5V电压输出端分别与上述PDIUSBD12、89C52、W29C020C、MAX5354、DS1689、MAX873的各电源输入端相连。
实验证明,本发明具有数据更新方便、处理简捷、使用安全、便携等优点。
图1、本发明的总体框架图。
图2、USB接口模块电路图。
图3、单片机控制电路和FLASH存储电路图。
图4、DA转换电路和数字电位器分压电路图。
图5、电源转换模块电路图。
图6、设备接入PC的示意图。
图7、主循环流程图。
图8、USB传输处理例程的流程图。
图9、文件搜索流程图。
图10、定时器中断中读取文件数据进行DA转换的流程图。
结合附图详细描述本发明的一种具体实施例本实施例所选用的8051兼容单片机是Atmel公司的89C52,其内部自带8K的Flash程序存储器和256字节的数据存储器,能够满足控制程序的要求。所选用的FLASH存储器是Winbond公司的W29C020C芯片,其容量是256KB,并行IO方式。所选用的DA芯片是MAX5354,10位串行DA芯片,另外通过MAX873芯片为其提供2.5V的DA参考电压。所选用的数字电位器是DS1689。所选用的电源转换芯片是MAX1674。
图1为本实施例的总体框架图。系统以89C52为核心器件,通过USB接口芯片PDIUSBD12与PC的USB总线相连。89C52控制D12芯片的数据传输,控制FLASH芯片W29C020C的读写操作和MAX5354的DA输出。MAX1674将两节5号电池提供的3V电压转换为5V供系统的其他模块使用。MAX873芯片为MAX5354的DA输出提供2.5V的参考电压,使得MAX5354的DA输出范围是0-2.5V。用户可选择直接使用MAX5354输出的伏级信号,亦可选择经过数字电位器DS1689分压之后得到的mV级的信号。
图2为USB接口模块电路,以Philips公司的USB接口芯片PDIUSBD12为主,外加滤波电路、起振电路、USB插座及匹配电阻(R5、R6),以及显示USB工作状态的GoodLink发光二极管D1。本实施例中这部分电路被单独抽取出来作为一个独立的设备模块,通过插座的方式与单片机系统连接。电路图中的J0、J1即为2×10的排插接口。
图3为单片机和FLASH存储器芯片电路图。89C52单片机系统还包括其周边的复位电路(R02,C07)和起振电路(X01,C01,C02)。FLASH存储器芯片W29C020的容量是256K字节,有8根数据线和18根地址线,已经超出了8051系列单片机的64K正常寻址范围,因此89C52用两个IO口P10、P11来控制W29C020C的高位地址A16、A17。74HC373芯片用于P0口的地址锁存。89C52的P13口接USB接口芯片D12的使能端(CS0),而P13经过反相器74HC04(U04A)接FLASH芯片W29C020C的使能端(CS1),这样89C52可以通过对P13口的控制来切换在Flash芯片和USB芯片之间选通IO控制。两个按键(S01、S02)分别接89C52的外部中断1(INT1)和计数器1(T1)引脚,通过按键可以产生这两种类型的中断请求。89C52通过两个插座(J01、J02)与USB模块电路相连,对D12芯片进行数据IO控制和中断控制,并为USB模块提供电源。此外89C52还分别通过三个IO口对DA转换芯片MAX5354进行控制,分别是P15(DACS),P16(DIN)和P34(DACLK)。
图4为DA输出电路,MAX5354是一个10位的串行控制DA转换芯片,89C52通过DACS,DIN和DACLK几个引脚来对MAX5354的DA转换进行控制。MAX873芯片为MAX5354的DA转换提供2.5V参考电压。J11为单声道耳机插座,可直接输出MAX5354的DA转换的信号。而DS1689为数字电位器,最大阻值为10K,与10欧姆电阻R11串联可得千分之一的分压,即可得到毫伏级信号。通过另一耳机插座J12输出。另外数字电位器可以通过两个按键S11、S12来调节数字电位器的阻值从而控制分压的比率。
图5为电源转换模块电路图。通过插座JP将电池盒提供的3V电源引入,MAX1674芯片转换为5V(VCC)输出供应整个系统。另外RP0是一磁珠,用于数字地和模拟地之间的滤波,保护模拟信号的输出不被数字信号干扰。
本实施例的软件部分指的是固化在89C52单片机中的固件程序(Firmware),主要包括两个方面,其一是USB移动存储设备类的实现,其二是FAT文件系统的读操作和DA转换。而程序从结构上看主要分为两个部分其一是单片机不断循环执行的主循环程序,其二是定时器中断处理程序。图7为主循环程序的流程图,可以看到在主循环程序中单片机将循环检测USB接口芯片D12的中断寄存器判断是否有主机到USB接口的通讯事务产生以运行USB传输处理例程。此外主循环中还循环对按键S01产生的外部中断、按键S02产生的计数器中断进行检测以执行文件检索操作。而定时器中断主要是通过精确的定时将存储在FLASH中的文件的数据依次顺序读出并进行DA转换输出,图10为定时器中断的流程图,下文将作具体描述。
图8为USB传输处理例程的主要流程图。本实施例的单片机固件程序遵循USB1.1规范(USB1.1 Specifications)和USB移动存储类批量传输协议(USB Mass Storage Class Bulk OnlyTransport),USB接口芯片D12的一对基本端点(Generic Enpdoint)不作配置,而主端点(MainEndpoint)被配置为一对批量传输的端点(分别是Bulk-In和Bulk-Out端点)。由图8可以看到,Bulk-Only方式下PC主机与USB移动存储类设备的通讯方式如下主机首先通过Bulk-Out端点向设备发送大小为31字节的CBW(Command Block Wrapper,即命令块包)。CBW中包含了特定的标号和主机命令。设备根据CBW的具体信息来进一步处理主机的命令。而设备通过Bulk-In端点向主机返回大小为13字节的CSW(Command Status Wrapper,即命令状态包),以此向主机报告CBW的处理情况。CSW包含了与CBW相应的标号和状态信息。如果是Data-Out(数据输出)类型的命令,通常情况下为Write命令(写命令),设备将从Bulk-Out端点读出数据并写入Flash的适当地址中,然后从Bulk-In端点返回CSW;如果是Data-In(数据读入)类型的命令,通常为Read命令(读命令),设备将从Flash的适当中读出数据并通过Bulk-In端点发送给主机,然后返回CSW;如果是没有数据传输的命令,比如测试设备是否正常的命令,设备将直接通过Bulk-In端点向主机返回CSW。
USB FLASH盘第一次接入Windows系统时需要进行格式化,根据USB移动磁盘中FLASH存储器容量的大小Windows将磁盘格式化为FAT12或FAT16格式文件系统。FAT12与FAT16的区别在于文件系统的FAT表的每一个单元为12位,而FAT16为16位。本实施例中FLASH存储器为256KB,Windows自动将其格式化为FAT12系统。
如果只是单纯考虑USB移动存储设备的设计,那设计者大可不必考虑文件系统的处理。因为当设备第一次接入Windows系统之后,用户可以选择系统的格式化命令将USB移动盘格式化成FAT文件系统,并按照FAT文件系统的格式来存储数据文件。而对于设备而言,FAT文件系统的具体结构无需考虑,Windows系统自动的将格式化命令转换为Write命令,设备只需执行CBW中的Write的命令,将主机发送过来的数据写到Flash的适当地址即可。但是本发明的另一项主要功能是信号发生器,因此设备需要对FAT文件系统进行分析,从中找到数据文件并且按照定时器的频率依次将数据文件中的数据读出进行DA转换输出。
考虑到USB FLASH移动盘里面通常会存储不只一个数据文件,通过按键S01、S02分别产生外部中断和计数器中断以启动设备的文件搜索功能。默认情况下系统将选择根目录中日期最新的一个文件作为当前文件进行循环的DA转换输出,通过按键S02产生计数器中断设备将按照文件日期依次往前搜索文件,而通过按键S01产生外部中断使得设备按照文件日期依次向后搜索文件。文件的搜索是在FAT12文件系统的FDT(根目录表)区进行的,里面包含了根目录下的所有文件的信息,包括文件名、文件类型、文件属性、文件日期、文件大小,文件的起始簇(Starting Cluster)等信息。以“前向”搜索为例,图9描述了在FDT中搜索文件的流程图,程序首先读取FDT中每个文件的信息,从中找出所有比当前文件日期早的文件。如果没有找到一个符合条件的文件,则说明当前文件已经是最早的文件,则重新将当前文件设为最新的文件。而如果找到符合条件的文件,则从中选择日期最新的一个文件作为当前文件。这样就实现了当USB移动盘中存储了多个数据文件时,用户每按一次键,系统就能按日期依次切换当前文件的功能。
FAT表中的每一个单元对应数据区中的一个簇(Cluster),簇是FAT系统中文件存储的基本单位,每一个簇为512字节。每一个簇在FAT表中对应的单元记录的是在文件中跟当前簇紧接着的下一个簇的地址。
本实施例通过89C52的定时器0进行精确的定时,在定时器中断处理中依次读出当前文件中的数据并进行DA转换输出。程序定义了几个全局变量用于文件数据的顺序读取nCount用于记录已经从当前文件中读出的字节数,pFlash是一个指针,用于记录当前读取Flash芯片的绝对地址,nCluster用于记录文件的当前簇的位置。图10描述了定时器中断的处理流程。程序开始的时候首先从pFlash地址处读出数据并进行DA转换,同时nCount值自加一。然后对nCount值进行判断。如果nCount值和FileSize(文件长度)相等,则说明已经到达文件尾的最后一个字节,则从当前文件头开始重新读数将nCount值清零,nCluster值置为StartingCluster,即文件的起始簇,然后按照FAT12文件系统中“pFlash=nCluster×512+0x4600”的公式重新计算pFlash地址。如果尚未读完文件而nCount值是512的倍数,说明已经读完当前簇的数据,则通过FAT表找到下一个Cluster的值赋予nCluster,并重新计算pFlash。如果nCount既不等于文件长度也不是512的倍数,则说明当前簇的数据尚未读完,这种情况下只需将pFlash值自加一,然后退出中断处理即可。
权利要求
1.基于USB移动存储技术的便携式信号发生方法及系统,其特征在于,单片机中存入实现了USB1.1规范和USB移动存储设备类以及FAT文件读取和DA输出的固件程序,它依次包含有以下步骤(1).配置USB接口芯片的主端点为批量传输端点,分别为Bulk-In和Bulk-Out端点;(2).主机首先通过Bulk-Out端点向USB接口芯片发送命令块包,用CBW表述;(3).单片机循环检测USB接口芯片的中断寄存器以判断是否有USB中断产生,若有,则执行下述USB传输处理程序;(4).运行USB传输处理程序,它依次包含有以下步骤(4.1).单片机从USB接口芯片的Bulk-Out端点中读出CBW,(4.2).判断是数据输出否?若为数据输出,则从Bulk-Out端点读出数据;若为数据输入,则单片机向Bulk-In端点发送数据;(4.3).若步骤(4.2)执行完毕,则单片机从Bulk-In端点向主机返回命令状态包,用CSW表示;(5).在步骤(3)中,若没有USB中断,则判断有无外部中断或计数器中断以执行文件搜索程序;若有外部中断,单片机在FAT12文件系统的根目录中按照文件日期依次向后搜索文件;若有计数器中断,单片机按照文件日期依次向前搜索文件;外部中断和定时器中断是通过系统中不同的按键产生的;(6).所述的文件搜索程序依次含有如下步骤(6.1).读取FAT12文件系统的根目录中的所有文件的信息;(6.2).对于计数器中断,找出所有比当前文件日期更早的文件;对于外部中断,找出所有比当前文件日期更新的文件;(6.3).判断是否找到了符合条件的文件。对于计数器中断,若无符合条件的文件,则选取根目录中日期最新的文件;若有,则选择符合条件的文件中日期最新的文件;对于外部中断,若无符合条件的文件,则选择根目录中日期最早的文件;若有,则选择符合条件的文件中日期最早的文件;(7).在通过一定频率的定时器中断触发的定时器中断处理程序中依次将所选的当前数据文件的数据读出并进行DA转换输出信号;它依次包含以下的步骤(7.1).从pFlash地址中读出数据并进行DA转换,同时用于记录已从当前文件中读出的字节数的nCount值加一;(7.2).判断nCount值与当前文件长度是否相等;(7.2.1).若相等,则从当前文件头开始重新读数nCount值清零,将文件的起始簇的值赋予当前簇的值,用nCluster表示;(7.2.2).若不相等,同时nCount的值是512的倍数,则通过FAT表找到下一个簇的值并赋予nCluster;(7.2.3).若nCount值即不等于当前文件长度,也不是512的倍数,则pFlash的值加一,然后退出定时器中断处理程序;(7.3).在执行完步骤(7.2.1)和(7.2.3)之后,按照FAT12文件系统中的公式pFlash=nCluster×512+0x4600重新计算pFlash值并退出定时器中断处理程序;
2.基于USB移动存储技术的便携式信号发生方法及系统,其特征在于,它含有单片机,它是一个芯片89C52;USB接口芯片,它是一个芯片PDIUSBD12,它与上述89C52芯片互连,同时又经过USB总线与PC机相连;FLASH存储器,它是一个芯片W29C020C,与上述89C52单片机互连;DA转换器,它是一个芯片MAX5354,它的控制端和输入端与上述89C52的输出端相连;输出为2.5V的电压源,它是一个芯片MAX873,它的电压输出端与上述芯片MAX5354的参考电压输入端相连;数字电位器,它是一个芯片DS1689,它的输入端与上述芯片MAX5354的信号输出端相连,使输出信号由伏级信号衰减为毫伏级信号;电压转换器,它是一个芯片MAX1674,它的输入端接3V电池,它的5V电压输出端分别与上述PDIUSBD12、89C52、W29C020C、MAX5354、DS1689、MAX873的各电源输入端相连。
全文摘要
基于USB移动存储技术的便携式信号发生方法及系统属于医用电子仪器领域,所述方法的特征在于单片机通过USB接口对主机进行读写判断以实现USB移动存储设备类,同时又通过按键产生外部中断和计数器中断;计数器中断按日期前向来执行文件搜索操作,外部中断则反之;找到数据文件后根据定时器中断的频率依次把数据文件中的数据读出,在进行数模转换后形成模拟信号输出;在输出数据时定义了几个全局变量用于文件数据的顺序读取。相应地给出了硬件系统的框图。由此,用户便可以方便地每按一次键就能按日期依次切换当前文件并读数,而且设备即安全、使用方便又便携。
文档编号G01R1/00GK1564001SQ200410030789
公开日2005年1月12日 申请日期2004年4月9日 优先权日2004年4月9日
发明者白净, 徐灿星, 张永红 申请人:清华大学