#1楼主:EDN USB学习板之实战第六个USB程序:自己定义的USB设备 [精华]
文章发表于:2008-03-13 01:30
下载整个工程包:
地址1:UsbOfCompuer00.rar
地址2:
下载地址3:
本次实战程序是自定义的USB设备,所以操作系统并没有自带驱动,需要自己开发。
在经过无数次的蓝屏和郁闷之后,圈圈终于成功写好了驱动程序。启用了D12的端
点1和端点2,端点1为中断传输,最大包为16字节,查询间隔为10ms。端点2为批量
传输,最大包为64字节。端点1的输出第一个字节为控制END USB板上的LED的,每个
bit代表一个LED,为1时表示对应的LED亮。端点1的输入第一个字节为返回的开关
状态,每个bit代表一个按键,为时表示对应的按键按下。输出端点2的数据通过串
口发送出去,串口接收到的数据通过端点2返回。圈圈写了一个上位机软件,可以
通过它控制EDN USB板上的8个LED、显示8个按键的状态、往端点2发送数据、从端点
2读数据等操作。
驱动程序和应用程序可在我的博客中下载:
http://group.ednchina.com/93/
http://www.ednchina.com/blog/computer00
http://computer00.21ic.org
#2
文章发表于:2008-05-12 13:05
OO您好:我已经验证过usb鼠标都很正常,但是做自定义设备实验枚举却不正常不知何故
#4
文章发表于:2008-05-13 20:30
好文,水平有限呀,不是太明白.
我最近在EDN USB学习板上调通了一个无线键盘的程序,无线用的是NRF401. 但是本设计有一个非常不爽的地方就是,我的接收端是一直向USB端点发数据的,没有键按下时,不能的向USB端点发数据0.我也尝试将其改成只有键按下时才发数据.可尝试了两天还不没有解决.下面发出修改后的程序,望有兴趣的网友可以帮我看看,为何我的程序不成功.多谢了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 详细的设计请看:http://blog.ednchina.com/highflu/115188/message.aspx
#5
文章发表于:2008-05-13 22:58
当有按键动作的时候才返回数据。例如案键松开、按键按下时,才将数据返回给USB。
例如我的键盘程序:
if(KeyUp||KeyDown)
{
//返回8个字节数据
KeyUp="0";
KeyDown="0";
write_endpoint_buff(5,8,InBuffer);
}
#6
文章发表于:2008-05-14 19:50
这点我试过了,就是有问题嘛!! 所以想好好的请教你,当按键松开、按键按下时,才将数据返回给USB时,不知道为何就是不成功,而且发的数据往往是不正确的,开始还以为是NRF2401的问题.后来仔细的测试了它,就是它5 个数据.0x55,KeyPress,KeyUp,KeyDown,0xaa.
我是先判断接收的第一个数和第五个数是否是0x55和0xaa,是正确的话就将KeyPress,KeyUp,KeyDown作为正确的数来用.这个想法应该是没有问题的.可就一直没有成功.
还请多多指教呀!!!!