电气工程
会计论文
金融论文
国际贸易
财务管理
人力资源
轻化工程
德语论文
工程管理
文化产业管理
信息计算科学
电气自动化
历史论文
机械设计
电子通信
英语论文
物流论文
电子商务
法律论文
工商管理
旅游管理
市场营销
电视制片管理
材料科学工程
汉语言文学
免费获取
制药工程
生物工程
包装工程
模具设计
测控专业
工业工程
教育管理
行政管理
应用物理
电子信息工程
服装设计工程
教育技术学
论文降重
通信工程
电子机电
印刷工程
土木工程
交通工程
食品科学
艺术设计
新闻专业
信息管理
给水排水工程
化学工程工艺
推广赚积分
付款方式
首页
|
毕业论文
|
论文格式
|
个人简历
|
工作总结
|
入党申请书
|
求职信
|
入团申请书
|
工作计划
|
免费论文
|
现成论文
|
论文同学网
|
全站搜索
搜索
高级搜索
当前位置:
论文格式网
->
免费论文
->
其他论文
指纹采集系统中USB接口的设计(四)
本论文在
其他论文
栏目,由
论文格式
网整理,转载请注明来源
www.lwgsw.com
,更多论文,请点
论文格式范文
查看
图7 电压调整电路
3.3.2 I2C总线的EEPROM电路
在前面电路设计中已经提到,当EZ-USB AN2131QC芯片上电时,EZ-USB的引导装载器检查I2C总线上是否存在EEPROM,如果检测到EEPROM存在,装载程序就会读取EEPROM的第一个字节,以决定如何进行总线的枚举。因此,整个硬件电路中EEPROM模块电路是不可缺少的(当然对于调试可以没有,但作为一个USB设备是不可缺少的)。
选用具有I2C总线接口的EEPROM芯片24LC64。24LC64是8K字节的电可擦除的PROM,其工作电压范围为2.5V~5.5V。24LC64可以一次写入32字节(一页),可以任意的或连续读出8K字节数据。其一种封装类型管脚(SO1C)如图8所示:
图8 24LC64管脚
其中A2,A1,A0为用户配置地址,在USB接口硬件系统中,此地址必须为0、0、1。WP为写保护,SCL、SDA为I2C总线的时钟和数据线。由于在AN2131QC中,I2C控制器是漏极开路的,因此使用中必须将SCL和SDA线经过电阻上拉。图9为实现的EEPROM硬件电路。
图9 I2C接口的EEPROM电路
3.3.3 串口电路(调试接口电路)
AN2131QC的固件程序开发编译工具使用keil51,代码调试过程中其与硬件电路的连接和通信是使用主机(PC机)RS232C串行总线通信接口。
串行通信标准RS-232C
RS-232C标准在物理接口上采用了9根信号(TxD、RxD、RTS、CTS、DSR、DTR、DCD、RI和GND)的电缆线,并对数据和控制信号标准作了定义。
在TxD和RxD上:逻辑1(MARK)=-3V~-15V
逻辑0(SPACE)=+3V~+15V
在RTS、CTS、DSR、DTR、DCD和RI等控制线上:
信号有效(接通,ON状态,正电压)=+3V~+15V
信号无效(断开,OFF状态,负电压)=-3V~-15V
对于数据(信息码):逻辑“1”的电平低于-3V,逻辑“0”的电平高于+3V;对于控制信号:接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V。
以上电气特性表明当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3V~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义。
四、USB接口的软件设计
4.1 AN2131QC固件程序设计
指纹采集USB接口的固件程序由主程序、USB总线枚举(设备请求)子程序和USB传输子程序构成。
4.1.1 主程序
主程序主要完成各种工作状态标志,各种变量的RAM空间分配,功能模块的初始化和各种中断的设定。其框架结构流图如图10所示:
图10 固件主程序图
主程序工作过程如下:首先初始化内部的状态变量,然后调用用户初始化函数TD_Init(),此函故中包括对串口初始化和对指纹图像传感器OV7620的初始化函数的调用:此后,主程序电气上模拟重连接,等待主机枚举(即等待SETUP包出现)。与出现SETUP包后,就周而复始的进行任务调度:调用用户函数TD_Poll(),执行功能任务(调用功能函数);有SETUP请求,分析请求类型并执行相应请求;如收到挂起信号,调用TD_Suspend()函数将外设挂起。
4.1.2 枚举子程序
当USB设备插入主机后,主机要进行总线枚举以获取USB设备的信息,从而调入相应的客户驱动程序以便应用程序能够操作USB外设。枚举的主要工作有:主机首先通过默认地址0和默认端点0(控制端点0)发出设备描述符请求以获取USB设备的设备描述符;然后给USB外设分配一个唯一的地址(此后访问设备就通过此地址),并发出配置描述符请求获取设备的配置信息(设备返回配置描述符、接口描述符和端点描述符);最后主机根据设备的配置信息和USB设备的用途,向USB设备发出一个配置值。
由枚举过程可以看出,枚举本质上是些设备请求,是主机对描述符的获取和对设备状态的设定。因此合理设定USB设备的描述符表是整个枚举能够正确运行的关键。本指纹采集系统USB接口设备的部分描述符表实现(汇编形式)如下:
DeviceDscr: db DeviceDSCREnd- DeviceDscr ;; Descriptor length
db DSCR_DEVICE;;Decriptor type
dw 0001H ;;Specification Version (BCD)
db OOH ;;Device class
db 00H ;;Device sub-class
db OOH ;;Device sub-sub-class
db 64 ;;Maximum packet size
dw 4705H ;;Vendor ID
dw 0210H ;;Product ID-set to default example ID
dw 5153H ;;Product 1D-set to QS ID
dw O100H ;;Product version ID
db 0 ;;Manufacturer String index
db 0 ;;Product string index
db 0 ;;Serial number string index
db 1 ;;Number of configurations
deviceDscrEnd;
ConfigDscr: db ConfigDscrEnd-ConfigDscr ;; Descriptor length
db DSCR_CONFIG ;; Descriptor type
db StringDscr-ConfigDscr::Configuration+End Points length(LSB)
db (StringDscr-ConfigDscr)/256;(MSB)
db 1 ;;Number of interfaces
db 1 ;;Interface number
db 0 ;;Configuration string
db 10100000b;;Attributes (b7-buspwr,b6-selfpwr,b5-rwu)
db 0 ;;Power requirement (div 2 ma)
ConfigDscrEnd;
IntrfcDscr:
db IntrfcDscrEnd-IntrfcDscr;;Descriptor length
db DSCR_INTRFC;;Descriptor type
db 0 ;;Zero-based index of this interface
db 0 ;;Alternate setting
db 2 ;;Number of end points
db OffH ;;Interface class
db OOH ;;Interface sub class
db OOH ;;Interface sub sub class
db 0 ;;Interface descriptor string index
IntrfcDscrEnd:
EpInDscr:
db EpInDscrEnd-EpInDscr;;Descriptor length
db DSCR_ENDPNT;;Descriptor type
db 82H ;;Endpoint number, and direction
db ET_BULK;;Endpoint type
db 40H ;;Maximun packet size (LSB)
db OOH ;;Max packect size (MSB)
db OOH ;;Polling interval
EpInDscrEnd:
EpOutDscr:
db EpOutDscrEnd-EpOutDscr;;Descriptor length
db DSCR_ENDPNT;;Descriptor type
db 02H ;;Endpoint number, and direction
db ET_BULK;;Endpoint type
db 40H ;;Maximun packet size (LSB)
db OOH ;;Max packect size (MSB)
db OOH ;;Polling interval
EpOutDscrEnd:
End
4.1.3 USB传输子程序
当采集的指纹数据导入了由SRAM和CPLD构成的高速数据缓冲区后,要通过USB接口将数据发送到上位PC机,AN2131QC必须先将数据读入到内部USB缓冲区。因此,AN2131QC将数据传到内部USB缓冲区的速度将是整个USB数据传输速度快慢的关键。为了使USB数据传输(从外部读入数据并将之传到PC机)达到最快,需要采用很多措施。
正常情况下,AN2131QC内核结构从外部读入数据到USB的端点缓冲区,要使用的汇编程序为:
movx a,@dptr;读外部数据到acc寄存器
inc dptr;外部地址加1
inc dps;切换DPTR指针(内核有双DPTR指针,用dps进行切换)
movx @dptr,a;将acc内容放入USB缓冲区
inc dptr; USB缓冲区地址加1
inc dps;切换DPTR指针
由上述程序可知,数据在寄存器中完成操作后,都必须有一个“inc dptr”,和“inc dps”指令来完成16位地址的增加和缓冲区指针切换。为了消除这种内部消耗,使用AN2131QC提供的一种特殊的硬件指指(只能用于内部缓冲区),8051装载USB缓冲区地址到两个AUTOPTRH(高字节地址)和AUTOPTRL(低字节地址)寄存器中,向AUTODATA写入的数据就直接存入由AUTOPTR/H-L指向的地址缓存区中,并且内核自动增加AUTOPTR/H-L中16位地址的值。这样USB缓冲区可以像FIFO一样来顺序写入数据,节省了每次写内部USB缓冲区时的“inc dptr”指令。同时内核还提供一种快速模式(只用于对外部数据操作),此模式从外部读数据“move a,@dptr”时,直接将外部数据总线和内部缓冲区连在一起,由于使用CPLD和SRAM构成的指纹高速缓冲区具有FIFO的性质,所以使用快速模式读外部指纹数据时也节省了“inc dptr”指令。所以将上述两种方式结合起来,读外部数据到内部缓冲区程序就只需要一条指令:movx@ dptr,a(dptr存放AUTODATA寄存器地址),此指令只需要两个8051机器周期(8个24MHz时钟周期)。这样,一个字节可以在333纳秒内读入到USB端点缓冲区。
在USB接口数据传输一侧,当PC机要对一特定端点进行读数据并发送IN令牌,如果一个IN令牌到达时8051还没有完成向USB端点缓冲区的数据装载(读外部数据),AN2131QC就发送一个NAK握手信号来响应IN令牌,表明PC机应该在稍后再发送一个IN令牌。为了解决这种等待从而达到最快的传输速度,可以使用双缓冲技术(端点配对),使8051在前一个数据包在USB总线上传输的时候,同时装载块数据的下一个数据包到内部USB缓冲区。
根据以上策略实现的传输程序流程如图11所示:
图11 数据传输流程图
在主程序初始化过程中,设定latch_f=1,使系统采集数据并存入由CPLD和SRAM构成的高速缓冲区,当采完一帧后,发出中断请求,中断服务子程序中设定latch_f=0,允许通过USB将采集的高速缓冲区上的数据上传到PC机。
由以上流图实现的USB批量数据传输(没有其它USB设备与它总线竞争的情况下),每帧(USB帧,1ms)能传输17个批量数据包(每包64字节),传输速率可达8.704Mb/s(可使用CATA USB总线分析工具看到每帧传输的数据),占整个总线利用率的73%。根据CATA USB分析数据可以看到,在整个USB帧传输过程中没有出现等待状况(即没有出现NAK应答),这表明在USB数据传输中,AN2131QC从外部读数据到内部缓冲的速度能满足USB传输的要求,并能使USB批量传输达到最大传输速度以适应指纹识别系统中数据传输的要求。(同时可以看到这种方式下AN2131QC从外部读数据到内部缓冲的速度不是整个传输过程的瓶颈,相反,数据的传输速度取决于USB协议)。
4.2 驱动程序
如今大部分的PC主机所使用的系统都集成了USB1.1的驱动程序,本次论文开发的指纹采集系统USB接口所使用的设备驱动程序是windaws98和windows2000兼容的WDM内核模式的驱动程序。
一个WDM设备驱动程序,通常可以完成以下功能:
·初始化驱动程序;
·创建、删除设备;
·处理Win32 I/O及控制请求;
·串行化对设备的访问;
·访问硬件;
·调用其他驱动程序;
·取消I/O请求;
·超时I/O请求;
·即插即用处理;
·处理电源管理;
·使用WMI向系统管理员报告等等。
将这些功能划分为不同模块其中,其中初始化模块“Init.cpp”是必不可少的,它包含有一个驱动程序的初始化入口点;在实际工作中,所有设备驱动程序都有分发例程模块“Dispatch.cpp”来处理用户I/O请求;WDM设备驱动程序还需要一个t即插即用模块“Pnp.cpp”来管理设备的添加、删除等功能。其他模块 “Devicelo.cpp”、“ Power.cpp”、“Wmi.cpp”和“EventLog.cpp”都是可选的。
下面对即插即用模块进行简单介绍:
即插即用模块中一个重要的例程就是创建设备例程AddDevice,这个例程在插入新设备且安装INF文件指示这个驱动程序是要运行的驱动程序时被调用。在创建设备后,为了使设备对于Win32可见,必须为每个设备创建符号链接。把设备注册为一个特定的设备接口就创建了一个符号链接,用户态设备便可以取得拥有此GUID的设备。部分创建设备的代码如下:
……
do
{ntStatus=Ezusb_ CreateDeviceObject (DriverObject, &deviceObject, instance);
instance++;
} while (! NT_SUCCESS (ntStatus) && (instance<MAX_ EZUSB_DEVICES));
if (NT_SUCCESS (ntStatus))
{
pdx=deviceObject->DeviceExtension;
deviceObject->Flags&=~DO_ DEVICE_ INITIALIZING;
deviceObject->Flags|= DO_DIRECT_IO;
deviceObject->Flags|=DO_POWER_PAGABLE:
pdx->PhysicalDeviceObject=PhysicalDeviceObject;
pdx->StackDeviceObject=
IoAttachDeviceToDeviceStack (deviceObject, PhysicalDeviceObject);
ASSERT (pdx->StackDeviceObject! =NULL);
pdx->LastFailedUrbStatus=0;
首页
上一页
1
2
3
4
5
下一页
尾页
4
/5/5
相关论文
上一篇
:
黎曼积分与勒贝格积分的区别与联系
下一篇
:
上海高校校园体育文化现状调查及..
Tags:
指纹
采集
系统
USB
接口
设计
【
收藏
】 【
返回顶部
】
人力资源论文
金融论文
会计论文
财务论文
法律论文
物流论文
工商管理论文
其他论文
保险学免费论文
财政学免费论文
工程管理免费论文
经济学免费论文
市场营销免费论文
投资学免费论文
信息管理免费论文
行政管理免费论文
财务会计论文格式
数学教育论文格式
数学与应用数学论文
物流论文格式范文
财务管理论文格式
营销论文格式范文
人力资源论文格式
电子商务毕业论文
法律专业毕业论文
工商管理毕业论文
汉语言文学论文
计算机毕业论文
教育管理毕业论文
现代教育技术论文
小学教育毕业论文
心理学毕业论文
学前教育毕业论文
中文系文学论文
最新文章
热门文章
推荐文章