注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

LINUX驱动学习---USB驱动(六)  

2011-01-15 14:43:10|  分类: USB系列 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

今天把USB鼠标彻底的搞完并基本弄清楚了,得到的一个重要的启示是:一定要多看DATASHEET,这样才可以同书上一一对应着弄明白什么东西。

我在学习时一直不明白为什么用端口0来回接送COMMAND,而用端口1来发送返回的报告描述符,经过和pdiusbd12的文档一对应(DATASHEET),发现了原因,由于我们在SETMODE里使用了两字节的配置命令,0X06,0X47,第一个字节可写为0000 0110,对照一看,发现和上电默认的不同的是第3位(即从右数第四个)是0,按文档里说,此位为中断标志位,这个为1表示无论错对数据传输,都会产生中断,而如果为0表示只有正确传输才会产生中断,OK,这下明白了,其实这个是为了减小中断次数简化了操作,实际可能会复杂一些。

而且在配置后选择了模式0,(设置模式的命令字是OXF3)这种模式有0~2三个端点和0~5六个端点索引,对应的选择方法可查看选择端口命令的代码(0x00~0x05),注意的是选择的是端口的索引,OK,这个基本就没事儿了。

而在后来的主函数里用D12WriteEndpointBuffer(3,4,Buf),这个函数会调用D12SelectEndpoint(Endp),正好Endp=3,清楚的表明了数据是发向端口1输入方的,这样就和我们的UsbEp1In()勾搭起来了,没办法,这下子就明白了吧,这个如果你写到端口2,估计也没错,一会试试。记得看文档里说明端口号和端口的索引,别弄混咧。

顺便再说下这几天遇到的主要问题:

1、KEIL的使用不熟悉,记得在创建保存一个文件要新增到工程中,和原来的ADS差不多,估计是用VS多了,基本傻掉了,更可恨的是KEIL竟然不报错。比如在做串口显示时,由于没有增加头文件,结果造成监控时串口的波特率是个极可怕值,而且数据是随机的。

2、代码的敲打不认真,将一些前后的定义弄错,甚至把与非弄反,造成按键时,LED灯不亮。

3、对DEBUG0和DEBUG1的头文件包含不正确,造成显示不正常,同时由于我的串口调试助手不支持中文,造成调试信息的不正确。

4、个别的宏,变量没有正确配置,造成数据通信不正确,调试无法正确显示,比如ConfigVaule,这个值因为在书中根本没有怎么配置,而实际程序则进行了配置,造成无法控制小板进行鼠标的操作。

我会在这几天认真总结一下USB操作的流程,算是USB的一个小小的提纲挈领。

  评论这张
 
阅读(712)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017