基于DSP和专用接口芯片的USB实现方案
发布时间:2008/8/20 0:00:00 访问次数:482
自1994年11月提出通用串行总线(usb)以来,usb以其传输速率高、支持热插拔、易于扩展的突出优势,发展速度惊人,迅速席卷电子产品世界。在市场需求的强力驱动下,从1998年开始,usb接口进入测量仪器领域,并逐步被许多著名仪器公司接纳。在测量仪器中扩展usb接口已经成为一种发展趋势。针对不同的测量仪器,寻求一种普遍适用的usb接口解决方案,对于测量仪器的开发设计有十分重要的意义。
方案选择
开发usb设备一般有三种方式:一种是使用带usb接口的专用微控制器(mcu),这类mcu有自己的系统结构和指令,从底层专用于usb控制,比如cypress公司的cy7c63xxx和cy7c64013,这类mcu的开发需要用专用工具,且性能有限;第二种方式是使用带usb接口的通用mcu,这类mcu只是基于一般芯片内核增加了usb接口,比如intel公司的8x931、8x930以及cypress公司的ezusb等,这类mcu的开发语言和开发工具都和一般mcu相似,因而较易入手,但其缺点是成本较高;第三种方式是使用纯粹的usb接口芯片,通过外加mcu对其控制。如philips公司的pdiusbd12、isp1581以及national公司的usbn9602、南京沁恒公司的ch372、ch375等。这类usb接口芯片价格较低、接口方便、灵活性高,针对不同的硬件环境可以配合多种mcu使用,如单片机、dsp、fpga都可以。综合各方面因素考虑,本设计选用第三种方式,即采用专用usb接口芯片为测量仪器扩展usb接口。
硬件设计
usb控制器
usb控制器通过控制usb接口芯片实现协议处理和数据交换。在本设计中选用dsp芯片tms320vc33作为微控制器,这主要是基于两方面的考虑:一是其运算速度较快,指令周期仅为13ns,可以最大限度地发挥usb接口芯片的潜力;二是该dsp芯片性价比高,且具有浮点运算功能,扩展浮点精度可达40位。
usb接口芯片
usb接口芯片用以完成usb通信底层的数据链路级交换,并对本地微控制器提供一个并行接口。
本文选用philips公司的pdiusbd12作为usb接口芯片。该芯片可与任何微控制器实现高速并行接口(2mb/s),允许使用现存的体系结构并使固件投资减到最小。这种灵活性减少了开发时间、风险和成本,是开发高效低成本的usb外围设备的一种快捷途径。
pdiusbd12一共有三组端点:端点0完成控制传输;端点1可以配置成中断传输;端点2有128b的缓冲区,是主要的数据传输端点。
接口电路
采用单独地址/数据总线配置,即用dsp的某地址线控制pdiusbd12的a0引脚,实现命令数据的选择。a0=1表示传送命令,a0=0表示传送数据。片选(cs )及挂起(suspend)信号分别由dsp的i/o口控制。读写选通信号wr 、rd 可以用dsp的r/w引脚及其取反后控制。但这样需要在电路中增加反相器,为了节约器件从而缩小电路体积,可以另外选择一个i/o口控制pdiusbd12的读选通rd。本设计中选用page1,通过对不同地址的访问来区分对pdiusbd12的读写操作。这样pdiusbd12只占用微控制器的三个地址资源,其一用来向pdiusbd12写命令,其二用来向pdiusbd12写数据,另外一个用来从pdiusbd12读数据。对dsp而言,pdiusbd12就相当于一个有8位数据总线和3个地址的存储器件。
设备采用自供电方式,需要将eot 通过一个10k?的电阻接至usb电缆的vcc(+5v)端,并加1m?下拉电阻,借此检测usb设备是否已经连接到usb口。
软件设计
usb软件设计包括固件(firmware)程序、pc端的驱动程序和应用程序。其中固件程序要求编写者对复杂的usb通信协议有深刻的理解,编程难度较高,在本论文中将详细介绍。
固件编程
固件程序是写入mcu内的程序,使mcu可以完全按照usb协议,识别接收到的信息包类型,对包的内容、意义进行分析,并按照要求完成相应的动作。通过这些不同类型包的传递,完成mcu与接口芯片的命令及数据交换,进而实现主机与设备间的通信。
固件程序设计成中断驱动模式,采用模块化设计。
主循环
主循环中主要完成dsp的寄存器及端口初始化,向pdiusbd12发送设置模式命令,接通softconnect。判断是否接收到建立包(setup package),若收到则调用标准请求处理程序进行处理,若收到主机请求信号,则调用数据发送程序发送数据。
中断处理程序
中断处理程序是整个固件程序设计的重点。将dsp设置为下降沿触发,当pdiusbd12接收到主机发送的信息包时,触发dsp进入中断。首先通过读取pdiusbd12的中断寄存器判断所发生中断的类型,然后根据具体的中断类型进入相应的处理子程序。
自1994年11月提出通用串行总线(usb)以来,usb以其传输速率高、支持热插拔、易于扩展的突出优势,发展速度惊人,迅速席卷电子产品世界。在市场需求的强力驱动下,从1998年开始,usb接口进入测量仪器领域,并逐步被许多著名仪器公司接纳。在测量仪器中扩展usb接口已经成为一种发展趋势。针对不同的测量仪器,寻求一种普遍适用的usb接口解决方案,对于测量仪器的开发设计有十分重要的意义。
方案选择
开发usb设备一般有三种方式:一种是使用带usb接口的专用微控制器(mcu),这类mcu有自己的系统结构和指令,从底层专用于usb控制,比如cypress公司的cy7c63xxx和cy7c64013,这类mcu的开发需要用专用工具,且性能有限;第二种方式是使用带usb接口的通用mcu,这类mcu只是基于一般芯片内核增加了usb接口,比如intel公司的8x931、8x930以及cypress公司的ezusb等,这类mcu的开发语言和开发工具都和一般mcu相似,因而较易入手,但其缺点是成本较高;第三种方式是使用纯粹的usb接口芯片,通过外加mcu对其控制。如philips公司的pdiusbd12、isp1581以及national公司的usbn9602、南京沁恒公司的ch372、ch375等。这类usb接口芯片价格较低、接口方便、灵活性高,针对不同的硬件环境可以配合多种mcu使用,如单片机、dsp、fpga都可以。综合各方面因素考虑,本设计选用第三种方式,即采用专用usb接口芯片为测量仪器扩展usb接口。
硬件设计
usb控制器
usb控制器通过控制usb接口芯片实现协议处理和数据交换。在本设计中选用dsp芯片tms320vc33作为微控制器,这主要是基于两方面的考虑:一是其运算速度较快,指令周期仅为13ns,可以最大限度地发挥usb接口芯片的潜力;二是该dsp芯片性价比高,且具有浮点运算功能,扩展浮点精度可达40位。
usb接口芯片
usb接口芯片用以完成usb通信底层的数据链路级交换,并对本地微控制器提供一个并行接口。
本文选用philips公司的pdiusbd12作为usb接口芯片。该芯片可与任何微控制器实现高速并行接口(2mb/s),允许使用现存的体系结构并使固件投资减到最小。这种灵活性减少了开发时间、风险和成本,是开发高效低成本的usb外围设备的一种快捷途径。
pdiusbd12一共有三组端点:端点0完成控制传输;端点1可以配置成中断传输;端点2有128b的缓冲区,是主要的数据传输端点。
接口电路
采用单独地址/数据总线配置,即用dsp的某地址线控制pdiusbd12的a0引脚,实现命令数据的选择。a0=1表示传送命令,a0=0表示传送数据。片选(cs )及挂起(suspend)信号分别由dsp的i/o口控制。读写选通信号wr 、rd 可以用dsp的r/w引脚及其取反后控制。但这样需要在电路中增加反相器,为了节约器件从而缩小电路体积,可以另外选择一个i/o口控制pdiusbd12的读选通rd。本设计中选用page1,通过对不同地址的访问来区分对pdiusbd12的读写操作。这样pdiusbd12只占用微控制器的三个地址资源,其一用来向pdiusbd12写命令,其二用来向pdiusbd12写数据,另外一个用来从pdiusbd12读数据。对dsp而言,pdiusbd12就相当于一个有8位数据总线和3个地址的存储器件。
设备采用自供电方式,需要将eot 通过一个10k?的电阻接至usb电缆的vcc(+5v)端,并加1m?下拉电阻,借此检测usb设备是否已经连接到usb口。
软件设计
usb软件设计包括固件(firmware)程序、pc端的驱动程序和应用程序。其中固件程序要求编写者对复杂的usb通信协议有深刻的理解,编程难度较高,在本论文中将详细介绍。
固件编程
固件程序是写入mcu内的程序,使mcu可以完全按照usb协议,识别接收到的信息包类型,对包的内容、意义进行分析,并按照要求完成相应的动作。通过这些不同类型包的传递,完成mcu与接口芯片的命令及数据交换,进而实现主机与设备间的通信。
固件程序设计成中断驱动模式,采用模块化设计。
主循环
主循环中主要完成dsp的寄存器及端口初始化,向pdiusbd12发送设置模式命令,接通softconnect。判断是否接收到建立包(setup package),若收到则调用标准请求处理程序进行处理,若收到主机请求信号,则调用数据发送程序发送数据。
中断处理程序
中断处理程序是整个固件程序设计的重点。将dsp设置为下降沿触发,当pdiusbd12接收到主机发送的信息包时,触发dsp进入中断。首先通过读取pdiusbd12的中断寄存器判断所发生中断的类型,然后根据具体的中断类型进入相应的处理子程序。
上一篇:内核栈的使用