基于DSP的PDIUSBD12芯片的应用开发
发布时间:2008/5/27 0:00:00 访问次数:560
一 pdiusbd12芯片介绍
进行usb开发之前要根据成本与性能选择合适的usb接口芯片。目前usb控制器芯片通常可分成3种:
第一种是专为usb设计的芯片,这类芯片的主要来源是cypress的m8系列和scanlogic的sl11r系列芯片。这种芯片是为了使用在usb应用设备而特别设计的,而不是在旧的结构上改造出来的,因而其功能的实现能够达到最佳化,但是开发起来比较困难,要学全新的指令集,而且价格较较贵。
第二种是与现有的芯片兼容。大部分和8051系列的芯片兼容,如amd公司的am186t和motorola的68hc05/8。这种芯片的优点是开发者已经熟悉现有芯片的结构和指令集,开发起来会比较容易。
第三种是需要外部微处理器接口的usb芯片。这类芯片只负责处理usb通信,它要和另一块单片机芯片一起工作。典型的主要有ns公司的usbn9603、netchip公司的net2888、philip公司的pdiusbd11/12等。使用这样的芯片的最大的好处是硬件的结构有很大的灵活性,便于发挥单片机的优良性能,同时价格便宜。
综合考虑了以上几种芯片后,本课题决定选用philip公司的pdiusbd12芯片。这样可利用对dsp的熟悉的优势,加快产品的开发进程,同时还能提高系统的可扩展性,便于选择高性能的单片机。本芯片只支持usb1.1协议,对于速度要求高的系统可采用后文提到的支持usb2.0协议的信号转换板。
基于usb1.1的philip公司的pdiusbd12芯片结构比较简单,它必须单片机配合才能完成usb通信功能。单片机以读写外部存储器的方式执行pdiusbd12芯片的通信功能命令。芯片产商将给出其具体的usb操作命令。其管脚图说明如图1:
图1 pdiusbd12的管脚图
二 usb-pc104转换板设计
由于嵌入式主板价格昂贵,而在很多应用场合可以用一个成本低的usb外设替代。这里的usb外设意指嵌入式系统本身不能独立运行,需要pc机的软硬件支持。这样的嵌入式系统最先要解决的问题是开发一块usb-pc104信号转换板来替代嵌入式主板。需要转换usb总线与pc104总线的信号的原因在于这样可以让系统既拥有usb设备的优点又有pc104总线设备的高可靠性。采用dsp芯片可以提高系统的速度达到和嵌入式主板总线的要求。
1 硬件设计
硬件设计的主要框图如图2所示:
图2 转换板硬件主体框图
它的主要工作原理是:从主机的应用程序发出的访问pc-104总线设备的命令,经过底层的usb驱动程序将其转换为相应的usb设备标准要求送到usb接口芯片pdiusbd12(以下简称d12),运行于dsp的固件程序接收到这个要求,就会向pc104总线执行相应的命令,从而达到控制pc-104总线硬件的目的。
2 固件程序的开发
固件程序运行在usb外围设备的单片机中,由它响应主机发送过来的usb的各种要求和数据传输。固件的组成主要有两大部分,isr(中断程序)和主程序。中断程序运行在后台,负责usb芯片与单片机mpu的usb要求中断响应与数据传输,中断程序接收到主机发送来的usb要求和数据后就将它转送给主程序并设置相应的标志位。主程序运行在前台,它根据中断程序传给它的数据及标志位而进行实际的硬件动作。后台isr中断服务程序和前台主程序循环之间的数据交换通过事件标志和数据缓冲区来实现的。例如pdiusbd12的批量输出端点可使用循环的数据缓冲区,当pdiusbd12 从usb收到一个数据包那么就对mpu 产生一个中断请求,mpu立即响应中断。在isr中固件将数据包从pdiusbd12内部缓冲区移到循环数据缓冲区并且随后清空pdiusbd12的内部缓冲区以使能接收新的数据包。mpu可以继续它当前的前台任务,直到完成任务后返回到主循环。同时检查循环缓冲区内是否有新的数据并开始其它的前台任务编写固件程序可用汇编语言或者c语言,用c语言得有keil c编译器的支持。但总体上它们的程序框架是一样的。主体程序框架如图3所示:
图3 固件主程序框架
3 驱动程序开发
由于现代操作系统对内存、端口等资源均采取了保护措施。一般的应用程序不能够直接访问硬件,必须通过设备的驱动程序。设备驱动程序直接和硬件打交道的,并且运行于操作系统核心态,它像操作系统内核一样具有最高的运行权限,所以它可以直接访问硬件。
usb设备必须使用wdm(win32 driver model)驱动程序模型,它是microsoft公司定义的win32驱动程序模型。wdm是操作系统发展到现在的一种新型驱动程序模型,现在已经成为windows操作系统驱动程序的主流。
在windows系统下,和应用程
一 pdiusbd12芯片介绍
进行usb开发之前要根据成本与性能选择合适的usb接口芯片。目前usb控制器芯片通常可分成3种:
第一种是专为usb设计的芯片,这类芯片的主要来源是cypress的m8系列和scanlogic的sl11r系列芯片。这种芯片是为了使用在usb应用设备而特别设计的,而不是在旧的结构上改造出来的,因而其功能的实现能够达到最佳化,但是开发起来比较困难,要学全新的指令集,而且价格较较贵。
第二种是与现有的芯片兼容。大部分和8051系列的芯片兼容,如amd公司的am186t和motorola的68hc05/8。这种芯片的优点是开发者已经熟悉现有芯片的结构和指令集,开发起来会比较容易。
第三种是需要外部微处理器接口的usb芯片。这类芯片只负责处理usb通信,它要和另一块单片机芯片一起工作。典型的主要有ns公司的usbn9603、netchip公司的net2888、philip公司的pdiusbd11/12等。使用这样的芯片的最大的好处是硬件的结构有很大的灵活性,便于发挥单片机的优良性能,同时价格便宜。
综合考虑了以上几种芯片后,本课题决定选用philip公司的pdiusbd12芯片。这样可利用对dsp的熟悉的优势,加快产品的开发进程,同时还能提高系统的可扩展性,便于选择高性能的单片机。本芯片只支持usb1.1协议,对于速度要求高的系统可采用后文提到的支持usb2.0协议的信号转换板。
基于usb1.1的philip公司的pdiusbd12芯片结构比较简单,它必须单片机配合才能完成usb通信功能。单片机以读写外部存储器的方式执行pdiusbd12芯片的通信功能命令。芯片产商将给出其具体的usb操作命令。其管脚图说明如图1:
图1 pdiusbd12的管脚图
二 usb-pc104转换板设计
由于嵌入式主板价格昂贵,而在很多应用场合可以用一个成本低的usb外设替代。这里的usb外设意指嵌入式系统本身不能独立运行,需要pc机的软硬件支持。这样的嵌入式系统最先要解决的问题是开发一块usb-pc104信号转换板来替代嵌入式主板。需要转换usb总线与pc104总线的信号的原因在于这样可以让系统既拥有usb设备的优点又有pc104总线设备的高可靠性。采用dsp芯片可以提高系统的速度达到和嵌入式主板总线的要求。
1 硬件设计
硬件设计的主要框图如图2所示:
图2 转换板硬件主体框图
它的主要工作原理是:从主机的应用程序发出的访问pc-104总线设备的命令,经过底层的usb驱动程序将其转换为相应的usb设备标准要求送到usb接口芯片pdiusbd12(以下简称d12),运行于dsp的固件程序接收到这个要求,就会向pc104总线执行相应的命令,从而达到控制pc-104总线硬件的目的。
2 固件程序的开发
固件程序运行在usb外围设备的单片机中,由它响应主机发送过来的usb的各种要求和数据传输。固件的组成主要有两大部分,isr(中断程序)和主程序。中断程序运行在后台,负责usb芯片与单片机mpu的usb要求中断响应与数据传输,中断程序接收到主机发送来的usb要求和数据后就将它转送给主程序并设置相应的标志位。主程序运行在前台,它根据中断程序传给它的数据及标志位而进行实际的硬件动作。后台isr中断服务程序和前台主程序循环之间的数据交换通过事件标志和数据缓冲区来实现的。例如pdiusbd12的批量输出端点可使用循环的数据缓冲区,当pdiusbd12 从usb收到一个数据包那么就对mpu 产生一个中断请求,mpu立即响应中断。在isr中固件将数据包从pdiusbd12内部缓冲区移到循环数据缓冲区并且随后清空pdiusbd12的内部缓冲区以使能接收新的数据包。mpu可以继续它当前的前台任务,直到完成任务后返回到主循环。同时检查循环缓冲区内是否有新的数据并开始其它的前台任务编写固件程序可用汇编语言或者c语言,用c语言得有keil c编译器的支持。但总体上它们的程序框架是一样的。主体程序框架如图3所示:
图3 固件主程序框架
3 驱动程序开发
由于现代操作系统对内存、端口等资源均采取了保护措施。一般的应用程序不能够直接访问硬件,必须通过设备的驱动程序。设备驱动程序直接和硬件打交道的,并且运行于操作系统核心态,它像操作系统内核一样具有最高的运行权限,所以它可以直接访问硬件。
usb设备必须使用wdm(win32 driver model)驱动程序模型,它是microsoft公司定义的win32驱动程序模型。wdm是操作系统发展到现在的一种新型驱动程序模型,现在已经成为windows操作系统驱动程序的主流。
在windows系统下,和应用程