版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.EZ-USB 68013A开发指南Airhand 2006-4-51. 元器件CYPRESS 68013A:支持USB 2.0协议,带增强型8051单片机,时钟频率48Mhz。支持串口通讯。2. 文档cy7c68013.pdf68013外设手册cy7c68013_5.pdf68013外设手册CY3684_A_SCH.PDF68013A外围电路图FX2 TechRefManual.pdfEZUSB-FX2技术手册fx2_to_fx2lp.pdfFX2和FX2LP的区别CYAPI.PDFCYAPI手册 高级类库CYUSB.PDFCYUSB手册 底层
2、API3. 开发环境3.1 Keil C 7.0编译器3.2 C+ Builder 6.03.3 VC+ 6.03.4 EEPROM烧写器3.5 68013A的开发包含CYPRESS CONSOLE、CYUSB.SYS、例程等3.6 BUS HOUND 5.04. 开发流程4.1 硬件程序编写1根据CYPRESS的例如程序建立工程框架,一般由FW.C PERIPH.C和定义存放器的几个头文件组成。如以以下图:2FW.C负责了设备连接、重枚举、设备初始化等过程3PERIPH.C负责响应各种中断事件。4dscr.a51文件定义
3、了USB设备握手时需要的各种描绘符5FX2REGS.H定义了USB中所有的存放器6FX2.H主要定义了各种二级中断向量和描绘符的数据构造7编译后的二进制代码和工程同名,扩展名为HEX。8 相应的头文件和类库在KEIL C的lib和inc文件夹内,需在工程设置中设置途径。4.2 硬件程序烧录1因为本产品要求将二进制代码和硬件PID/VID烧录在EEPROM,而不是使用CYPRESS推荐的在线下载方式,所以外部采用了8K的EEPROM。上电后68013A会将EEPROM中的数据和程序加载到RAM中运行。2HEX文件只是68013A上8051的程序代码,还要加上PID/VID
4、等信息才能正确运行,CYPRESS在开发包中提供了HEX2BIN.EXE这个工具,可以根据HEX生成完备的IIC文件,将此文件烧录到EEPROM上即可。3HEX2BIN.EXE的使用方法如下:将XXX.HEX文件拷贝到HEX2BIN.EXE所在目录,翻开CMD,按如下格式输入:hex2bix -i -o xxx.iic xxx.hex -f 0xC2 -v 0x1234 -p 0x1234-i表示输出文件,也就是IIC文件-o表示输入文件,也就是HEX文件-f表示68013A发送PID/VID的方式,这里为C0,即从EEPROM上读取。-v表示VID的BCD码,开发阶段使用1234-p表示PI
5、D的BCD码,开发阶段使用12344将生成的IIC文件用烧写器烧录到EEPROM上,本工程使用的是深圳思泰佳电子公司的NSP通用烧写器,此烧写器不支持IIC类型,选择BIN类型可替代。4.3 驱动的识别1将EEPROM连到68013A上后,接上USB线,上电。计算机提示找到新硬件,要求安装驱动。2CYPRESS针对68013A提供了全新的驱动程序CYUSB.SYS。这个驱动使用了新的API,所以上位机的编写上和旧的方式完全不同。底层的IOCTL控制字的定义也完全不同,详见CYAPI.PDF和CYUSB.PDF。3安装驱动之前,必须先根据VID/PID正确编辑CYUSB.
6、INF文件,在文件中添加自己的PID/VID代码和设备描绘,连接设备时,将根据硬件上的PID/VID查找INF文件中对应的驱动,假设找不到,在设备管理器中将显示“68013 EEPROM MISSING的字样。4详细的INF配置方法参考CYUSB.PDF PART1/PART2/PART3。这里不在赘述。5安装驱动时候找到修改好的CYUSB.INF文件,驱动将被正确安装,此时设备可以正常使用。4.4 测试过程1被正确识别的设备可以在CYPRESS CONSOLE上看到设备信息。如图:2CYPRESS CONSOLE的详细使用方法请参考CyConsole.chm。3要注意
7、的是,除EP0/EP1外,当其他端点Max Pkt Size大小为64字节时,表示工作在USB 1.1形式,有可能是软件的原因,也有可能是外围上拉电阻的问题。开发中要特别注意。5. 推荐开发流程5.1 看本介绍USB 2.0协议的书,对USB 2.0协议有所理解。推荐?USB 2.0原理与工程开发?5.2 看CYUSB.PDF文档。理解驱动安装方法。5.3 看KEIL C51的书籍,熟悉C51的编程方法,熟悉KEIL C编程环境。5.4 看CYPRESS提供的例程,理解68013A编程框架。推荐?EZ-USB 2100系列单片机原理、编程及应用?根本框架类似,部分存放器
8、定义不同。5.5 对照USB 2.0协议,编写dscr.a51文件,配置各种描绘符。5.6 结合FX2 TechRefManual.pdf,研读FW.C、PERIPH.C、FX2REGS.H、FX2.H,理解存放器的定义。5.7 根据系统需求编写响应代码,有开发板时,根据开发版上的LED来测试程序正确与否。5.8 根据CYAPI.PDF CYUSB.PDF编写上位机通讯程序。同步读取数据方法XferData;异步读取数据方法BeginDataXfer/WaitForXfer/FinishDataXfer;5.9 调试程序。5.10
9、160; 编写其他8051上的程序,并继续调试。6. 发布时应提供的文件1CYUSB.SYS2CYUSB.INF3XXX.IIC7. 重点讲解7.1 如何理解CYPRESS 68013A程序框架CYPRESS提供了非常好的程序框架,免去了用户自己编写一些通用性比较强、形式化的程序假设不提供,很少有人能写出如此高效,构造紧凑的程序,实际上此框架和68013A内部构造关系亲密,一般人也没有足够的内部资料也不可能写出来。在框架的根底上,用户只需在
10、相应的地方写相应的代码即可完成USB工作。一般来说框架可以分成3个部分。1 描绘符文件。例如dscr.a51文件,里面定义了枚举设备的时候要用的各种描绘符信息,这部分用户需要根据实际的情况自己编写。我写的时候发现一个最大的问题就是各种书籍协议版本不同,翻译质量不同,同一字段的意义表述不同,容易让人产生困惑。例如USB 1.1/2.0/2.13对设备类型的子类定义都不完全一样,所以写的时候最好几种文档比照起来写。由于USB官方网站的文档中字段
11、解释过于专业化,所以对USB不是很熟悉的人比较难以理解其真正含义。所以要多参考不同的书籍,某种程度上降低了开发速度,但对第一次做USB开发的人来说,这也是值得的。2 固件文件,例如FW.C文件,这是硬件程序的函数入口。主要有以下这些方法:void SetupCommandvoid; /握手命令处理void TD_Initvoid;/初始化,完成配置,启动时调用一次void TD_Pollvoid;/用户处理程序,循环调用void IO_In
12、itvoid;/8051 IO初始化void REG_Initvoid;/8051存放器初始化BOOL TD_Suspendvoid;/挂起处理BOOL TD_Resumevoid;/唤醒处理/以下为各种描绘符的获取和设置函数,重枚举时自动调用BOOL DR_GetDescriptorvoid;BOOL DR_SetConfigurationvoid;BOOL DR_GetConfigurationvoid;BOOL DR_SetInterfacevoid;BOOL DR_GetInterfacevoid;BOOL DR_GetStatusvoid;BOOL DR_ClearFeaturevo
13、id;BOOL DR_SetFeaturevoid;BOOL DR_VendorCmndvoid;3 功能文件,处理各种中断。例如PERIPH.C文件。8051一般默认只有四个中断,这显然不够USB使用,所以CYPRESS引入了自动向量的概念,相当于软中断,大大扩展了现有的中断数量。主要的中断有:void ISR_Sudavvoid interrupt 0 /收到setup包void ISR_Sutokvoid interrupt 0 /收
14、到SETUP令牌void ISR_Sofvoid interrupt 0 /收到起始帧void ISR_Uresvoid interrupt 0 /收到RESETvoid ISR_Suspvoid interrupt 0/收到挂起信息void ISR_Highspeedvoid interrupt 0 /高速形式void ISR_Ep0ackvoid interrupt 0/正常响应ACKvoid ISR_Stubvoid interrupt 0void ISR_Ep0invoid interrupt 0void ISR_Ep0outvoid interrupt 0void ISR_Ep1in
15、void interrupt 0void ISR_Ep1outvoid interrupt 0 /EP1输入中断void ISR_Ep2inoutvoid interrupt 0/EP2中断void ISR_Ep4inoutvoid interrupt 0void ISR_Ep6inoutvoid interrupt 0void ISR_Ep8inoutvoid interrupt 0void ISR_Ibnvoid interrupt 0void ISR_Ep0pingnakvoid interrupt 0void ISR_Ep1pingnakvoid interrupt 0void ISR
16、_Ep2pingnakvoid interrupt 0void ISR_Ep4pingnakvoid interrupt 0void ISR_Ep6pingnakvoid interrupt 0void ISR_Ep8pingnakvoid interrupt 0void ISR_Errorlimitvoid interrupt 0void ISR_Ep2piderrorvoid interrupt 0void ISR_Ep4piderrorvoid interrupt 0void ISR_Ep6piderrorvoid interrupt 0void ISR_Ep8piderrorvoid
17、interrupt 0void ISR_Ep2pflagvoid interrupt 0void ISR_Ep4pflagvoid interrupt 0void ISR_Ep6pflagvoid interrupt 0void ISR_Ep8pflagvoid interrupt 0void ISR_Ep2eflagvoid interrupt 0void ISR_Ep4eflagvoid interrupt 0void ISR_Ep6eflagvoid interrupt 0void ISR_Ep8eflagvoid interrupt 0void ISR_Ep2fflagvoid int
18、errupt 0void ISR_Ep4fflagvoid interrupt 0void ISR_Ep6fflagvoid interrupt 0void ISR_Ep8fflagvoid interrupt 0void ISR_GpifCompletevoid interrupt 0void ISR_GpifWaveformvoid interrupt 0特别是对于承受数据,一般都在中断中完成相应处理,“中断中适宜进展少量简短的操作,不适宜进展复杂操作,这句话在此仍然有效。假设要进展复杂的操作可以在TD_POLL中进展多数操作都是在这个函数中完成的。另外非常重要的一点是,中断程序的结尾应该
19、让中断复位,允许下一次中断,有些端点的计数器也要清零并允许承受新的中断恳求。例如:EP1OUTBC = 0;/清空计数EZUSB_IRQ_CLEAR; /USB中断复位EPIRQ = 0x08; /允许EP1中断恳求7.2 68013A端点存放器介绍68013A内部的存放器约有300个上下,一次都记住是不可能的,而且每个存放器都有8个位,也就是说一共有2000多个可以配置的位,一次都理解掌握这些位的含义也是不可能的,所幸地是开发中并不会用到所有的存放器,但是仍然强烈建议把FX2REGS.H和FX2.H走读一边,这就像读书一样,没有学会识字,再看都是天书。结合FX2 Te
20、chRefManual.pdf走读这些存放器大约需要一到两天时间,这点时间投入还是值得的。在通讯过程中,打交道最多的是各种端点存放器,掌握好这些存放器地使用对提升开发效率是很有帮助。值得特别关注的存放器和配置位如下:Rwuen、REVCTL、EP1OUTCFG、EP1INCFG、EP2CFG、EP4CFG、EP6CFG、EP8CFG、EP2FIFOCFG、EP4FIFOCFG、EP6FIFOCFG、EP8FIFOCFG、FIFORESET、EPIRQ、EPIE、EP1OUTBC、APTR1H、APTR1L、EXTAUTODAT1、AUTOPTRH2、AUTOPTRL2、EXTAUTODAT2、
21、EP2BCH、EP2BCL其中有些存放器的设置需要连续设置屡次,看似重复了,其实不然,这和设置的缓冲区数量有关。有些存放器中间必须用SYNCDELAY来延时。这类存放器FX2 TechRefManual.pdf上有说明。对于EP0,用于系统握手,相关的存放器操作根本上都由68013A的内核SIE来完成了。对于EP1,分为OUT/IN两组配置和存放器。对于EP2EP8,不分OUT/IN输入输出,主要有EP2CFG/ EP2FIFOCFG/ EP2BCH/EP2BCL存放器。7.3 什么是自动指针自动指针是CYPRESS提供的一个非常有用的特性。在数据交互的过程中,很多时候
22、都涉及到数据的搬迁,比方从EP2OUT收到的数据需要转发到EP6IN上一些转换类设备;再比方从RAM中拷贝数据到EP4IN上,传统的做法是申明两个指针,指向源和目的地址,然后用循环一个个字节拷贝,同时还要考虑增加指针地址,对于连续的空间这到不是问题,关键是假设数据需要拷贝到多个缓冲时,指针地址是循环的。这时候假设手工完成操作很容易出错。因此CYPRESS提供了两组自动指针,用的时候一组指向源,一组指向目的地址。然后循环拷贝数据就行了,自动指针会自动指向下一个源或目的空间,不管是否是循环地址方式。这样减少了程序出错的几率。下面的程序将EP2OUT承受到的数据拷贝到EP6IN发送出去: if!EP
23、2468STAT & bmEP6FULL / check EP6 FULLbusy bit in EP2468STAT SFR, core set's this bit when FIFO is full APTR1H = MSB &EP2FIFOBUF ; APTR1L = LSB &EP2FIFOBUF ; AUTOPTRH2 = MSB &EP6FIFOBUF ; AUTOPTRL2 = LSB &EP6FIFOBUF ; count = EP2BCH << 8 + EP2BCL; / loop EP2OUT buffer da
24、ta to EP6IN for i = 0x0000; i < count; i+ / setup to transfer EP2OUT buffer to EP6IN buffer using AUTOPOINTERs EXTAUTODAT2 = EXTAUTODAT1; EP6BCH = EP2BCH; SYNCDELAY; EP6BCL = EP2BCL; / arm EP6IN SYNCDELAY; EP2BCL = 0x80; / rearm EP2OUT APTR1H/APTR1H通过MSB和LSB获取EP2FIFOBUF的高位地址和地位地址。EXTAUTODAT1表示APT
25、R1H/APTR1H指向的数据。AUTOPTRH2/AUTOPTRL2通过MSB和LSB获取EP6FIFOBUF的高位地址和地位地址。EXTAUTODAT2表示AUTOPTRH2/AUTOPTRL2指向的数据。7.4 CYUSB和CYAPI的关系以前68013上位机程序的编写过程中,应用程序端通过调用DeviceIoControl API或CREATEPIPE API与驱动进展交互,继而读写控制硬件设备,在新的68013A的驱动中采用了两种新的调用方法:第一种是继续使用DeviceIoControl函数读写,不同的是,IOCTL控制字和老驱动完全不同,详细定义参考CYU
26、SB.PDF。用户可以通过这些底层API完成操作。第二种是使用CYPRESS提供的面对对象的类,一共有9个类,调用这些类的方法就可以和硬件打交道。这些类是对第一种方法的封装,使用起来非常简便。用户可以根据需要选择这两种方法或混合使用,使用时需要加上头文件CyAPI.h和cyioctl.h,另外在工程中还要引用CyAPI.lib。7.5 同步和异步读写的比较CYAPI提供了同步和异步读写方式。同步方式的时候调用线程阻塞在哪里,直到读写到数据或超时;异步方式的时候调用线程立即返回。详细实例参考CYAPI.PDF。7.6 如何用C+ BUILDER写上位机程序1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中考物理复习主题单元8第19课时合理利用机械能小粒子与大宇宙课件
- 主播 课件教学课件
- 小学数学新人教版一年级下册20以内口算练习题大全
- 《两只小象》教学设计教学设计 教案
- 智能家居电气设施安装合同
- 幼儿园智能照明系统招投标攻略
- 展会设备租赁合同
- 幼儿园园长聘用合同范本
- 建筑公司员工意见箱管理准则
- 石油提炼班组安全作业规范
- 第一章第三节《氧化还原反应》第一课时高一上学期化学人教版(2019)必修第一册
- 高三政治月考试卷讲评
- 期中模拟测试卷1(试题)-2024-2025学年五年级上册数学(福建)
- 期中模拟试卷(1-4单元)(试题)-2024-2025学年四年级上册数学苏教版
- 一年级拼音教学-(研讨讲座)
- 江苏省南通市2023-2024学年七上期中数学试题(解析版)
- 体育大单元教学计划(18课时)
- 磁共振MRI对比剂
- 让小车运动起来说课稿
- 2023-2024学年北京朝阳区高三(上)期中数学试题和答案
- 工程招投标管理与实践作业指导书
评论
0/150
提交评论