USB-CAN适配器设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于USB的CAN总线适配器设计 07自动化4班 梁海森 (200730460411) 邝巨泉 (200730460409) 1、摘 要 随着现场总线技术和计算机外设接口技术的发展,现场总线与计算机快速有效的连接又有了更多的方案,USB作为一种新型的接口技术,以其简单易用、速度快等特点而备受青睐。本文简要提出了USB 接口与CAN总线连接方案,论述了系统的硬件构成,固件开发和驱动程序等内容。 关键词:现场总线 USB CAN总线 2、引 言     该系统主要由AT89C52控制电路、USB 接口电路、CAN总线电路、挂起复位电路、光电隔离电路等组成,本设计系统主要部件结构图如下: 图1 硬件电路结构图  .1 AT89C52控制电路   AT89C52 是一个低电压,高性能CMOS 8位单片机,片内置8k bytes的可反复擦写的Flash存储单元和256 bytes的随机存取数据存储器(RAM),功能强大。89C52是该接口电路的控制核心,其中P0,P2口用做16位数据I/O口,P1,P3口用做控制。 .2 CAN总线   在本系统中,CAN控制器采用Philips公司生产的SJA1000,它作为一个发送、接受缓冲器,实现主控制器和总线之间的数据传输;CAN收发器采用TJA1050芯片,它是CAN控制器和物理总线的接口,主要可以提供对总线的差动发送能力和对CAN控制器的差动接受能力。 在CAN总线结构中,总线的两端还要配置两个120Ω的电阻,其作用是总线匹配阻抗,可以增加总线传输的稳定性和抗干扰能力,减少数据传输中的出错率。为了增强CAN总线节点的抗干扰能力,SJA1000的TXO和RX0可通过高速光耦6N137与TJA1050相连,这样就很好的实现了总线上各节点的电气隔离。光耦部分电源与CAN_V必须用小功率电源隔离模块进行隔离,这样就提高了节点的稳定性和安全性。 .3 USB接口   图 CAN的发送数据流程图 CAN接收数据的流程 发送数据子程序代码(例): int can_tran_file(int id ,char *f) { void far *ptr; char ch; int i,j,re_comd,length; FILE *fp; get_ram_access_right(); /*获得双口RAM控制权*/ ptr=MK-FP(xd000,0); /*将命令、文件名、文件长度和文件内存 入双口RAM*/ FP_OFF(ptr)+=x100; pokeb(FP_SEG(ptr),FP_OFF(ptr),02); FP_OFF(ptr)++; pokeb(FP SEG(ptr),FP OFF(ptr),id); FP_OFF(ptr)++; pokeb(FP_SEG(ptr),FP_OFF(ptr),1); FP_OFF(ptr)++; i=0; while(f[i]!=\0) { pokeb(FP_SEG(ptr),FP_OFF(ptr),f[i]); FP_OFF(ptr)++; i++; } pokeb(FP_SEG(ptr),FP_OFF(ptr),f[i]); ptr=MK_FP(oxd000,0); FP_OFF(ptr)+=ox120; if(!(fp=fopen(f,rb))) { release_ram_acces_right(); return(6); } i=0; while(!feof(fp)) { fread(ch,sizeof(char),1,fp); pokeb(FP_SEG(ptr),FP_OFF(ptr),ch); FP_OFF(ptr)++; i++; } fclose(fp); length=i-1; ptr=MK_FP(oxd000,0); FP_OFF(ptr)+=0x114; poke(FP_SEG(ptr),FP_OFF(ptr),length); release_ram_acces_right(); /*释放双口RAM控制权*/ inportb(0x218); /

文档评论(0)

中华书局 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档