基本固件框架的追踪研读之SETUP命令的处理7
来源:互联网 发布:电脑桌面文件恢复软件 编辑:程序博客网 时间:2024/06/10 17:28
书接上回
接下来,是两个用户自定义的请求;
case SC_SetData: //向端口发送数据 DR_SetData();break;case SC_ReadData: //读端口数据 DR_ReadData();break;
//用户添加#define SC_SetData 0xB1 //自定义请求 #define SC_ReadData 0xB2 //自定义请求
下来看DR_SetData();
BOOL DR_SetData(void) //向端口发送数据{ EP0BUF[0]=0xB1; EP0BCH=0; EP0BCL=2; EZUSB_Delay(100); OED=0xFF; //OED定义为输出端口 IOD=EP0BUF[1]; EP0CS |= bmHSNAK; return(TRUE);}
1、向EP0BUF[0]写0xB1;2、写字节计数寄存器;3、延时100ms;4、将Port E设置成输出;5、将EP0BUF[1]赋给Port E;6、
文档中关于Port D的介绍如下;
而函数DR_ReadData();是函数DR_SetData();的逆过程,不再赘述,只在此贴出代码:
BOOL DR_ReadData(void) //读端口数据{ OED=0x00; //OED定义为输入端口 EP0BUF[0]=0xB2; EP0BUF[1] =IOD; EP0BCH=0; EP0BCL=2; EP0CS |= bmHSNAK; return(TRUE);}
下面这段代码可忽略:
default: // *** Invalid Command if(DR_VendorCmnd()) EZUSB_STALL_EP0(); // Stall End Point 0
最后,
// Acknowledge handshake phase of device request EP0CS |= bmHSNAK;
这句话解释了前面的代码,缺少清除HSNAK的语句。
1 0
- 基本固件框架的追踪研读之SETUP命令的处理7
- 基本固件框架的追踪研读之SETUP命令的处理1
- 基本固件框架的追踪研读之SETUP命令的处理2
- 基本固件框架的追踪研读之SETUP命令的处理3
- 基本固件框架的追踪研读之SETUP命令的处理4
- 基本固件框架的追踪研读之SETUP命令的处理5
- 基本固件框架的追踪研读之SETUP命令的处理6
- 基本固件框架的追踪研读之USB事务处理
- 基本固件框架的追踪研读之描述符1
- 基本固件框架的追踪研读之USB控制传输
- EZ-USB固件框架的追踪研读之main函数1
- EZ-USB固件框架的追踪研读之main函数2
- EZ-USB固件框架的追踪研读之main函数3
- 追踪研读法破解EZ-USB的“远程唤醒”
- GDI对位图文件的基本处理
- 用Source Insight追踪Arduino的setup和loop
- 【Darwin学习笔记】之QTSSReflectorModule的Setup消息处理
- 【Darwin学习笔记】之QTSSReflectorModule的Setup消息处理
- Mahone的CTS研究笔记(一):什么是CTS
- C的变长参数
- 指针函数与函数指针的区别
- 优秀代码风格
- UIEvent
- 基本固件框架的追踪研读之SETUP命令的处理7
- struts2简记
- AngularJS Tutorial(13)from w3school
- 【Java】利用Ansj中文分词工具对段落进行切词
- cocos2d-x 在Mac上lua开发环境搭建
- 【更新】Cocos2d-x使用AssetsManager更新资源和脚本
- 操作系统读书笔记(汤子瀛 思维导图)
- layout_weight参数的使用
- 80端口被占用Apache启动不了解决办法