EZUSB68013A开发b指南b.docx
- 文档编号:2079274
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:9
- 大小:20.83KB
EZUSB68013A开发b指南b.docx
《EZUSB68013A开发b指南b.docx》由会员分享,可在线阅读,更多相关《EZUSB68013A开发b指南b.docx(9页珍藏版)》请在冰豆网上搜索。
EZUSB68013A开发b指南b
EZ-USB68013A开发指南
Airhand2006-4-5
1. 元器件
CYPRESS68013A:
支持USB2.0协议,带增强型8051单片机,时钟频率48Mhz。
支持串口通讯。
2. 文档
cy7c68013.pdf
68013外设手册
cy7c68013_5.pdf
68013外设手册
CY3684_A_SCH.PDF
68013A外围电路图
FX2TechRefManual.pdf
EZUSB-FX2技术手册
fx2_to_fx2lp.pdf
FX2和FX2LP的区别
CYAPI.PDF
CYAPI手册高级类库
CYUSB.PDF
CYUSB手册底层API
3. 开发环境
3.1KeilC7.0编译器
3.2C++Builder6.0
3.3VC++6.0
3.4EEPROM烧写器
3.568013A的开发包(含CYPRESSCONSOLE、CYUSB.SYS、例程等)
3.6BUSHOUND5.0
4. 开发流程
4.1 硬件程序编写
1)根据CYPRESS的示例程序建立工程框架,一般由FW.CPERIPH.C和定义寄存器的几个头文件组成。
如下图:
2)FW.C负责了设备连接、重枚举、设备初始化等过程
3)PERIPH.C负责响应各种中断事件。
4)dscr.a51文件定义了USB设备握手时需要的各种描述符
5)FX2REGS.H定义了USB中所有的寄存器
6)FX2.H主要定义了各种二级中断向量和描述符的数据结构
7)编译后的二进制代码和工程同名,扩展名为HEX。
8)相应的头文件和类库在KEILC的lib和inc文件夹内,需在项目设置中设置路径。
4.2 硬件程序烧录
1)因为本产品要求将二进制代码和硬件PID/VID烧录在EEPROM,而不是使用CYPRESS推荐的在线下载方式,所以外部采用了8K的EEPROM。
上电后68013A会将EEPROM中的数据和程序加载到RAM中运行。
2)HEX文件只是68013A上8051的程序代码,还要加上PID/VID等信息才能正确运行,CYPRESS在开发包中提供了HEX2BIN.EXE这个工具,可以根据HEX生成完备的IIC文件,将此文件烧录到EEPROM上即可。
3)HEX2BIN.EXE的使用方法如下:
将XXX.HEX文件拷贝到HEX2BIN.EXE所在目录,打开CMD,按如下格式输入:
hex2bix-i-oxxx.iicxxx.hex-f0xC2-v0x1234-p0x1234
-i表示输出文件,也就是IIC文件
-o表示输入文件,也就是HEX文件
-f表示68013A发送PID/VID的方式,这里为C0,即从EEPROM上读取。
-v表示VID的BCD码,开发阶段使用1234
-p表示PID的BCD码,开发阶段使用1234
4)将生成的IIC文件用烧写器烧录到EEPROM上,本项目使用的是深圳思泰佳电子公司的NSP通用烧写器,此烧写器不支持IIC类型,选择BIN类型可替代。
4.3 驱动的识别
1)将EEPROM连到68013A上后,接上USB线,上电。
计算机提示找到新硬件,要求安装驱动。
2)CYPRESS针对68013A提供了全新的驱动程序CYUSB.SYS。
这个驱动使用了新的API,所以上位机的编写上和旧的方式完全不同。
底层的IOCTL控制字的定义也完全不同,详见CYAPI.PDF和CYUSB.PDF。
3)安装驱动之前,必须先根据VID/PID正确编辑CYUSB.INF文件,在文件中添加自己的PID/VID代码和设备描述,连接设备时,将根据硬件上的PID/VID查找INF文件中对应的驱动,如果找不到,在设备管理器中将显示“68013EEPROMMISSING”的字样。
4)详细的INF配置方法参考CYUSB.PDFPART1/PART2/PART3。
这里不在赘述。
5)安装驱动时候找到修改好的CYUSB.INF文件,驱动将被正确安装,此时设备可以正常使用。
4.4 测试过程
1)被正确识别的设备可以在CYPRESSCONSOLE上看到设备信息。
如图:
2)CYPRESSCONSOLE的具体使用方法请参考CyConsole.chm。
3)要注意的是,除EP0/EP1外,当其他端点MaxPktSize大小为64字节时,表示工作在USB1.1模式,有可能是软件的原因,也有可能是外围上拉电阻的问题。
开发中要特别注意。
5. 推荐开发流程
5.1看本介绍USB2.0协议的书,对USB2.0协议有所了解。
推荐《USB2.0原理与工程开发》
5.2看CYUSB.PDF文档。
了解驱动安装方法。
5.3看KEILC51的书籍,熟悉C51的编程方法,熟悉KEILC编程环境。
5.4看CYPRESS提供的例程,了解68013A编程框架。
推荐《EZ-USB2100系列单片机原理、编程及应用》(基本框架类似,部分寄存器定义不同)。
5.5对照USB2.0协议,编写dscr.a51文件,配置各种描述符。
5.6结合FX2TechRefManual.pdf,研读FW.C、PERIPH.C、FX2REGS.H、FX2.H,了解寄存器的定义。
5.7根据系统需求编写响应代码,有开发板时,根据开发版上的LED来测试程序正确与否。
5.8根据CYAPI.PDFCYUSB.PDF编写上位机通讯程序。
同步读取数据方法XferData();
异步读取数据方法BeginDataXfer()/WaitForXfer()/FinishDataXfer();
5.9调试程序。
5.10 编写其他8051上的程序,并继续调试。
6. 发布时应提供的文件
1)CYUSB.SYS
2)CYUSB.INF
3)XXX.IIC
7. 重点讲解
7.1 如何理解CYPRESS68013A程序框架
CYPRESS提供了非常好的程序框架,免去了用户自己编写一些通用性比较强、模式化的程序(如果不提供,很少有人能写出如此高效,结构紧凑的程序,实际上此框架和68013A内部结构关系密切,一般人也没有足够的内部资料也不可能写出来)。
在框架的基础上,用户只需在相应的地方写相应的代码即可完成USB工作。
一般来说框架可以分成3个部分。
1) 描述符文件。
例如dscr.a51文件,里面定义了枚举设备的时候要用的各种描述符信息,这部分用户需要根据实际的情况自己编写。
我写的时候发现一个最大的问题就是各种书籍协议版本不同,翻译质量不同,同一字段的意义表述不同,容易让人产生困惑。
例如USB1.1/2.0/2.13对设备类型的子类定义都不完全相同,所以写的时候最好几种文档对比起来写。
由于USB官方网站的文档中字段解释过于专业化,所以对USB不是很熟悉的人比较难以理解其真正含义。
所以要多参考不同的书籍,某种程度上降低了开发速度,但对第一次做USB开发的人来说,这也是值得的。
2) 固件文件,例如FW.C文件,这是硬件程序的函数入口。
主要有以下这些方法:
voidSetupCommand(void);//握手命令处理
voidTD_Init(void);//初始化,完成配置,启动时调用一次
voidTD_Poll(void);//用户处理程序,循环调用
voidIO_Init(void);//8051IO初始化
voidREG_Init(void);//8051寄存器初始化
BOOLTD_Suspend(void);//挂起处理
BOOLTD_Resume(void);//唤醒处理
//以下为各种描述符的获取和设置函数,重枚举时自动调用
BOOLDR_GetDescriptor(void);
BOOLDR_SetConfiguration(void);
BOOLDR_GetConfiguration(void);
BOOLDR_SetInterface(void);
BOOLDR_GetInterface(void);
BOOLDR_GetStatus(void);
BOOLDR_ClearFeature(void);
BOOLDR_SetFeature(void);
BOOLDR_VendorCmnd(void);
3) 功能文件,处理各种中断。
例如PERIPH.C文件。
8051一般默认只有四个中断,这显然不够USB使用,所以CYPRESS引入了自动向量的概念,相当于软中断,大大扩展了现有的中断数量。
主要的中断有:
voidISR_Sudav(void)interrupt0//收到setup包
voidISR_Sutok(void)interrupt0//收到SETUP令牌
voidISR_Sof(void)interrupt0//收到起始帧
voidISR_Ures(void)interrupt0//收到RESET
voidISR_Susp(void)interrupt0//收到挂起信息
voidISR_Highspeed(void)interrupt0//高速模式
voidISR_Ep0ack(void)interrupt0//正常响应ACK
voidISR_Stub(void)interrupt0
voidISR_Ep0in(void)interrupt0
voidISR_Ep0out(void)interrupt0
voidISR_Ep1in(void)interrupt0
voidISR_Ep1out(void)interrupt0//EP1输入中断
voidISR_Ep2inout(void)interrupt0//EP2中断
voidISR_Ep4inout(void)interrupt0
voidISR_Ep6inout(void)interrupt0
voidISR_Ep8inout(void)interrupt0
voidISR_Ibn(void)interrupt0
voidISR_Ep0pingnak(void)interrupt0
voidISR_Ep1pingnak(void)interrupt0
voidISR_Ep2pingnak(void)interrupt0
voidISR_Ep4pingnak(void)interrupt0
voidISR_Ep6pingnak(void)interrupt0
voidISR_Ep8pingnak(void)interrupt0
voidISR_Errorlimit(void)interrupt0
voidISR_Ep2piderror(void)interrupt0
voidISR_Ep4piderror(void)interrupt0
voidISR_Ep6piderror(void)interrupt0
voidISR_Ep8piderror(void)interrupt0
voidISR_Ep2pflag(void)interrupt0
voidISR_Ep4pflag(void)interrupt0
voidISR_Ep6pflag(vo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EZUSB68013A 开发 指南
![提示](https://static.bdocx.com/images/bang_tan.gif)