带全速USB接口的PICl8F4550应用设计

发布者:ByteChaser最新更新时间:2011-05-21 关键字:全速USB接口  PIC18F455O  光栅位移传感器  固件 手机看文章 扫描二维码
随时随地手机看文章

  引 言

  随着USB(Universal Scrial Bus)技术的发展,特别是高速(480 Mbps)USB2.0协议的出现,几乎所有的PC外设都可以移植到USB上,所以USB的PC外设的发展空间是巨大的,甚至在不久的将来,USB将完全取代异步串口和打印机并口,PC机厂商将不会再生产机箱上带异步串口和打印机并口的PC机了,机箱上也不会再有那么多的连线了。

  USB是一种快速的、双向同步传输的、廉价并可以进行热插拔的串行接口。利用USB总线技术,开发适用于科学研究和工业生产的各种仪器仪表设备,借以取代传统计算机测控系统中采用串行RS232或并行接几的仪器仪表设备,使计算机测控系统更加高效实时,方便灵活。

  利用USB总线的数据采集方案有两种,一种是采用普通单片机加上专用的USB通信芯片。该方案可充分利用开发人员原有的硬件资源和软件知识,开发成本较低,但系统的设计和调试较为麻烦,且电磁兼容性差,容易造成主机不能识别USB设备。另一种是利用具有USB接口功能的单片机。使用这些专用芯片构成的数据采集系统电路设计简单,调试方便,电磁兼容性好。然而,目前大部分具有USB功能的单片机都是专门针对个人计算机外围设备或消费市场的需要而设计的,忽略了嵌入式工程师的需要。Microchip公司新款PIC18F4550系列单片机的问世,为广泛的嵌入式应用增添了全速USB的优势,即使遇到恶劣的操作环境或在只能不定时地连接个人计算机的情况下,也能正常工作。

  本文以光栅位移传感器检测系统的设计为背景,详细介绍了带全速USB接口的单片机PICl8F4550的应用设计方法。

  1 PICl8F4550介绍

  PICl8F4550是Microchip公司最新生产的带全速USB接口的8位高档单片机,芯片为40/44脚封装。该单片机除了具有PIC单片机所特有的精简指令集(RISC)、数据总线和指令总线相互独立的哈佛(Harvard)结构等特点外,还配备了自编程闪存存储器以及纳瓦节能技术,工作频率达48 MHz,数据传输速率高达12 Mbps。另外,还具有Microchip先进PMOS电可擦除单元(PEEC)闪存技术,耐擦写次数可高达100万次,而数据保存期能超过40年。因而该芯片有很强的控制能力和灵活的工作方式。[page]

  新器件的全速USB 2.O接口具有1 KB双重存取RAM,支持高达32个端点(双向16对)和2种数据传输速率(即全速模式12 Mbps和低速模式1.5 Mbps),具有USB协议所规定的4种数据传输方式(控制传输方式、中断传输方式、批量传输方式和实时传输方式)。该接口包括一个片上收发器和一个并行流端口,能把数据直接传送到外部的设备,不仅减小了CPU的开销,而且大大增强了系统的抗干扰能力和工作可靠性。

  PICl8F4550的硬件资源菲常丰富,包含33个I/O,I/O端口为端口A、B、C、D、E;具有多个中断源和1个中断优先级选择,4个定时器,32 KB程序闪存,256字节EEP-ROM数据存储器,2 048字节数据随机存储器以及8×8硬件乘法器;集成了13通道的10位A/D转换器,2个CCP(比较/捕捉/PWM)模块.1个增强型CCP模块和1个看门狗;具有省电功能的休眠模式;1个USART不仅支持异步与同步的串行通信,而且支持LIN总线;2个模拟比较器,支持I2C和SPI通信的主控同步串行端口,可编程欠压复位及低电压检测电路等。

  PIC18F4550单片机的一个关键特性在于它配备了32 KB自编程增强型闪存。使得设计人员可以通过USB端口对最终应用进行现场升级。结合新器件配备的一系列片上外设和纳瓦技术(nanoWatt)的功耗管理功能,使其非常适用于多种嵌入式应用,包括工业、医疗、汽车、电池供电和消费类产品等。

  2 PICl8F4550的设计应用

  2.1 光栅位移传感器的基本工作原理、特点

  光栅位移传感器的基本工作原理是利用一对光栅,其中一块是固定的.而男一块是运动的。当它们发生相对运动并有光通过两者时.能够获得相当于干涉仪中得到的条纹信号,即所谓的“莫尔条纹信号”。对于一对计量光栅,彼此移动一条刻槽(现代计量光栅常采用4~250 L/mm)就移动一条莫尔条纹。条纹宽度不受波长影响。并且条纹较宽可进行内插.由于误差平均效应,因而可以获得很高的精度。与普通位移传感器相比,它有以下几个特点:[page]

  ①精度高。光栅位移传感器在大量程测量长度或直线位移方面仅仅低于激光干涉传感器;在圆分度和角位移测量方面,光栅式传感器属于精度最高的。

  ②大量程测量兼有高分辨率。感应同步器和磁栅式传感器也具有大量程测量的特点,但分辨力和精度都不如光栅位移传感器。

  ③可动态测量,易于实现测量及数据处理自动化。

  ④具有较强的抗干扰能力,对环境条件的要求不像激光干涉传感器那么严格,但不如感应同步器和磁栅式传感器的适应性强。油污和灰尘会影响它的可靠性,主要适合于在实验室和环境较好的车间使用。

  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电源,为运放电路提供正负电源。[page]

