带全速USB接口的PICl8F4550应用设计
油污和灰尘会影响它的可靠性,主要适合于在实验室和环境较好的车间使用。
2.2 PICl8F4550硬件设计
PIC18F4550的USB接口硬件设计比较简单,而单片机控制的外围设备属于一般单片机设计,可以参照一般PIC单片机的设计方法。对于USB接口,Micrachip公司提供了一套开发套件(Demo板)帮助使用者开发自己的产品。它提供了应用程序、驱动程序和固件,帮助使用者熟悉USB的工作过程;同时,可以直接利用开发套件来扩展外围设备。
图l是一个光栅位移传感器检测系统硬件电路框图,主要实现数据的采集、处理、传输和PWM脉冲的产生等。从光栅传感器输入的信号有5路:±sin,±cos以及零窗信号zero。经差分放大电路合成,分3路进入PIC单片机模拟量输入口进行A/D转换;同时,经差分放大电路合成后的sin、cos信号经过零比较器后转换成数字脉冲信号,然后经D触发器和"与"门电路完成光栅位移的辨向。PIC单片机T0和T1口接收来自"与"门电路的数字脉冲,完成光栅位移的计数(计算光栅尺移动的完整光栅数);PIC单片机RCl口输出4 MHz的PWM脉冲信号作为D触发器的CP信号。计算机的USB接口两根数据线分别接PICl8F4550的D+和D一口,用于完成计算机和单片机之间的数据通信。计算机的USB电源一方面为PIC微处理器提供能源,另一方面通过电源模块转换成±12V电源,为运放电路提供正负电源。
2.3 单片机软件部分设计
单片机的软件部分主要完成光姗位移传感器的数据采集、A/D转换、计算光栅位移传感器的正向、反向莫尔条纹的个数、为数字电路提供CP脉冲以及完成USB的通信等工作。图2是单片机软件部分的流程图。
2.4 PICl8F4550的固件设计
微芯公司提供了一系列的USB寄存器,使用这些寄存器可以完成USB通信。大多数的USB通信都是通过中断来完成的,在USB中断服务程序内,要实现输入/输出接口,允许大多数的USB程序在后台完成。从应用的观点来看,枚举过程和数据通信的发生好像没有联系。
对于单片机控制程序,目前没有任何厂商提供自动生成固件(firmware)的工具,因此所有程序都要由自己手工编制。由于USB协议的复杂性,并且考虑到广大客户的需求,因此,Mictochip公司在推出PIC18F4550系列芯片时,提供了面向不同客户群的DEMO程序,这就大大减轻了系统开发人员的负担,同时缩短了开发周期。本系统的设计就是在Microehip公司提供的DEMO程序的基础上,进行必要的修改来完成的。本设计的具体固件主要由以下8个文件组成。
①main.c:系统的主程序,包括InitializeSystem()和USBTasks(void)两个子程序,主要完成系统的初始化以及其他各种子程序的调用。
②usb9.c:实现的是USB协议第9章的功能,包括枚举总线的接口和核心功能,以及USB的中断服务程序。它处理由USB用户所产生的所有的中断。在这个程序中,主要实现对描述符的枚举以及休眠、复位功能,主要包括USBCheckStdRequest(void)、USBStdGetDscHandler(void)和USBStdFeatureReqHandler(void)等5个子程序。
③usbctrltrf.c:主要实现USB控制传输所需的各种功能,主要由USBCtrlTrfSetupHandler(void)、USBCtr-IEPServieeCompiete(void)和USBPrepareForNextSetupTrf(void)等8个子程序组成。
④usbdrv.e:主要实现与USB驱动相关的功能,包括检查总线状态、USB模块使能、USB模块挂起、远程唤醒等功能;主要由USBSuspend(void)、USBModuleEnable(void)、USBSoftDetach(void)和USBDriverService(void)等12个子程序组成。
⑤usbdsc.c:主要是对该系统的描述,包括厂商、产品号等的描述。
⑥usbgen.c:对USB设备类的配置(在这里把它配置为通用USB类),主要包括USB通用类的初始化端点和读写,由USBGenlnitEP(void)、USBGenRead(byte*buffer,byte len)和USBGenWrite(byte*buffer,bytelen)三个子程序组成。
⑦usbmmap.c:主要用于检查USB在通信过程中,端点号与BDT(缓冲器描述符表)之间的匹配。
⑧user.c:直接面向用户的应用程序,可以帮助用户完成自己的初始化配置、处理数据的读/写、I/O口的处理,设备的请求等。本设计中下位机的大部分功能都是由这个程序来实现的,比如A/D转换及其数据的读取、1MHz的PWM波形产生等。它主要包括UserInit(void)、BlinkUSBStatus(void)、ServiceRequests(void)、ProcessI()(void)、ResetTempLog(void)和ReadPOT(void)六个子程序。
2.5 PC机软件编程
要编写PC机上的软件,可以利用Microchip公司提供的开发工具包。该工具包是一个安装程序,安装后可以在安装日录下找到USB通用的驱动程序、用
USB PICl8F4550 光栅位移传感器 单片机 相关文章:
- 基于S3C44B0X的心电血压监测仪USB接口设计(11-28)
- C8051F320在USB设计中的应用(01-18)
- 基于ISP1581型接口电路的USB2.0接口设计(01-18)
- 用CP2101将USB口扩展成串口(01-18)
- TM1300 PCI-XIO口的UART和USB接口设计(01-17)
- 基于CH371的实用USB接口设计(01-23)