在写这篇文章前,先要感谢COMPUTER00提供的漂亮的测试程序,让我少走了很多的弯路. 不想多说,彩云的工作态度真是我们的榜样呀!!! 为此我一下买了7套学习板.
在00的指导下我十分顺利的调好了EDN USB学习板的键盘实战程序. 由于本人比较喜欢玩无线,刚好手头也有凌阳公司的NRF2401模组,也就有了想做个无线键盘,无线鼠标什么玩玩的.说做就做.
想法是好的,想做好这个还是有点难度了,还好有EDN 这么好的学习环境.大家都在用心的学习新的知识.让我感觉很有气氛.
NRF2401模组我早就调好,收发数据也十分的稳定,有兴趣的话可以看我我之前写的关于NRF2401无线传输的文章.多谢00呀,将单片机的所有的引脚都引出来,方便了我们的二次开发.对着原理图我认真的分析.NRF2401只能连接到.P1,P2口上因为P0和P3口上分别有USB的数据线和中断,读,写等信号线. 凌阳的无线模组的引脚固定死了,如下图:
有10个引脚.分别是:VCC,PWR,CE,CS,R1,C1,D1,NC,NC,GND
没有办法进行改变,.只是后面两个脚没有和任何脚相连,可以和最后的一个地线焊到一起去!这是我成功的一个小方面:-).
几经分析后,发送按键 键值的USB 学习的NRF2401无线模组插在P0口上是最方便的.千万不可以插在P1口在,因为EDN USB学习析上的键盘连在P1口,如:NRF2401的+J1脚连到VCC上(从ISP下载口上引最方便)如果第一键按下了话,会出现非常严重的后果:短路短路短路短路短路短路.原因嘛留给网友自己去想吧!但是让我们再次看看P0口上的引脚吧,我们从上向下看的顺序是:
VCC,P0^0,P0^1,P0^2,P0^3,P0^4,P0^5,P0^6,P0^07,EA
而EA脚连接的是什么了,VCC呀.这样的无线模插上去是话不会有作用的.还有可能会烧掉的.想想......................................
EA脚嘛接上高电平,没有必要引出来.我们完全可以将它剪掉.没有办法,我也不想,只能对我的USB学习板进行大胆的动刀了.再将我们的无线模组进行小小的改动.将两个NC脚中的一个与最后一个GND引脚焊上就可以了!这样就可以用连接线将NRF2401的GND连到EDN USB学习板上的GND上.
而接收按键 键值的EDN USB 学习板的NRF2401无线模组插在P1口上.由上分析P0,P3口是不能用的.那么P2了,真是可以吗? 让我们一起来分析一下吧.EDN USB学习板的P2上连接的是LED,当给P2一个高电平时,LED必会点亮.那么由于LED的分压作用,给NRF2401引脚上的电平就会发生区大的变化,不再是高电平.而是一个不大确定的状态.现在我们提到一个结论,NRF2401无线模块只能插在P1口上.
至此我们的硬件方案定下.发张图看看吧:
下面我们谈一下软件的相关细节这方面我的程序内部有非常详细的备注),主要说一点:接收按键 键值的EDN USB 学习板在响应HID 10MS的中断时,必须将关闭无线接收程序.在此我设了个rece_enable的标志位.在响应中断时.置rece_enable = 0;经过一天的调试后我终于调通无线键盘的程序.
功能:K1:左Ctrl键 K2:左Shift键 K3:左Alt键 K4:0键 K5:1键 K6:2键 K7:Caps Lock键 K8:Num Lock键
缺点与改进意见:
本设计有一个非常不爽的地方就是,我的接收端是一直向USB端点发数据的,没有键按下时,不断向USB端点发数据0.我也尝试将其改成只有键按下时才发数据.可尝试了两天还不没有解决.下面发出修改后的程序,望有兴趣的网友可以帮我看看,为何我的程序不成功.多谢了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
用户4239 2010-8-24 23:38