搜索
bottom↓
回复: 67

搞定AT91SAM7x的USB转CAN----公布上位机USB程序和下位机全部程序

[复制链接]

出0入0汤圆

发表于 2009-7-17 20:47:50 | 显示全部楼层 |阅读模式
一直比较关心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周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入0汤圆

发表于 2009-7-17 20:48:58 | 显示全部楼层
好东西,要顶

出0入0汤圆

 楼主| 发表于 2009-7-17 20:49:25 | 显示全部楼层
一年来很少发帖,主要是实验室有活,比较忙,虽然上线,但是主要是找资料,今天有空整理一下,这个东西上周就搞定了。
希望对搞USB和CAN的朋友有帮助。

出0入0汤圆

 楼主| 发表于 2009-7-17 20:52:25 | 显示全部楼层
对了,原理图我没有发,一是原理图只涉及到USB和CAN,电路很简单,其他部分的主要考虑到跟 人家的商业利益有冲突,而且跟这个帖没关系,所以只发部分图,我想完全是足够的了。

出0入0汤圆

发表于 2009-7-18 09:01:12 | 显示全部楼层
应该置酷奥

出0入0汤圆

发表于 2009-7-18 10:45:44 | 显示全部楼层
不错,顶一个.
楼主放心,这个东西最核心的就是usb转can的通讯协议,还有上位机软件.一般人是做不到跟别人有商业利益冲突的.

出0入0汤圆

发表于 2009-7-18 15:58:16 | 显示全部楼层
好东西,一定要顶

出0入0汤圆

发表于 2009-7-18 16:12:27 | 显示全部楼层
还是一个芯片方案好。
我做的方案:2102+m128+sja1000+隔离驱动模块,成本都快要上百了,受串口速度瓶颈显示。
顶一个!

出0入0汤圆

发表于 2009-7-18 21:54:32 | 显示全部楼层
不错,留贴记号! COOL

出0入90汤圆

发表于 2009-7-18 21:56:49 | 显示全部楼层
支持楼主!楼主看来是完全USB入门了啊!

出0入0汤圆

发表于 2009-7-18 22:16:27 | 显示全部楼层
马克.

出0入0汤圆

发表于 2009-7-20 21:27:39 | 显示全部楼层
把SAM7X的USB设置为cdc-serial模式,上位机使用超级终端,通过PC模拟的串口发送数据,SAM7X的USB收到数据后,再把数据通过CAN口转发出去(透传),反之亦然,这样不是很方便吗?而且使用IAR,CAN驱动和协议、USB协议和转RS232的程序全都有现成的,最多自己做板的时候,按照硬件修改一下board.h和一些必要的配置就行了,应该不难!
    从工程实现的角度来看,个人认为楼主绕了弯路,现在的研发,就是要拿现有的东西据为己用,尽快出产品;但是从学习的角度来看,做一个项目能把所有经历到的东西都学习一遍,提高自己的能力,必须大力赞扬楼主,弘扬钻研精神!

出0入0汤圆

 楼主| 发表于 2009-7-22 09:52:14 | 显示全部楼层
flywithwcy:
CDC模式很慢啊,这个思路我以前就想过,限于速度,不是太好,所以就干脆把USB做到底了

出0入0汤圆

发表于 2009-7-22 10:02:22 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-7-22 10:07:58 | 显示全部楼层
cool

出0入0汤圆

发表于 2009-7-22 11:14:32 | 显示全部楼层
好东西,感谢楼主。

出0入0汤圆

发表于 2009-7-23 17:59:37 | 显示全部楼层
To【楼主位】 chuanhuibh

写个DriverStduio的教程啊

出0入0汤圆

发表于 2009-7-23 22:29:20 | 显示全部楼层
顶一下

出0入0汤圆

 楼主| 发表于 2009-7-24 21:11:59 | 显示全部楼层
【17楼】 hfmedical
积分:39,

买 圈圈的书吧,在编驱动时参考他的书就够了,应用程序可以看看我的代码

