单片机USB固件设计的实现

发布者:水云间梦最新更新时间:2018-03-06 来源: eefocus关键字:单片机  USB固件 手机看文章 扫描二维码
随时随地手机看文章

  USB固件分为通用枚举配置部分和类协议部分。以利用CH375主机端协议与大容量存储设备(例如U盘等)通信为例,介绍固件编程中重要的函数及其实现方法。
  
  主机要想识别USB设备,必须获得设备的各种描述符。首先,以设备描述符为例,说明USB描述符的一般定义方法:

义方法

  设备描述符的定义方式是固定的。主机与USB设备通信时,将依次获得描述符各字段的内容。对于除设备描述符外的配置描述符、接口描述符、端点描述符和类描述符等,定义基本类似。按照枚举的要求发送相应的描述符字段,就可以完成对USB设备的识别与配置。
  
  特定的USB设备要想正常工作,就必须建立特定的设备类协议。目前有人机接口设备HID类、大容量存储设备Mass Storage类和音频类等设备类型。以Mass Storage类为例,它主要包含Bulk-Only传输协议和UFI命令集子类两方面的内容。从软件的角度讲,Bulk-Only传输协议的实现是通过调用Bulk_Transfer_OUT()和Bulk_Transfer_IN()这两个批量传输函数实现的,也就是利用批量传输函数来发送和接收Mass Storage的命令块封包CBW、命令状态封包CSW以及数据。UFI命令则又是在Bulk-Only协议的基础上来发送特定的请求命令,实现对USB设备内的Flash进行读和写。
  
  由于CH375内置了常用的USB固件以及大容量存储器的通信协议,固件开发就变的相对简单。我们所要做的就是利用CH375提供的库函数,正确的调用设备类命令。命令函数集请查阅相关资料。CH375在工作之前,首先要进行芯片初始化。
  
  CH375初始化程序如下:

CH375初始化程序

  基本上所有对CH375的操作是以调用命令函数ExeCCommand来实现的。因为接口操作比较复杂,所以直接使用ExecCommand子程序就可以了。
  
  基本操作步骤是,单片机系统将命令码(cmd)、后续参数长度(len)和参数写给接口芯片,芯片执行完成后以中断方式通知单片机,并返回操作状态和操作结果。如果命令执行失败,那么只返回状态码,不返回任何结果数据。如果命令执行成功,才有可能返回结果数据,而且有些命令总是不返回任何结果数据。输入参数和返回参数都在CMD_PARAM结构中。
  
  CH375提供的开放的命令库函数如下:

命令库函数

命令库函数

  对USB协议栈的编写,关键是合理、有效地使用USB接口芯片中的寄存器。USB的协议栈以设备端点的使用和管理作为基础和核心。而在端点的这些寄存器中,对中断寄存器的管理尤其重要,而且编写USB的中断服务程序是整个设备端USB固件编写的主要内容。
  
  中断服务程序的功能主要是处理USB发送和接收的不同通信信息;从端点0获得主机的控制信息,或是向端点0发送设备的描述信息;以及向其他端点发送完整的数据。能够触发USB中断的条件很多,中断服务程序的任务就是分辨这些触发条件,然后转入相应的处理程序中。
  
  软件流程请参阅相关资料。识别操作CH375返回状态的中断服务程序如下:

中断服务程序


关键字:单片机  USB固件 引用地址:单片机USB固件设计的实现

上一篇:C语言main函数的标准定义
下一篇:滤波软件的程序实例

推荐阅读最新更新时间:2024-03-16 15:56

PIC单片机如何实现单按键输入LED灯点亮
IO输出和输入 /* 按键连接RB1,点亮LED,PORTA RA0控制输出。按一次点亮,再按一次熄灭,如此循环。 RB外接上拉电阻。 */ #include #define uchar unsigned char #define uint unsigned int // CONFIG #pragma config FOSC = HS // #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = OFF // Power-up TImer Enable bit (PWRT disabled) #p
[单片机]
PIC<font color='red'>单片机</font>如何实现单按键输入LED灯点亮
PIC系列单片机应用设计与实例
   一.引言      在微 控制器 (Microcontroller)应用领域日益广泛的今天,各个领域的应用也向微控制器厂商提出了更高要求,希望速度更快、功耗更低、体积更小、价格更廉以及组成系统时所需要的外围器件更少;随着越来越多的各种非电子工程技术人员的应用需求,他们想把微控制器作为嵌入式部件应用到自己熟悉的领域中,还提出简单易学易用的要求。用户的需求就是厂商的市场和动力,老的半导体厂商顺应潮流不断推出新品种,新的半导体厂商则后来居上,把越来越多的外围接口器件集成到片内,功能越来越强、性能越来越高。迄今至少也有35家国外半导体厂商的微控制器进入中国市场。在这众多的五彩缤纷的微控制器中,美国Microchip技术公司的PIC系
