单片机与PDIUSBD12的通信主要是靠单片机给PDIUSBD12发命令和数据来实现的。 PDIUSBD12的命令字分为三种:初始化命令字、数据流命令字和通用命令字。PDIUSBD12给出了各种命令的代码和地址。单片机先给PDIUSBD12的命令地址发命令,根据不同命令的要求再发送或读出不同的数据。因此,可以将每种命令做成函数,用函数实现各个命令,以后直接调用函数即可。
在编写USB的单片机程序时,需要注意:
① 单片机的中断应设置为电平触发;中断后一定要读上次传输状态寄存器(命令40-45H),以清除中断寄存器中的中断标志。这样,PDIUSBD12的中断输出才能变回高电平,这一点非常重要。
② 在接收到Setup包后,一定要调用ACK setup命令重新使能端口0。
③ 在向IN端点写完数据后,一定调用Validate Buffer(命令FAH),指明缓冲区中的数据有效,可以发送到主机。
④ 当读完数据后,一定调用Clear Buffer(命令F2H),以保证可以接收新的包。
⑤ 可以通过调用Read Chip ID(命令FDH)检查PDIUSBD12是否工作。该命令要读两个字节数据。
USB初始化过程为:
① Set Address Enable;
② Set Endpoint Enable(此时LED亮);
③ Disconnect;
④ delay(1~2 s);
⑤ Connect(即用43h参数调用Set Mode,此时LED灭);
⑥ Read Interrupt Register。
完成初始化工作后,就可作其它的前台工作了,并在前台判断是否有 Setup包(通过一个变量,当中断服务程序检测到有Setup包时,设置该变量),然后执行响应的控制传输。
在调试USB单片机程序时,还要特别注意
Windows对USB设备的枚举顺序:
① GetDeviceDescriptor。主机主要对Length域感兴趣,发送内容一定要正确,特别是第 2字节type一定为0x01,即Device;否则,主机将不响应,或者再重复2次后放弃。可检查一下对EP0的RX、TX的设置次序。
② SetAddress。一般为02或03。
③ 连续3次GetDeviceDescriptor,读取全部设备描述符,一般为 18 B,分为多次传输。如果不正确,主机将不响应或重复2次后放弃。
④ GetConfigDescriptor。注意第2字节一定为0x02,即config 。
⑤ GetStringDescriptor(可能没有),根据在设备描述符中是否有 String索引而定。一般先读取LanguageID,再读取product string。
⑥ 读取全部ConfigDescriptor,次数根据描述符的大小决定(端点个数不同,描述符大小不同),如果不正确,主机将不响应或再重复2次后放弃。
⑦ 如果以上步骤都正确,主机将找到新设备,提示安装驱动程序;否则找到未知设备,不可用。安装驱动程序后,以后的每次PlugIn,枚举次序与以上步骤略有不同,之后会有 SetConfiguration、GetConfiguration和GetInterface等调用。
3.2 主机方面软件设计
Windows98 提供了多种USB设备的驱动程序,但好像还没有一种是专门针对数据采集系统的,所以必须针对特定的设备来编制驱动程序。尽管系统已经提供了很多标准接口函数,但编制驱动程序仍然是USB开发中最困难的一件事情,通常采用
Windows DDK来实现。目前有许多第三方软件厂商提供了各种各样的生成工具,像 Compuware的driver works,Blue Waters的Driver Wizard等,它们能够很容易地在几分钟之内生成高质量的USB 的驱动程序。作为WIN98和WIN2K推荐的一项新技术来说,USB的驱动程序和以往的直接跟硬件打交道的 WIN95的VXD方式的驱动程序不同。它是WDM类型的。
在调试USB设备时,可使用UsbView程序检测设备是否能被
Windows枚举并配置,如果成功, 还可在该程序中查看设备描述符、配置描述符和端点描述符是否正确。之后可以使用Driver Wizard生成一个通用驱动程序,在
Windows提示安装驱动程 序时,选择Driver Wizard生成的驱动程序。其实Driver Wizard生成的仅是一个
Windows控制台的应用程序,它会调用安装Driver Wizard时安装在系统中的通用USB驱动程序。使用该程序就可测试设备是否能够正确传输数据以及传输速度。该程序也可作为最终产品USB传输部分的框架;如果不能满足要求,也可用WDM重新编制驱动程序,用调试好的USB设备来开发、调试主机软件。
4 应用实例
本文介绍一个高速数据采集系统,以AD公司的ADμC812为系统控制器。该单片机本身就是高度集成的高精度12位数据采集系统,在其片内不仅组合了可重新编程非易失性闪速/电擦除程序存储器的高性能8位(与8051兼容)MCU,还包含了高性能的自校准多通道(8个输入通道)12位ADC和两个12位 DAC,且内核与8051指令集兼容。PDIUSBD12作为 ADμC812的存储器外设,接口比较简单。需要注意的地方是引脚必须接高电平,否则将不能接收任何命令和数据;EOT_N必须通过电阻接到USB 的+5 V,以正确检测到USB连接;INT_N引脚加1个上拉电阻,+5 V接到VDD引脚;在VOUT3.3引脚加 1μF(电解电容)和0.1μF两个退耦电容。
结束语
PDIUSBD12是一个性能优化的USB器件,它的SoftConnect 和GoodLink技术使开发和调试USB设备时非常方便,在性能、速度、方便性以及成本上都具有很大的优势。因此,使用PHILIPS公司的PDIUSBD12可以快速开发出高性能的 USB设备。
参考文献
1 Philips Corp. PDIUSBD12 Users Manual
2 Universal Serial Bus Specification,Compaq,Intel,Micrisoft,NEC,Revision 1.1 eptember 23, 1998
3 刘丁,毛德柱,王云飞. USB在数据采集系统中的应用. 电子技术应用
4 晁建刚,陈善广,薛亮. 基于USB接口技术的外设应用设计. 嵌入式系统论文集,2000.11
上一页 [1] [2]
本文关键字:接口 接口电路,单元电路 - 接口电路