出0入0汤圆

发表于 2009-7-27 16:29:05 | 显示全部楼层
圈圈的书吧,书店有卖吗?

出0入0汤圆

发表于 2009-8-12 08:49:32 | 显示全部楼层
楼主,好人啊........大侠啊.......
我最近也在研究SAM7X...楼主能发一个SAM7X的CAN 测试程序吗?
谢谢了

出0入0汤圆

发表于 2009-8-12 09:14:20 | 显示全部楼层
向楼主贡献的致敬  
楼主能把CAN的程序贡献一下吗?我买的开发板带的CAN程序有问题:只能运行一次,第二次调试程序就跑飞了,必须要重新上电后才可以......不知道问题出在哪里?
楼主,能帮帮忙吗?

出0入0汤圆

发表于 2009-12-2 22:57:40 | 显示全部楼层
一窍不通的人飘过......纯支持楼主...佩服楼主...有机会向楼主学习,楼主高手啊!我们公司用的是德国的USB to can!最后...向楼主致敬.......我是专门为了顶楼主才注册的!谢谢!

出0入0汤圆

发表于 2009-12-3 00:52:13 | 显示全部楼层
好贴
楼主是好人

出0入0汤圆

发表于 2010-1-1 18:59:00 | 显示全部楼层
谢谢了

出0入0汤圆

发表于 2010-1-1 19:35:22 | 显示全部楼层
爪~虚拟成cdc类的iar已经有现成的例子了,真正的usb设备例子一直没找到,多谢楼主~

出0入0汤圆

发表于 2010-1-1 20:03:40 | 显示全部楼层
多谢楼主无私奉献.下一个学习.

出0入0汤圆

发表于 2010-1-1 20:37:16 | 显示全部楼层
谢谢楼主无私分享

出0入0汤圆

发表于 2010-1-1 21:26:10 | 显示全部楼层
不错

出0入0汤圆

发表于 2010-1-1 22:17:58 | 显示全部楼层
赞一个!

出0入0汤圆

发表于 2010-1-1 23:14:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-4 09:06:18 | 显示全部楼层
多谢楼主无私奉献.下一个学习.

出0入0汤圆

发表于 2010-1-4 09:08:43 | 显示全部楼层
多谢楼主无私奉献.下一个学习.

出0入0汤圆

发表于 2010-1-4 09:09:12 | 显示全部楼层
多谢楼主无私奉献.下一个学习.

出0入0汤圆

发表于 2010-1-4 09:11:46 | 显示全部楼层
Mark

出0入0汤圆

发表于 2010-1-4 13:06:44 | 显示全部楼层
顶。。。。。。。。

出0入0汤圆

发表于 2010-1-4 22:11:44 | 显示全部楼层

出0入0汤圆

发表于 2010-1-9 12:35:15 | 显示全部楼层
出来个高手把它修改成全波特率和双通道的就可以出套件了,不过AT91的片子太贵了可以用STM32F105或者NXPLPC23XX或者LPC17XX,上位机带上各种高层协议解析就牛了

出0入0汤圆

发表于 2010-1-27 15:47:19 | 显示全部楼层
这个真不错,记号先

出0入0汤圆

发表于 2010-1-27 17:44:51 | 显示全部楼层
这个要顶,不错

出0入0汤圆

发表于 2010-1-27 18:25:14 | 显示全部楼层
刚刚才发现那么好的资料,顶一个

出0入0汤圆

发表于 2010-1-30 21:46:35 | 显示全部楼层
这个都不给酷,版主去做啥去了。。

出0入0汤圆

发表于 2010-1-30 21:52:27 | 显示全部楼层
感谢楼主的分享, 不知道时候可以交个朋友.

lvhaian1982#163.com

出0入0汤圆

发表于 2010-1-31 16:07:08 | 显示全部楼层
记号

出0入0汤圆

 楼主| 发表于 2010-2-3 20:18:59 | 显示全部楼层
