|
一直比较关心USB,断断续续学习了一些USB的协议,发现很难搞,前段时间在论坛上看到一个毕设做STM32的示波器,再加上圈圈的《圈圈教你玩USB》,再加上EK-STM32F板子、英贝德的AT91SAM7X256的板子,凑齐了硬件,于是开始全面搞USB了。
本来最先搞的STM32的,USB上下位机都通了,但是CAN不能和USB同时用,就转到AT91来了,我们实验室最常用的就是CAN和RS422,但大多是PCI的CAN板卡,用起来太费劲,很早就想做一个USB转CAN的东西。
上位机软件自然是: VC++6.0 , DriverStudio3.2 , DDK,至于安装顺序,DriverStudio设置,网上很多资料,我不再讲了,圈圈的书也写了,这个论坛里也有教程。
下位机用的是Keil ARM 3.22.
以下是几个图片:
TJA1050和AT91SAM7x256接口 (原文件名:CAN.JPG)
USB和时钟 (原文件名:USB和主时钟.JPG)
上位机的VC截图 (原文件名:VC.JPG)
说明:
USB转CAN,作为CAN调试工具
作者 Ahui
邮箱 chuanhuibh@sina.com
日期 : 2009.7.12
版本 : V1.1
CAN2.0 标准帧 ,ID为0到255(没有用11bit) , 波特率500K,一次最多发送8字节数据
USB2.0 全速设备
硬件: 英贝德AT917X256 实验板 和WindowsXP PC
上位机软件: Visul C++ 6.0 , DDK , DriverSttudio3.2
下位机软件: Keli ARM MDK3.22
参考资料: USB协议,《圈圈教你玩USB》, AT91SAM7X256,AT91SAM7S64cn 芯片手册 ,
圈圈的USBtoUART在 21ic AT91SAM7S64实验板的实现代码。
使用方法:连好CAN线缆,USB线缆,电路板接通电源后,Windows提示发现新设备
然后选择自己安装驱动并把驱动目录引导到此文件夹的“Windows驱动”目录,
装玩驱动之后,打开VC上位机中的软件,软件上有个帮助按钮。
申明:(1) 初级版本目前还处于完善状态,有BUG请电子邮件告知,谢谢。
(2) 下位机USB协议栈基本为圈圈所作,本人不享有此部分版权。
(3) 转载需经本人同意,并请注明原作者和出处。
(4) 只做学习交流,禁止商用。
注意事项:
关于USB的驱动,一直没有特别详细的资料,我要补充一点:DriverStudio根据你的设置,主要是PID和VID,以及Endpoint,生成一个框架,调用DDK的东西去编译生成了2个东西,一个是inf文件,装驱动时会用到,另一个是lib库,你开发VC应用程序通过它去访问设备。
当你生成USB的驱动之后,你需要重新再用Vc6新建一个应用程序(我以前以为DriverStudio生成的就可以当最后的应用程序),把DriverStudio生成的Vc工程的库里面的interface.h拷贝到你的应用程序的VC工程中,这里有GUID,这个GUID是你的USB器件是一一对应的,和PID和VID是关联的,这样你就可以用VC的工程对你那个USB设备访问了。
还有就好似DriverStduio生成的程序要修改的,应用程序编起来也比较麻烦,可以参看圈圈的代码。
下位机USB基本上是从圈圈那里移植的,CAN的东西是我们实验室的成熟代码,从ADS移植到Keil就可以了,本来Keil自带at91的USB,也可以用,但是我移植Keil自带USB时,只能写不能读(读时PC死机),对于别人的USB,你只要移植 描述符和端点配置就可以了,当然端点中断的回调函数也要改,内核就不必动了。
在做之前最好要了解USB的协议,越详细越好。
资料:
ARM程序:
ARM的程序ourdev_462112.rar(文件大小:473K) (原文件名:AT91SAM7X256_Keil_ARM.rar)
上位机应用程序:
VC6.0上位机应用程序ourdev_462113.rar(文件大小:69K) (原文件名:VC上位机.rar)
USB驱动:
PC端的USB驱动ourdev_462114.rar(文件大小:112K) (原文件名:Windos驱动.rar) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|