USB论坛-百合电子工作室USB专题站

 找回密码
 我要注册
搜索
热搜: USB学习板
查看: 4340|回复: 3
打印 上一主题 下一主题

板子收到了,还行!

[复制链接]

1

主题

0

好友

9

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2014-1-24 15:11:35 |只看该作者 |倒序浏览
谢工:
       我是前些天在淘宝网买了你的usb的学习板,板子收到了,看了下挺好。在此想请教你:1.那个#define         D12_DATA 0xff02和#define D12_COMMAND 0xff03为什么是0xff02和0xff03?. 2.outportb(D12_COMMAND, 0xD8)设置输出地址和使能和端点及使能是本地MCU(C51)设置D12的地址和端点还是PC HOST通过发请求给D12设置D12的地址和端点?
回复

使用道具 举报

6

主题

0

好友

1158

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2014-1-27 15:52:38 |只看该作者
1. 您也可以定义成其它值,只要保证D12_DATA和D12_COMMAND定义不一样就可以

2. 是MCU设置D12的地址和端点。

其实您不用太关心最底层的D12驱动代码,因为换了其它USB芯片又不一样,USB芯片厂商一般都提供了范例代码的,在其基础上修改就可以了。学习USB设备开发应该多关心USB的各种命令和描述符、USB的枚举过程
回复

使用道具 举报

1

主题

0

好友

9

积分

新手上路

Rank: 1

板凳
发表于 2014-1-27 16:50:49 |只看该作者
1.你上面回复的:2. 是MCU设置D12的地址和端点。那照这个理解:不是我们PC HOST在枚举设备的过程中会发一个 Set_Address的请求,是不是我们MCU响应HOST的请求而设置D12的地址和端点。
2.我对HOST发请求和USB设备响应请求的详细过程(即枚举)没有一个清晰的逻辑,打个比方:HOST发Get_status的请求,那我们USB设备是怎样回应的,具体的D12学习板中的程序源代码怎么看不出来
回复

使用道具 举报

6

主题

0

好友

1158

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2014-1-28 12:47:24 |只看该作者
放飞心情 发表于 2014-1-27 16:50
1.你上面回复的:2. 是MCU设置D12的地址和端点。那照这个理解:不是我们PC HOST在枚举设备的过程中会发一个 ...

在枚举过程中,HOST当然会向设备发送Set_Address请求,然后D12会产生一个中断,D12的有一个中断输出引脚和MCU相连,MCU会检测到这个中断,当D12中断发生时,MCU应该读取D12的中断寄存器,判断是什么引起的中断,比如主机发送Set_Address命令时,MCU通过读取中断寄存器能判断出是主机发出 Set_Address命令了,这时MCU应该控制D12作出正确响应,而您最开始问的outportb函数,是MCU向D12写入一个命令或数据的函数,注意这里的命令并不等同于主机发的命令。“我对HOST发请求和USB设备响应请求的详细过程(即枚举)没有一个清晰的逻辑”,也正因为如此,您才从程序源代码里看不出来。建议您不要急,先看看配套光盘上的《实例讲解USB的枚举(配置)过程 》一文(看的过程中配合《USB命令(请求)和USB描述符》这篇文章进行分析),一定要把枚举过程中每个数据包都分析一下,弄懂枚举过程中再回头看源码才有可能看得懂。看源码主要看Chap_9.c和Descriptor.c两个文件里的源码,其它都是驱动D12最底层的功能代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

USB开发网 (渝ICP备09006681号-4)

GMT+8, 2024-4-29 14:13 , Processed in 0.057772 second(s), 24 queries .

百合电子工作室版权所有
回顶部