to :powerSTM 农夫山拳
全波特率很简单啊,至于STM32,NXP等片子,我考虑过,STM32F103是不支持CAN与USB同时使用的,105我这里没板没片子,NXP的我在玩LPC2468,价格与AT91SAM7X无异。
现在我已经自己做了一块PCB板,可以装到一个小盒子里,过年之后才能加工PCB,到时我再把软硬件完善一下,感觉软件可以改成HID,那样可以绕过DeiverStudio和DDK,简单不少,上位机界面也确实很丑,我还要改改。。
到时一定公布所有资料。

【43楼】 lvhaian 安哥
你是本坛的大人物啊,看你的产品挺有意思的,我的邮箱是chuanhuibh@sina.com,如果有什么问题我会请教你的。

出0入0汤圆

发表于 2010-2-3 21:45:16 | 显示全部楼层
谢谢楼主
头像被屏蔽

出0入0汤圆

发表于 2010-2-3 23:25:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2010-2-26 21:03:55 | 显示全部楼层
【47楼】 bbs2009
请教一下,你是否成功的用 LIBUSB 访问过STM32或者其他的ARM?
我只在AVR下成功访问过,在STM32和AT91下,根据PID和VID,用LIBUSB找不到器件,不知为什么?

出0入0汤圆

发表于 2010-2-26 21:45:40 | 显示全部楼层
期待楼主的基于LPC2468的usb转can。
头像被屏蔽

出0入0汤圆

发表于 2010-2-26 23:36:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2010-3-2 20:29:41 | 显示全部楼层
to :powerSTM 农夫山拳
全波特率很简单啊,至于STM32,NXP等片子,我考虑过,STM32F103是不支持CAN与USB同时使用的,105我这里没板没片子,NXP的我在玩LPC2468,价格与AT91SAM7X无异。
现在我已经自己做了一块PCB板,可以装到一个小盒子里,过年之后才能加工PCB,到时我再把软硬件完善一下,感觉软件可以改成HID,那样可以绕过DeiverStudio和DDK,简单不少,上位机界面也确实很丑,我还要改改。。
到时一定公布所有资料。

2468。。。。。??封装是LQFP208/BGA 的?还是2368?我拿LPC2119在做 CAN的东西,流量大了发送开始丢帧,很郁闷

出0入0汤圆

发表于 2010-3-2 21:15:27 | 显示全部楼层
强帖留名!

出0入0汤圆

发表于 2010-3-3 16:00:12 | 显示全部楼层
mARK

出0入0汤圆

发表于 2010-3-9 19:58:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-27 09:23:49 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-6-1 17:35:13 | 显示全部楼层
顶!!

出0入0汤圆

发表于 2010-6-27 21:24:49 | 显示全部楼层
马克。。 。

出0入0汤圆

发表于 2010-6-27 22:01:42 | 显示全部楼层
参考,参考

出0入0汤圆

发表于 2010-8-2 23:25:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-15 17:15:42 | 显示全部楼层
楼主好,我最近在用lpc2368做一个usb转can的设备,但是现在usb端调通了,可是can端却收不到usb发来的数据,请问这一般是哪些问题?我qq邮箱897118408@qq.com,多谢指教

出0入0汤圆

发表于 2013-4-15 15:53:57 | 显示全部楼层
好东西   

出0入0汤圆

发表于 2013-8-23 09:22:47 | 显示全部楼层
值得收藏啊

出0入0汤圆

发表于 2014-5-19 23:31:02 | 显示全部楼层
再次观望楼主,再次定楼主,3年前看过此贴!继续膜拜!

出0入0汤圆

发表于 2014-5-19 23:33:40 | 显示全部楼层
不对,是5年前,哈哈!那时刚刚接触can。现在是了解了一些!还得向楼主学习!

出0入0汤圆

发表于 2017-7-10 00:07:54 | 显示全部楼层
mark                                               
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-17 07:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表