带全速USB接口的PICl8F4550应用设计

  2.3 单片机软件部分设计

  单片机的软件部分主要完成光姗位移传感器的数据采集、A/D转换、计算光栅位移传感器的正向、反向莫尔条纹的个数、为数字电路提供CP脉冲以及完成USB的通信等工作。图2是单片机软件部分的流程图。

带全速USB接口的PICl8F4550应用设计

  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个子程序。[page]

  ③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通用的驱动程序、用Borland C编写的应用程序、一些固件代码,以及编写应用程序所需的API函数等。对于一般的应用,驱动程序可以直接使用,无需重编。在编程中主要用到以下7个API函数:MPUSBGetDLL Version(),返回DLL的版本号;MPUSB—GetDeviceCount(),返回连接设备的数目;MPUSBOpen(),返回指定pVID_PID和pEP的USB设备端点的句柄,返回的是一个端点句柄;MPUSBRead(),从IN端点读取数据并填入缓冲区;MPUSBWrite(),对一个OUT端点写入数据并使用pData缓冲区;MPusBReadInt(),从Interrupt IN端点读取数据并填入缓冲区;MPUSBClose(),关闭一个端点的句柄。因为Mierochip公司提供的MPUSBAPLDLL源程序是用Borland C编写的,这一程序无法在VC环境下编译,所以也不能产生隐式调用所需的.LIB文件,因此本设计在使用DLL时用的是显式链接。

  PC机的软件部分主要用于实现上位机同下位机之间的USB通信,光栅位移传感器位移信号的细分和显示等功能。实现这一功能的方法有很多种,比如采用简单的VB、数据处理能力很强的Delphi,或国内外广泛采用的Borland C和VC等。为了下一步的软件开发以及与厂家的其他软件接口,本系统上位机的软件部分采用VC++6.0来实现。图3是PC机软件部分的流程图。

带全速USB接口的PICl8F4550应用设计

  结 语

  选择何种芯片来设计嵌入式系统,需要根据系统的需求、设计的难易程度和性价比等几个方面来考虑。Micro-chip公司为PICl8F4550系列单片机提供通用的驱动程序、API函数、DEMO板和一系列范例程序等。其中,一些固件的端点与PC机通信的子程序可以直接调用,而不需要重写,从而大大提高了开发效率,缩短了产品的研发周期,这势必会导致该系列单片机会很快占据一部分USB接口市场。正是由于USB的诸多优点和光栅位移传感器有着很多其他位移传感器无法比拟的优点,因此,本设计的应用也将会越来越广泛。

 

 

 

关键字:全速USB接口  PIC18F455O  光栅位移传感器  固件 引用地址:带全速USB接口的PICl8F4550应用设计

上一篇:触摸传感器QST108与PIC16F877A单片机的接口设计
下一篇:USB闪存盘驱动器与PIC微控制器的接口设计

推荐阅读最新更新时间:2024-03-16 12:35

STM32基于固件库学习笔记(5)电源管理之低功耗模式
低功耗模式 功耗的高低,决定了系统工作的时间,在需要长久间隔时间检测数据,又不可能人实时去操作的项目,最先考虑的就是功耗问题了, 功耗越低产品使用时间就更久。也就是说当CPU不需继续运行时,就可以利用多种低功耗模式来节省功耗,例如等待某个外部事件时。 用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。 STM32F10xx有三种低功耗模式: 1. 睡眠模式:(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行) 2. 停止模式: 所有的时钟都停止。 3. 待机模式: 1.8V电源关闭,是最低功耗模式   当处于运行模
[单片机]
STM32基于<font color='red'>固件</font>库学习笔记(5)电源管理之低功耗模式
STM32 USATR固件库中定义的几个中断标志的含义
在stm32f10x_usart.h中有以下宏定义: #define USART_IT_PE ((uint16_t)0x0028) #define USART_IT_TXE ((uint16_t)0x0727) #define USART_IT_TC ((uint16_t)0x0626) #define USART_IT_RXNE ((uint16_t)0x0525) #define USART_IT_IDLE ((uint16_t)0x0424) #define USART_IT_LBD ((uint16
[单片机]
STM32 HAL固件库编程的文件构架
  对于我这种以前只接触过51和AVR单片机编程的小菜来说,现在开始学习STM32的编程,对于函数的功能以及C语言的语法都还好理解,难的是它提供的那一套硬件抽象层(HAL)驱动是怎么和其他的东东搭配在一起组成一个又一个的工程。   首先上两张从ST官方提供的HAL固件库文档截图 从这两张图的话,能对它的构架看出个一二,下面稍稍具体一点分析   HAL固件库编程,它的文件组织大致分三个部分     - HAL驱动     - CMSIS驱动     - 用户编写程序 而假如你使用的是ST官网的开发板,那么你还有一套现成的驱动可供使用,板级支持包(BSP),那么正好向我一样,但是,我不太喜欢使用这个东西,能自己写还是自己写的好。
