相关服务

  • 《现代电子技术》2006年第19期摘录:黄益彬等:基于DSP的USB接

如发现有乱码,请点击下面链接浏览原文
正文摘录:

黄益彬等:基于DSP的USB接口设计PC机端的驱动程序及测试程序可以参考Philip公司的开发包进行设计。下面介绍ISPl581的固件程序的设计。3.1初始化寄存器固件程序必须对ISPl581的寄存器初始化来配置I/0口的信号电平以满足系统设置的要求。表1列出了ISP]581的地址寄存器、方式寄存器以及中断配置寄存器的一般初始化方法。表l地址寄存器(oon)。方式寄存器(0cH)中断配置寄存器(10FI)初始化方法函数Init—D14一SFR()完成IJSB的初始化设置。主要是激活设备,设置中断模式以及配置和使能中断等。voidInit—D14一SF‘R(void){regaaddren—Ox80;//激活设备//设置模式:时钟始终有效,全局中断使能,片选唤醒rega—mode}一Ox88;//设置全部中断为模式1,电平触发,低电平有效rega—intcfg—Ox54;//设置中断使能寄存器regaintmasklow一0xfd71;rega—immask—high一0x0000;}3.2软件连接初始化完成之后,通过软件的方式将IJSB的D+线拉高,即通过置为I_JSB的内部寄存器的相应位,使得D+线通过一个1.5kQ的电阻接到Vcc-上。3.3程序进入循环当完成了【JSB的软件连接后,程序将进入一个循环,等待上位机的命令的到来。一旦上位机检测到LJSB的D+,D一的电压发生变化(软件连接后,D+,D一的电压将发生变化),上位机就开始对插入的新设备进行枚举,只有正确完成枚举,上位机才能加载驱动并使用LISB设备。3.4枚举过程上位机对LISB设备进行枚举时,需要获取设备描述符、配置描述符、接口描述符、端点描述符等,并需要为【JSB设备分配一个地址。3.4.1获取描述符LJSB设备通过端点0(默认端点)来读取上位机发来的枚举数据,程序根据接收到的数据来判断上位机需要tJSB设备做什么,如果上位机需要获取LJSB设备的描述符,则程序进一步判断上位机需要什么描述符,然后将相应的描述符发送给上位机。voidget—descr‘iptor(void){//获取描述符switch(LJSB【)evice.Request..wValue){//判断描述符类型case1://获取设备描述符……//发设备描述符给上位机case2://获取配置描述符……//发配置描述符给上位机case3://获取字符串描述符……//发字符串描述符给上位机case4:reset·red().break;//保留case5://获取端点描述符……//发端点描述符给上位机case6://获取设备限制描述符……//发设备限制描述符给上位机case7://获取速度配置描述符……//发速度配置描述符给上位机case8:break;//保留defauh:break;}枚举时,需要准确无误地完成图3的流程才能通过枚举,部分描述符在枚举时并不需要,但有些PC机端的应用程序可能需要。3.4.2设定地址在设定I-ISB设备的地址之前,上位机和【JSB设备都用默认地址00H进行通信,一旦上位机获取了LISB设备的设备描述符,上位机将给此I_YSB设备指定一个新的地址,之后的通信都将以新的地址来进行。因此,当LISB设备接收到上位机的设定地址的请求后,就必须将新地址存储到芯片的地址寄存器中去(即更改15SB设备的地址)。设定地址的流程如图4所示。//设定地址

阅读此文(图):   点击此处在线翻阅