USB固件开发流程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
USB固件开发流程

USB固件开发流程.txt我这人从不记仇,一般有仇当场我就报了。没什么事不要找我,有事更不用找我!就算是believe中间也藏了一个lie!我那么喜欢你,你喜欢我一下会死啊?我又不是人民币,怎么能让人人都喜欢我?标题:USB固件开发流程2008-10-20 17:11:35 由于固件架构和固件的函数库的开发环境是Keil C51,所以针对本系统的开发也是基于这个开发环境。下图的项目窗口反映了对于本设计所需要的文件: 文件描叙如下: (1)FW.C-固件框架,处理USB的请求和调用工作分配器中的函数。 (2)gpif.c-包含波形描述符表的文件,实现GPIF传输的波形。 (3)gpif_fifo_rw.c-用户应用程序代码,修改TD-Poll()和TD-Init()以满足用户的要求。 (4)DSCR.A51-设备描述符表。报告在FX2设备中使用哪些端点,如何配置等信息。本设计中设置EP0作为控制传输端点,EP2作为USB OUT传输端点,EP6作为USB IN传输端点。 (5)USBjmpTb.OBJ-中断向量跳转表:USB中断源INT2和GPIF/SLAVE FIFO中断源INT4。 (6)Ezusb.lib-处理设备挂起(suspend),重新开始操作 resume ,I2C串口操作的函数集。 初始化: 首先在对设备读写之前,对CY7C68013的寄存器进行初始设置,这部分工作在TD_Init 函数中实现。位于gpif_fifo_rw.c文件中。实现其设置的代码如下: void TD_Init void CPUCS CPUCS ~ bmCLKSPD | bmCLKSPD1 ; // 配置芯片时钟方式 GpifInit ; // 初始GPIF波形 EP2CFG 0xA0; // 配置端点2 out BULK传输模式 512字节 EP6CFG 0xE0; // 配置端点6 in BULK传输模式 512字节 4 倍缓存区 EP4CFG 0x00; // 无效端点4 EP8CFG 0x00; // 无效端点8 …… EP2FIFOCFG 0x11; // 设置端点2的USB传输方式 AUTOOUT 1 EP6FIFOCFG 0x09; // 设置端点6的USB传输方式 AUTOIN 1 …… EP2GPIFFLGSEL 0x01; // 设置端点2输出的GPIF标识 OUT传输 FS1 0 ,FS0 1 空标志有效 EP6GPIFFLGSEL 0x02; //设置端点6的输入GPIF标识 IN传输 FS1 1 ,FS0 0 满标志有效 …… //配置GPIF以数据流状态传输 FLOWLOGIC FlowStates[19]; FLOWSTB FlowStates[23]; GPIFHOLDAMOUNT FlowStates[26]; FLOWSTBEDGE FlowStates[24]; FLOWSTBHPERIOD FlowStates[25]; …… 利用GPIF实现对控制器数据流的控制: (1)单字的读写 为了区分所操作的数据来自哪个寄存器,在设备请求剖析器中的DR_VendorCmnd void 函数编写不同的用户请求命令程序,如发送设备请求命令OxB3,表示读通道寄存器,然后在DR_VendorCmnd void 中写相应的处理代码。以下是DR_VendorCmnd void 中读通道寄存器的部分代码: 单字的读: DR_VendorCmnd void switch SETUPDAT[ 1 ] …… case VX_B3: //单字读取 Peripheral_SetAddress 0x0002 ; //设置读取寄存器的地址 Peripheral_SingleWordRead gdata2 ;//调用单字节波形读取通道寄存器 EP0BUF[0] VX_B3; //标准请求 EP0BUF[1] gdata2 8; //高8位 EP0BUF[2] gdata2 ; //低8位 EP0BCH 0; //发送到上位机 EP0BCL 3; EP0CS | bmHSNAK; break; …… 单字的写: 单字写代码如下: DR_VendorCmnd void switch SETUPDAT[ 1 ] …… case VX_B4: //单字读取 Peripheral_SetAddress 0x0002 ; //设置读取寄存器的地址 Peripheral_SingleWordWrite gdata2 ;//调用单字节波形写取通道寄存器 EP0BUF[0] VX_B4

文档评论(0)

peain + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档