打造自己的专属鼠标——鼠标DIY教程(三)

作者:论坛管理员|发布时间:2014-12-02 12:02:00
[摘要]上期讲了我们将要用到的RTOS的整体架构,这期的主角是我们经常提起的安捷伦ADNS-3080,这里将比较详细地根据官方PDF的资料解释,理解了这部分以后,我们会对这块光学芯片比较熟悉了。这段时间,
活着本来没有什么意义,但是活着,就可以找到有趣的事情。就像你发现了这朵花,而我有发现了你一样。 ——大蛇丸 上期讲了我们将要用到的RTOS的整体架构,这期的主角是我们经常提起的安捷伦ADNS-3080,这里将比较详细地根据官方PDF的资料解释,理解了这部分以后,我们会对这块光学芯片比较熟悉了。这段时间,看到论坛上又有关于使用3060EC2 什么1800dpi的事情,相信大家在了解adns-3080后会有一个基本的判断。大家要学习如何去使用一块光学芯片,在这个教程的最后,我们要运用这套方法去做ADNS-9500 四、安捷伦 ADNS-3080 1ADNS-3080的工作环境 [img]http://lcwava.blu.livefilestore.com/y1pJ8e5yxH8G3ggdfBwh2GyWPM-CehoaJKtmb65q7j11Fj-QEpXe0CxmgkPDqE4lTkZZlG7wpQYULvay2WM3D1Wjdpn0iIjxTXZ/T31.jpg?psid=1[/img] 如上图, 一块ADNS-3080一共有20个脚,下图是从正面看的顺序,注意芯片上的圆点表示的是1脚的位置。 1spiNCS脚,用来控制spi通信接口是否可用(google spi串行通信,了解一下) 2spi Master IN Slave OUT 3spi 时钟信号 4Matser OUT Slave IN 5LED 控制 6:光学芯片复位脚 7:待机脚 No Power Down 8:震荡信号脚 OUT 9:屏蔽(用来屏蔽谐振器) 10:震荡信号脚 IN 11:无作用 12:连接到 VDD3 13:连接参考电容 + 14:连接参考电容 - 15VDD3 电源 16GND 接地脚 17VDD3 电源 18:无作用 19:接地 20:无作用 [img]http://lcwava.blu.livefilestore.com/y1p2UO0tviH-NmQiin2EjirWx-_3MySeU-Nvd81DkQ98hQiIcf6fTYRKYqjQKyGjVdEuKvlFDTYlp5zGVaPh1EOMSgkHHFuz3tm/T32.jpg?psid=1[/img] 根据列表,如上图红圈所示,ADNS-3080工作的4大要点分别是: a. 3.3v的电源,与17151916脚有关 b. 单片机至少要有6个脚与ADNS-3080连在一起,与123467有关 c. ADNS-3080需要一个24Mhz的陶瓷谐振器,连接108,屏蔽可不连接 d. ADNS-3080通过一个BS170的场效应管去控制LED5 从这里可以看到,要使A3080动作起来,其实需要的东西很少,3.3v可以通过电阻限流获得,保险一点可以用图中的稳压,如果是找一块全新的A3080芯片可能会比较有难度,我们可以用一些现成的鼠标,比如金环蛇,罗技的MX518,炼狱蝰蛇等,只有光学芯片正常就可以了。我们可以用它们现成的A3080电路。打开这些鼠标之后,你会发现A3080的外围电路基本是一致的,除了滚轮是编码或者是光学的区别。至于如何去分析电路, 后面几期会用金环蛇去做例子。
[责任编辑:'']
标签
暂无标签
收藏 分享

相关阅读

暂无推荐内容

评论(2)

登录后参与评论

发表评论 还可以输入2000个字符 添加表情
*友情提示:首次回复增加5元发烧值,多次回复往后每次增加1元发烧值,前5次回复有效!
最新评论