[单片机]
STM32 HAL<font color='red'>固件</font>库编程的文件构架
美高森美和SiFive推出HiFive Unleashed扩展板 助力Linux软件和固件
致力于在功耗、安全、可靠性和性能方面提供差异化的领先半导体技术方案供应商美高森美公司(Microsemi Corporation,纽约纳斯达克交易所代号:MSCC) 宣布推出与首家定制开源半导体产品的无晶圆厂供应商SiFive最新合作开发的HiFive Unleashed扩展板。SiFive作为美高森美Mi-V™ RISC-V生态系统合作伙伴,利用两个公司的战略关系,扩展了SiFive的HiFive Unleashed RISC-V开发板的功能,进而使固件工程师和软件工程师能够在1GHz 以上 RISC-V 64位中央处理单元(CPU)上编写基于Linux应用程序。 美高森美的HiFive Unleashed扩展
[电源管理]
美高森美和SiFive推出HiFive Unleashed扩展板 助力Linux软件和<font color='red'>固件</font>
教你LPC54102双核套件固件库SPI的用法
  最近进度有点慢。现在把我SPI这部分分享下吧。这次我使用SPI0和I2C2这两个模块,I2C2负责采集MPU6050的数据,然后用OLED刷新数据。   SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议,在LPC5410中有两个SPI的模块,分别是SPI0和SPI1。   SPI根据SPI时钟极性的极性和SPI时钟相位,SPI时钟极性CPOL, =0表示在没有数据传输时为低电平,= 1
[单片机]
教你LPC54102双核套件<font color='red'>固件</font>库SPI的用法
特斯拉发布Model S最新固件 用手机启动汽车
    根据国外媒体报道,特斯拉日前终于开始向Model S的车主推送最新的6.0版本固件升级了。本次升级将带来一系列的新功能,包括基于交通的导航。 在升级到最新版固件之后,系统将能够从其他Model S车主那里获取到交通状况。随后,汽车的软件可以在你上路之前就分析出本次通勤会面临的交通状况,并据此提供相应的备选路线。 升级还将给Model S的触控面板上带来一个新的日历,它可从车主的智能手机当中获取到预约信息。如果用户的会面安排当中附带着地址,便可通过点击该项目直接获得方向导航。 通过最新的手机应用升级,特斯拉让车主们可以仅凭智能手机和密码来解锁自己的Model S。而现在,最新的固件升级也让汽车
[汽车电子]
STM32F103C8T6实现串口IAP方式升级固件
首先下载官方STM32F10X的IAP Bootloader源码,STM32F10x_AN2557_FW_V3.3.0。 源码包地址:http://download.csdn.net/download/yunyin_link/10151170 用Keil4打开工程代码STM32F10x_AN2557_FW_V3.3.0\Project\IAP\MDK-ARM\IAP.uvproj 第一步:因为我们是用的STM32F103C8T6 是64K Flash,所以特别重要的是修改Flash宏,如下图示,改为:STM32F10X_MD。 代码中对不同规格的Flash做了处理。 第二步:限定一下IAP Boot
[单片机]
STM32F103C8T6实现串口IAP方式升级<font color='red'>固件</font>
SST的新型移动平台处理器集成了8Mb LPC固件闪存
SST(Silicon Storage Technology, Inc.)公司为便携式产品开发了一款移动平台控制器SST79LF008,它在单一芯片中集成了键盘控制器、电源管理控制器和8Mb LPC固件闪存。 SST为便携式产品开发了一款移动平台控制器SST79LF008。 SST79LF008移动平台控制器提供比标准8051微控制器更高的性能。SST79LF008移动平台控制器利用SST公司的专利SuperFlash技术,具有8Mb LPC固件闪存和SST公司扩展的高性能8051微控制器内核,3个或者6个时钟机器周期,33MHz的最大运行始终频率。三线Alternate LPC(aLPC)接口能够采用A
[新品]
热门资源推荐
热门放大器推荐
  •  pdf文件传感器应用技术 (张跃东)
  •  pdf文件传感器原理及工程应用 (郁有文,常健,程继红)
  •  pdf文件传感器与自动检测技术
  •  pdf文件无线电安全攻防大揭秘
  • 系统发生错误

    系统发生错误

    您可以选择 [ 重试 ] [ 返回 ] 或者 [ 回到首页 ]

    [ 错误信息 ]

    页面错误!请稍后再试~

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved