USB接口单片机SL11R的特点及应用
时间:07-10
来源:电子技术应用
点击:
3.2.2 SL11R的USB接口编程
SL11R的大部分功能都可以通过BIOS调用实现。USB的编程也是调用BIOS实现。SL11R复位后会自动配置USB接口,与主机建立USB通讯,一般情况下开发者可以不进行干预。
开发者主要使用的与USB有关的BIOS软件中断:
·USB_STAND_INT、USB_CLASS_INT、USB_VENDOR_
INT、USB_FINISH_INT 这些中断主要是为了实现USB通讯,其中USB_VENDOR_INT是接受主机控制指令中断,主机对SL11R的控制基本上都是通过它实现的。
·USB_SEND_INT、USB_RECEIVE_INT这两个中断用于USB发送、接收数据。可以通过配置,分别使用USB的四个端口。
3.3 主机软件设计
要开发SL11R主机软件,一种简单、快捷的方式是借助于SL11R开发工具包(SL11R DVK)。通过学习工具包中附带的例子程序可以在较短的时间内开发出一个应用软件,用户不需自己开发驱动程序。该工具包可以从ScanLogic公司的网站(www.scanlogic.com)下载得到。工具包中包括的内容有:通用驱动程序、例子程序和开发用的文档资料。对于一般的开发工作可以直接使用工具包中的驱动。用于Windows98系统的三个文件分别是: slusbgen.sys、usb2epp.sys和usbdev.inf。
在AppWizard (zip)源代码包中,可以找到用VC写成的主机例子程序(usbtest.exe)的源代码。其中有几个文件对利用ScanLogic公司提供的驱动程序来开发应用程序很有帮助。在头文件slusb.h中含有如下函数原型:
BOOL FAR PASCAL CloseUsbDev(VOID); //关闭USB口
BOOL FAR PASCAL FindUsbDev(WORD wProd); //打开USB口
BOOL UsbVendorCmdRead(BYTE bCmd,WORD wValue,
WORD wIndex, WORD wLen, PVOID pData); //发送读控制指令
BOOL UsbVendorCmdWrite(BYTE bCmd, WORD wValue,
WORD wIndex, WORD wLen, PVOID pData); //发送写控制指令
BOOL UsbDataRead(DWORD n, PVOID pData); //读数据块
BOOL UsbDataWrite(DWORD n, PVOID pData); //写数据块
只要在应用程序中灵活用好以上几个函数,做一些简单的数据采集工作是完全可行的,笔者就是借用这几个函数在实际工作中成功完成了应用系统的开发。
文件devioctl.h包含有slusb.h中需要的常数和宏的定义。在文件usbtest.cpp中定义了控制SL11R操作的指令代码。
SL11R是一种功能强大的USB接口单片机,它的16位总线及DMA传输模式允许进行大容量数据的高速传输,可以进行高速数据采集。而且SL11R的编程简单,无需专用开发装置,开发成本低,初次接触USB的开发人员可以很容易实现应用系统的开发。
SL11R的大部分功能都可以通过BIOS调用实现。USB的编程也是调用BIOS实现。SL11R复位后会自动配置USB接口,与主机建立USB通讯,一般情况下开发者可以不进行干预。
开发者主要使用的与USB有关的BIOS软件中断:
·USB_STAND_INT、USB_CLASS_INT、USB_VENDOR_
INT、USB_FINISH_INT 这些中断主要是为了实现USB通讯,其中USB_VENDOR_INT是接受主机控制指令中断,主机对SL11R的控制基本上都是通过它实现的。
·USB_SEND_INT、USB_RECEIVE_INT这两个中断用于USB发送、接收数据。可以通过配置,分别使用USB的四个端口。
3.3 主机软件设计
要开发SL11R主机软件,一种简单、快捷的方式是借助于SL11R开发工具包(SL11R DVK)。通过学习工具包中附带的例子程序可以在较短的时间内开发出一个应用软件,用户不需自己开发驱动程序。该工具包可以从ScanLogic公司的网站(www.scanlogic.com)下载得到。工具包中包括的内容有:通用驱动程序、例子程序和开发用的文档资料。对于一般的开发工作可以直接使用工具包中的驱动。用于Windows98系统的三个文件分别是: slusbgen.sys、usb2epp.sys和usbdev.inf。
在AppWizard (zip)源代码包中,可以找到用VC写成的主机例子程序(usbtest.exe)的源代码。其中有几个文件对利用ScanLogic公司提供的驱动程序来开发应用程序很有帮助。在头文件slusb.h中含有如下函数原型:
BOOL FAR PASCAL CloseUsbDev(VOID); //关闭USB口
BOOL FAR PASCAL FindUsbDev(WORD wProd); //打开USB口
BOOL UsbVendorCmdRead(BYTE bCmd,WORD wValue,
WORD wIndex, WORD wLen, PVOID pData); //发送读控制指令
BOOL UsbVendorCmdWrite(BYTE bCmd, WORD wValue,
WORD wIndex, WORD wLen, PVOID pData); //发送写控制指令
BOOL UsbDataRead(DWORD n, PVOID pData); //读数据块
BOOL UsbDataWrite(DWORD n, PVOID pData); //写数据块
只要在应用程序中灵活用好以上几个函数,做一些简单的数据采集工作是完全可行的,笔者就是借用这几个函数在实际工作中成功完成了应用系统的开发。
文件devioctl.h包含有slusb.h中需要的常数和宏的定义。在文件usbtest.cpp中定义了控制SL11R操作的指令代码。
SL11R是一种功能强大的USB接口单片机,它的16位总线及DMA传输模式允许进行大容量数据的高速传输,可以进行高速数据采集。而且SL11R的编程简单,无需专用开发装置,开发成本低,初次接触USB的开发人员可以很容易实现应用系统的开发。
- 将串行应用移植到USB接口的简便方法(03-15)
- 基于ARM的远距离便携式无线传输系统(08-05)
- RS232接口转USB接口的通信方法(01-12)
- 无线收发器CC2531的USB接口设计(03-28)
- 基于USB串口多点温度采集系统的设计(04-12)
- 基于MODEM的单片机与PC机间的远程通信(07-06)