打印

请教:D12使用地址使能命令以后,地址在什么时候生效?

[复制链接]
2411|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tudou2048|  楼主 | 2010-11-29 21:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tudou2048 于 2010-11-29 21:29 编辑

在枚举过程中,主机给设备分配地址,而设备需回复一个空包。
例程里是这么写的:
void set_address(void)
{
D12_SetAddressEnable((unsigned char)(ControlData.DeviceRequest.wValue &  DEVICE_ADDRESS_MASK), 1);
single_transmit(0, 0);
}
问题是如果先设置好地址后地址立即生效,如何响应主机对地址‘0’的IN包(空包)。
如果不立即生效,那在何时生效?

相关帖子

沙发
sz_kd| | 2010-11-30 12:58 | 只看该作者
设备收到HOST的分配地址需要在下一个IN 输入包后生效。收到主机地址命令是回复给主机一个ACK就可以。

使用特权

评论回复
板凳
tudou2048|  楼主 | 2010-11-30 19:11 | 只看该作者
设备收到HOST的分配地址需要在下一个IN 输入包后生效。收到主机地址命令是回复给主机一个ACK就可以。
sz_kd 发表于 2010-11-30 12:58

谢谢支持!还是不太理解,是不是主机通过安装包设置设备地址之后一直在尝试发IN包,来等待设备的ACK。主机的这个IN包还是发给‘0’地址的吧。而此时D12地址寄存器中已经通过单片机设置了主机分配的地址,还缺给主机发个ACK。D12有**上次地址的功能?知道之前的地址为'0',好响应一下主机的IN包?我就是在这里乱了。

使用特权

评论回复
地板
sz_kd| | 2010-12-1 09:48 | 只看该作者
在地址没有生效之前当然是发给地址0的。

使用特权

评论回复
5
tudou2048|  楼主 | 2010-12-1 12:04 | 只看该作者
在地址没有生效之前当然是发给地址0的。
sz_kd 发表于 2010-12-1 09:48

从器件手册里没有找到相关说明啊,sz_kd你可以给我一份关于这里说明的资料吗?或者一个链接、文件名称也行。谢谢了!

使用特权

评论回复
6
sz_kd| | 2010-12-1 13:13 | 只看该作者
你看USB协议里的set ADDRESS 这个标准请求里写的很清楚

使用特权

评论回复
7
sz_kd| | 2010-12-1 13:13 | 只看该作者
另外我看USB分析仪器抓出来的数据也是这样

使用特权

评论回复
8
tudou2048|  楼主 | 2010-12-1 16:43 | 只看该作者
谢谢sz_kd!我仔细看一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

261

帖子

4

粉丝