查看所有评论>>

  • 会员头像
    quwei80  2017-03-22 16:35:19
    路过瞧瞧!
    点赞 (0) 回复
  • 会员头像
    zu7dao  2017-03-20 10:32:58
    路过帮顶
    点赞 (0) 回复
  • 会员头像
    refire  2011-01-15 22:53:46
    学习学习
    点赞 (0) 回复
  • 会员头像
    GuoAnNB  2011-01-15 22:31:07
    这个很nice 帮顶了
    点赞 (0) 回复
  • 会员头像
    zsxh  2011-01-15 22:27:06
    顶呀
    点赞 (0) 回复
  • 会员头像
    weiwei3278  2011-01-15 21:24:43
    前排占位 身为外观控的我继续意淫楼主最后作出鼠标的样子
    点赞 (0) 回复
  • 会员头像
    wwq5536  2011-01-15 21:24:13
    [b][size=5]LZ乃论坛的奇葩!!!!!!!!![/size][color=Magenta][/color][/b]
    点赞 (0) 回复
  • 会员头像
    AI-3  2011-01-15 21:23:29
    太专业了
    点赞 (0) 回复
  • 会员头像
    AI-3  2011-01-15 21:23:29
    太专业了
    点赞 (0) 回复
  • 会员头像
    TanKaFei  2011-01-15 21:21:25
    占位~
    点赞 (0) 回复
  • 会员头像
    善变双子  2011-01-15 21:12:38
    看不懂
    点赞 (0) 回复
  • 会员头像
    350020645  2011-01-15 20:31:20
    \\ \\_ .---(') o( )_-\_
    点赞 (0) 回复
  • 会员头像
    123loeb  2011-01-15 20:10:55
    看不懂.....学习学习
    点赞 (0) 回复
  • 会员头像
    275581240  2011-01-15 20:05:29
    天书啊- - 不过还是要顶
    点赞 (0) 回复
  • 会员头像
    超电磁侠  2011-01-15 19:40:33
    [i=s] 本帖最后由 超电磁侠 于 2011-1-16 17:51 编辑 [/i][size=4][font=宋体]2[font=宋体]、[/font][font=Times New Roman]ADNS-3080[/font][font=宋体]的工作[/font][/font][font=宋体][/font][/size][size=4][font=宋体][/font][/size][size=4][font=宋体] 通电之后,单片机要首先通过[font=Times New Roman]RESET[/font][font=宋体]脚发出一个脉冲,将[/font][font=Times New Roman]A3080[/font][font=宋体]复位,然后将[/font][font=Times New Roman]NPD[/font][font=宋体]升高,让[/font][font=Times New Roman]A3080[/font][font=宋体]处于工作状态。接着:[/font][/font][font=宋体][/font][/size][size=4][font=宋体]a. [font=宋体]通过[/font][font=Times New Roman]spi[/font][font=宋体]传输[/font][font=Times New Roman]SROM[/font][font=宋体], [/font][font=Times New Roman]SROM[/font][font=宋体]相当于[/font][font=Times New Roman]A3080[/font][font=宋体]的固件,不传输[/font][font=Times New Roman]SROM[/font][font=宋体]也可以,[/font][font=Times New Roman]A3080[/font][font=宋体]就工作在默认条件下,据实际测试,有[/font][font=Times New Roman]SROM[/font][font=宋体]的情况下表现好些。[/font][/font][font=宋体][/font][/size][size=4][font=宋体]b.[font=宋体]传输完[/font][font=Times New Roman]SROM[/font][font=宋体],就可以开始进行移动数据的读取了。[/font][/font][font=宋体][/font][/size][font=宋体][size=4][/size][/font][size=4][font=宋体] A3080[font=宋体]其实本身也是一个单片机,只不过是带了光学感应而已,拆过[/font][font=Times New Roman]IO[/font][font=宋体]的同学会发现,[/font][font=Times New Roman]IO[/font][font=宋体]只有一块芯片,这种类型的就是把[/font][font=Times New Roman]USB[/font][font=宋体]界面也做进去了,所以单靠自己就可以和电脑通信。[/font][/font][font=宋体][/font][/size][size=4][font=宋体] 既然[font=Times New Roman]A3080[/font][font=宋体]是单片机,那么无论什么操作都要遵循一个时间的概念。打比方说,主控执行了一次询问[/font][font=Times New Roman]A3080[/font][font=宋体]移动数据的操作,那么到下一次询问,要有一个至少的时间间隔,因为[/font][font=Times New Roman]A3080[/font][font=宋体]要花时间去准备和传输这些数据。我们在官方[/font][font=Times New Roman]PDF[/font][font=宋体]就可以看到,里面最关键的词就是[/font][font=Times New Roman]Delay[/font][font=宋体]。[/font][/font][font=宋体][/font][/size][font=宋体][size=4][/size][/font][size=4][font=宋体]3[font=宋体]、与[/font][font=Times New Roman]A3080[/font][font=宋体]的通信[/font][/font][font=宋体][/font][/size][font=宋体][size=4][/size][/font][font=宋体][size=4] SPI[font=宋体]通信有[/font][font=Times New Roman]4[/font][font=宋体]种模式,具体参考[/font][font=Times New Roman]SPI[/font][font=宋体]的资料,这里的重点是[/font][font=Times New Roman]A3080[/font][font=宋体]要用哪种模式呢。我们来仔细看官方的[/font][font=Times New Roman]PDF[/font][font=宋体]第[/font][font=Times New Roman]16[/font][font=宋体]页,关于[/font][font=Times New Roman]write [/font][font=宋体]和[/font][font=Times New Roman]read operation[/font][font=宋体]的描述。[/font][/size][/font][font=宋体][size=4][font=宋体][img]http://public.blu.livefilestore.com/y1pZdMULcvL1oHHCT8pDLXkqs-jQ56uhxyE1zJ9b2WSeMy5MO_cFMPCD2jDrH8DDiad2wHmzi6SVQKyYJudnOoX7A/T33.jpg?psid=1[/img] [/font][/size][/font][font=宋体][size=4][font=宋体][/font][/size][/font][font=宋体][size=4][font=宋体][font=宋体]我们可以获得这样的关键信息: [/font][font=宋体][/font][font=宋体]a. [font=宋体]读或写操作要靠发送的数据的最高位来区别,“[/font][font=Times New Roman]1[/font][font=宋体]”是写,“[/font][font=Times New Roman]0[/font][font=宋体]”是读。[/font][/font][font=宋体][/font][font=宋体]b. SPI[font=宋体]的工作模式,从主控端出发,应该是 [/font][font=Times New Roman]send out on SCLK rising edge, sampled on SCLK falling edge [/font][font=宋体]这个要和文中的描述反过来,它是从[/font][font=Times New Roman]Sensor[/font][font=宋体]的角度来描述的,而我们要考虑主控的角度。另外,我们还要结合[/font][font=Times New Roman]PDF[/font][font=宋体]中的图来进行设置的判断。[/font][/font][font=宋体][/font][font=宋体]c. 250ns[font=宋体]是[/font][font=Times New Roman]SCLK[/font][font=宋体]的最小[/font][font=Times New Roman]high[/font][font=宋体]状态[/font][font=Times New Roman],[/font][font=宋体]那么周期是[/font][font=Times New Roman]500ns,[/font][font=宋体]那么最高频率是[/font][font=Times New Roman]2Mhz, [/font][font=宋体]但是 实际上[/font][font=Times New Roman],[/font][font=宋体]到后面会发现我们的固件将以大概[/font][font=Times New Roman]3Mhz[/font][font=宋体]的[/font][font=Times New Roman]SCLK[/font][font=宋体]来通信[/font][font=Times New Roman],[/font][font=宋体]。没用示波器来看信号[/font][font=Times New Roman], [/font][font=宋体]但是读写[/font][font=Times New Roman]A3080[/font][font=宋体]一切正常,这个算是“超频”了[/font][font=Times New Roman]....[/font][/font][font=宋体][/font][font=宋体][/font][font=宋体]我们与[font=Times New Roman]A3080[/font][font=宋体]通信就是通过主控单片机的[/font][font=Times New Roman]SPI[/font][font=宋体]接口发出读或者写操作的命令,这些命令都体现成二进制的数据流,简单来说,就是两块芯片在互相发电报,发短信。[/font][/font][font=宋体][/font][font=宋体][/font][font=宋体][/font][font=宋体]再通过对比[font=Times New Roman]18f14k50 [/font][font=宋体]的[/font][font=Times New Roman]SPI[/font][font=宋体]模块的设置图和[/font][font=Times New Roman]A3080[/font][font=宋体]读写信息的序列图, 我们就能找出对应的[/font][font=Times New Roman]SPI[/font][font=宋体]工作模式了。[/font][/font][font=宋体][font=宋体][/font][/font][font=宋体][font=宋体][img]http://public.blu.livefilestore.com/y1pAQC9-vMwCIgaJKcUhxpEyQIzhq08LPKvrtLXiV40fpn4A2xcGFr2Gf_UYSU6ysuYAeT3kKqARrC9Pu8GWoeEhA/T34.jpg?psid=1[/img] [/font][/font][font=宋体][font=宋体][/font][/font][font=宋体][font=宋体] [img]http://public.blu.livefilestore.com/y1pNmulwgsGhcfJTA9Dh-G-2zIhToDO1TbRnJwJiwEfFZJC7C1eMn--v3pycg7PSds3bIbBKKzp1BZxn9iyJwvrWA/T35.jpg?psid=1[/img] [/font][/font][font=宋体][font=宋体][/font][/font][font=宋体][font=宋体][font=宋体]4[font=宋体]、[/font][font=Times New Roman]ADNS-3080[/font][font=宋体]的各种延时[/font][/font][font=宋体][/font][font=宋体] 要发掘[font=Times New Roman]ADNS-3080[/font][font=宋体]的强大,[/font][font=Times New Roman]PDF[/font][font=宋体]要基本看,要消化,所以,不要怕阅读。[/font][font=Times New Roman]P17[/font][/font][/font][/font][/font][/size][/font][font=宋体][size=4][font=宋体][/font][/size][/font][font=宋体][size=4][font=宋体][/font][/size][/font][font=宋体][size=4][font=宋体][img]http://public.blu.livefilestore.com/y1pBQ8Ed7GSlBAz9cy6diV95zuMGkG03DqeywD25ata8lOTLlRLAxFbnA_J-ZI_rJh6TuTaiDrAkbo-3yuWGvp8vw/T36.jpg?psid=1[/img] [/font][/size][/font][font=宋体][size=4][font=宋体][font=宋体]基本上 比较特殊的是读操作,地址[font=Times New Roman]0x02, motion[/font][font=宋体]这个寄存器需要[/font][font=Times New Roman]75us[/font][font=宋体]的延时,到后面真正编写鼠标固件的时候会看到这些延时的操作,现在先留个印象。[/font][/font][font=宋体][/font][font=宋体][/font][font=宋体]ADNS-3080[font=宋体]的[/font][font=Times New Roman]SROM[/font][font=宋体]传输, [/font][font=Times New Roman]Moion Burst[/font][font=宋体]读取模式也是比较特殊, 建议到[/font][font=Times New Roman]PDF[/font][font=宋体]的[/font][font=Times New Roman]P18[/font][font=宋体]页开始大概浏览一下就可以了,同样会在写鼠标固件的时候讲解一下[/font][/font][font=宋体][/font][font=宋体][/font][font=宋体]5[font=宋体]、[/font][font=Times New Roman]ADNS-3080[/font][font=宋体]的参数与设置[/font][/font][font=宋体][/font][font=宋体] [color=#FF0000]a. DPI[font=宋体]可以在[/font][font=Times New Roman]1600[/font][font=宋体]与[/font][font=Times New Roman]400[/font][font=宋体]之间切换, 我们如果是要[/font][font=Times New Roman]800[/font][font=宋体]怎么办? [/font][font=Times New Roman]1600[/font][font=宋体]的状态下,获得的移动数据除以[/font][font=Times New Roman]2[/font][font=宋体],四舍五入就可以了。[/font][/color][/font][font=宋体][color=#FF0000][/color][/font][color=#FF0000][font=宋体] b. fram rate[font=宋体]可以设定为[/font][font=Times New Roman]2000[/font][font=宋体]~[/font][font=Times New Roman]6469[/font][font=宋体]间任意整数[/font][/font][font=宋体][/font][/color][font=宋体][color=#FF0000] c. [font=宋体]通过[/font][font=Times New Roman]Squal[/font][font=宋体]寄存器, 我们可以知道当前所用鼠标垫是否适合[/font][font=Times New Roman]A3080[/font][font=宋体]使用[/font][/color][/font][font=宋体][/font][font=宋体][/font][font=宋体]暂时[font=Times New Roman]A3080[/font][font=宋体]能挖掘的也就这几个东西了,不过肯定会有更有想象力的人把[/font][font=Times New Roman]A3080[/font][font=宋体]榨干,这里写的东西只是抛砖引玉,大家掌握以后可以充分发挥自己的创造力。我们下期再继续![/font][/font][/font][/size][/font]
    点赞 (0) 回复
  • 会员头像
    超电磁侠  2011-01-15 19:33:15
    站位
    点赞 (0) 回复
  • 会员头像
    超电磁侠  2011-01-15 19:32:58
    站位
    点赞 (0) 回复

52篇 文章总数

334507 总阅读量