USB论坛-百合电子工作室USB专题站
标题:
学习板源码里“#define D12_SETUPPACKET 0x20”这句代码为什么要定义成0x20
[打印本页]
作者:
玩玩
时间:
2015-10-10 12:09
标题:
学习板源码里“#define D12_SETUPPACKET 0x20”这句代码为什么要定义成0x20
如题,为什么要定义成0x20
作者:
baiheee
时间:
2015-10-10 15:06
首先看D12_SETUPPACKET用在什么地方,它出现在如下代码里:
[code=cpp]void ep0_rxdone(void)
{
INT8U ep_last, i;
INT8U req[sizeof(DEVICE_REQUEST)];
ep_last = D12_ReadLastTransactionStatus(0); //清除中断寄存器状态,取得最后处理状态
if (ep_last & D12_SETUPPACKET) { //如果收到了建立包(Setup包)[/code]
其中D12_ReadLastTransactionStatus函数是读PDIUSBD12的最后处理状态寄存器,此寄存器结构如下(请查D12数据手册):
[attach]32[/attach]
数据接收/发送成功 1 表示数据已经成功地接收或发送
错误代码
SETUP 设置信息包 1 表示最后成功接收的信息包有一个 SETUP 标志 对IN 缓冲区进行读总为 0
数据 0/1 包 1 表示最后成功接收/发送包含有一个 DATA1 PID
前一状态未读 1 表示在前一状态被读出之前发生了第二个事件
位5代表设置信息包,当这个位为1时代表收到一个SETUP包,什么是SETUP包,可以参考USB协议。而0x20转换成二进制是00100000,正好是第5位的值是1,所以要这样定义
欢迎光临 USB论坛-百合电子工作室USB专题站 (http://usb.baiheee.com/usb_bbs/)
Powered by Discuz! X2.5