[应用]
具有高性价比的无线 MCU 如何帮助您将低功耗 Bluetooth®︎ 技术应用到更多产品中
具有高性价比的无线 MCU 如何帮助您将低功耗 Bluetooth®︎ 技术应用到更多产品中 环顾我们当前日常生活中的 Bluetooth® 应用,我们有理由期待未来世界能够实现更高程度的互联。 据蓝牙技术联盟(SIG)估计,蓝牙设备的年出货量将在 2026 年超过 70 亿。在医疗设备、玩具、个人电子产品、智能家居设备等领域,市场需要更高的蓝牙集成度。为满足该市场需求,富有创新精神的工程师将有机会大展拳脚。 蓝牙在医疗领域的发展趋势 蓝牙功能在医疗方面的应用越来越多,包括血糖监测仪、医疗传感器贴片,甚至还有智能牙刷。对于设计者来说,需要满足消费者对以下特性的需求: • 尺寸小巧且便于使用。没有人希望在使
[网络通信]
具有高性价比的无线 <font color='red'>MCU</font> 如何帮助您将低功耗 Bluetooth®︎ 技术应用到更多产品中
变频控制系统单片机外围电路设计探讨
  本次设计采用选择PHILIPS半导体公司带手动复位功能的产品MAX708。MAX708还可以监视第二个电源信号,为处理器提供电压跌落的预警功能,利用此功能,系统可在电源跌落时到复位前执行某些安全操作,保存参数,发送警报信号或切换后备电池等。   另外,系统还扩展了可编程外围芯片PSD303。由于系统的 I/O口数量与实际所需数量还有很大的差距,故系统又扩展了两片8255A,一片用于接键盘和显示电路,一片用于接触发信号、紧急停车信号等。   一、键盘与显示电路   在本次设计中,设置了一个9按键的操作电路,以代替实际现场的操作按钮。6位的LED显示电路用于显示转速、电流、以及调试时的相关项的显示。   另外,为了便于现场
[单片机]
自己做的单片机音乐盒,外加LED做数码管显示数字
单片机源程序如下: #include reg52.h #define uint unsigned int #define uchar unsigned char sbit speaker=P1^4;//喇叭接30脚 sbit key1=P1^0;//流水灯按键(暂时) sbit key2=P1^1;//播放音乐按键(暂定) uchar a,b,num1,s1num,n1,n2; uchar qushu=0; char num;//定义num为可以负数 uchar code yinfu ={0xfb,0xe9, //Do 0xfc,0x5c, //Re 0xfc,0xc1,
[单片机]
自己做的<font color='red'>单片机</font>音乐盒,外加LED做数码管显示数字
基于单片机的四相步进电机控制设计
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 设计要求: 采用定时中断方式控制步进机的转速,定时单位时长为10ms。 速度设置在1/2/3/4四个档位,1档最快,依次递减,能够控制步进电机的停、转和方向,同时显示步进机的当前档位。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[单片机]
基于<font color='red'>单片机</font>的四相步进电机控制设计
Microchip推出体积最小、成本最低的全新PIC32单片机
全球领先的整合单片机、模拟器件和闪存专利解决方案的供应商——Microchip Technology Inc.(美国微芯科技公司)宣布,推出全新低引脚数的32位PIC32单片机(MCU)系列,以小至5 mm × 5 mm的封装为空间受限和成本敏感的设计提供了61 DMIPS的性能。PIC32“MX1”和“MX2”MCU是体积最小、成本最低的PIC32单片机,也是第一款具有专用音频和电容式传感外设的PIC32单片机。这些新型MCU还包括众多其他有用功能,适合消费类、工业、医疗和汽车市场的各类应用。观看新产品演示介绍,请浏览: http://www.microchip.com/get/UL4G 。 PIC32 MX1和MX2 MC
[单片机]
基于单片机PIC18F66J10的主动放线机设计
0 引言 速度是工业生产中的主要被控参数之一,与之相关的各种速度控制系统已被广泛应用于冶金、化工、机械、食品等领域。本文介绍的主动放线机速度自动控制系统适用于微细金属线的恒张力主动放线,可广泛用于拉丝机、绕线机的前端放线,并可在放线过程中保持金属线的张力恒定。适用的线材有金、银、铜、铝等,放线速度为0~700 rpm,线径可达φ0.05 mm,张力控制可通过摆臂一边悬挂的砝码来手动调整。 整个系统选用六线式单极性步进电机为执行部件,具有低成本和控制方法简单的优点,核心控制芯片选用美国Microchip公司的PIC单片机PIC18F66J10,该芯片具有实用可靠、代码保密性好、片内集成有模拟、数字功能部件等优点。而系统选用美国A
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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