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

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

LINUX驱动学习——USB驱动(七)之USB鼠标(1)  

2011-01-17 10:37:30|  分类: USB系列 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在前面基本完成了LED灯控制,串口回显和键盘的驱动后(关于键盘驱动的方法包括定时器轮询和外部中断的方法,这次采用的定时器,其它方法见即将的C51学习里),然后就可以进行USB鼠标的控制驱动编写了。

USB的驱动,仍然不外乎我们不断说过的DATASHEET和SPEC,另外一大利器例程,我们就要看书上的了。关于硬件的焊接我们只要注意按书中的说即可,我在看图时,忽略了那上10K的排阻,结果总是对到LED灯上的1K的排阻上去。其实LED这个是RP1,另外一个是RP2,认真看一下板子和电路图就可以了,主要是因为都是黑色,所以我就忽略了。另外就是D12本身带有上电复位电路,所以您老人家就不必考虑自己处理了,直接焊接一个1K的电阻就好了。其它的就不赘述了。重要的是软件。
首先,我们要对USB设备的connect和 disconnect进行控制。也就是说我们要模拟一个USB设备的插入和拔出。这时我们就得按PDISUBD12芯片资料和芯片与STC52的管脚连接来对应查看控制了。
看PDISUB12芯片的资料时序图,我们将CS_N片选信号引脚固定接地了,等于是长期有效了,所以我们不用考虑这个问题,直接看他的数据PIN,A0是地址线,高电平时操作的是命令,低电平时操作的数据,WR_NJ 是写信号,在上升沿写入。所以我们要考虑延时的问题,一定要严格按照时序图中的时间来延时。(具体的延时时间可查看其电气参数表格),读RD_N亦也是如此。
然后我们看最基础的程序,第一个基础函数,void D12WriteCommand(uint8 Command)。下面我们对其进行详细说明:
其中第一行是一个命令函数D12SetCommandAddr(),它被定义为 #define D12SetCommandAddr()  D12_A0=D12_COMMAND_ADD ,而最后的D12_COMMAND_ADD在前面定义为1,什么意思,上面我们刚讲了,写入时1是命令,OK,D12_A0接到了P3.5上,注意,这里P3.5和T0是复用的,我们的应用与T0定时器或者计数器没啥关系,只是当一个普通的PIN使用。这样我们的程序就直接可以控制A0了。包括后面还有一个D12SetDataAddr() 其实与D12SetCommandAddr类似,定义一个宏,不过是定义成0罢了。
然后是D12ClrWr(),查看定义,发现为#define D12ClrWr()     D12_WR = 0;其中#define D12_WR           P3_6,我们来看电路图,发现WR_N引脚定义为16,连接到了8952的16引脚WR上(这里说明一个问题,原理图上的管脚,不一定按照实际的物理形式来布置,只要定义的PIN正确即可,另外,每个管脚定义的名称在整个原理图上是一致的,也就是说,这里叫16,别的连接到这个线上的引脚有一个名称都得叫16)。这下子我们对照最初的芯片资料的时序图,明白了吧。不是在上升沿写么,我们先拉低。
再后是D12SetPortOut();这个目前暂时定义的是空,不用管他,然后是D12SetData(Command);这其实又是一个宏,#define D12SetData(Value)  D12_DATA = (Value)  。我们来看#define D12_DATA         P0,也就是说,D12的数据管脚同C52的P0对应上了,这和我们的电路设计是一致的。所以我们直接给其赋值,就等于在向D12的DATA数据线写入数据,下来做什么应该明白了吧,

对,拉高WR_N,上升沿写入么。
所以,再后,就是D12SetWr();它被定义为#define D12SetWr()     D12_WR = 1;嘿嘿,上升沿来了,这里发现没有考虑延时,可能是这个延时相当短吧。暂时先这样认为。
最后扫尾,D12SetPortIn();这还是一个宏,#define D12SetPortIn()  D12_DATA = 0xFF,即把51的PIN设置为1,因为这种情况下单片机处于输入状态,你问为什么?这个我也不懂,好象也不用懂吧。这和上面的输出状态就对上咧。
真是不容易,写硬件上的东西,我的水平相当的低,很吃力,看电路图也头晕,先写到这儿,歇会儿。

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

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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