ATRM多路CAN总线接口及驱动程序设计(完整).docVIP

ATRM多路CAN总线接口及驱动程序设计(完整).doc

  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文档。上传文档
查看更多
基于AT91RM9200 的多路CAN总线接口及驱动程序设计 ■北京交通大学 徐晓东 路红英 张宁 摘 要 本文结合实际需求,提出了一种多路CAN总线接口的设计方法。系统硬件主体采用AT91RM9200和MCP2515,操作系统采用arm-linux。详细介绍了硬件的接口设计,并针对该硬件接口设计分析了arm-linux下的驱动程序各接口的设计方法,并对驱动程序实现过程中需要注意的问题进行了深入分析。经过测试,该设计方案可以满足应用的要求。 关键词 AT91RM9200 MCP2515 arm-Linux CAN SPI 驱动程序 0 引言 在铁路系统中,为了保证列车的安全运行,需要对铁轨及周围状况进行实时检测。目前采用的方法是在铁路沿线安装多个检测设备,用于检测洪水、大风、泥石流等自然灾害及轨温等参数。这些设备一般采用的通信方式是RS-232、RS485或CAN,并通过专线连接至监控中心的各个监控设备。这种方式极大浪费了线路资源,也不易于设备的统一管理。因此,需要一种安装在铁路沿线的设备,它将附近的检测设备发送的信息统一收集并通过一条专线直接送往监控中心。为了和多个检测设备通信,我们的设备必须同时具有多个RS-232、RS-485和CAN接口。本文即是出于这种应用需要,提出了扩展多个CAN总线接口的方法。 1 系统结构 1.1 芯片介绍 本系统采用ATMEL公司的AT91RM9200(以下简称9200)作为MCU,该处理器基于ARM920T内核,主频为180MHz时,性能可达到200MIPS,最高主频为209MHz。同时该处理器还具有丰富的外设资源,非常适合工业控制领域的应用[1]。采用的操作系统是Arm-Linux,内核版本为2.4.19。 目前主流的CAN协议控制器一般采用I/O总线(SJA1000等)或SPI接口(MCP2515等)与MCU进行通信。由于我们采用PC/104总线扩展卡的方式来扩展多个RS-232和RS-485接口,没有多余的I/O片选线可用,因此我们最终选用9200的SPI接口与MCP2515进行多路CAN总线接口的扩展。 MCP2515是具有SPI接口的独立CAN控制器,它完全支持CAN V2.0B技术规范,通讯速率最高可达1Mb/s,内含3个发送缓冲器、2个接收缓冲器、6个29位验收滤波寄存器和2个29位验收屏蔽寄存器[2]。它的SPI接口时钟频率最高可达10MHz,可满足一个SPI主机接口扩展多路CAN总线接口的需要。 1.2 系统硬件接口 系统硬件接口的原理框图如图1和2所示。图1是9200与MCP2515的接口框图,通过9200的SPI接口,连接了5个MCP2515。由于9200的SPI从设备片选线数量有限,故采用片选译码方式,NPCS0可作为普通的外部中断线使用(NPCS0与IRQ5复用引脚)。由于9200的外部中断线资源有限,我们采用中断线共享的方式,即分别有两个MCP2515共享同一中断线,最后一个MCP2515独占一条中断线,以满足不同通信速率下数据处理的需要。 图 1 AT91RM9200与MCP2515接口框图 图2 是MCP2515的外围CAN总线接口框图,图中省略了MCP2515和9200的接口部分。由于设备需要安装在铁路沿线,必须具有防雷击的能力。因此MCP2515 与CAN总线收发器(TJA1050)之间采用高速光耦进行完全的电气隔离,并且光耦两端电路的电源也必须用电源隔离模块隔离开,这样才能真正起到隔离的作用。在TJA1050的CANH和CANL引脚与地之间连接两个30pF的电容可以过滤CAN总线上的高频干扰,两个二极管可以在总线电压发生瞬变干扰时起保护作用。光耦正常工作时输入电流为10mA左右,内部发光二极管的正向电压降为1.7V左右,因此要特别注意输入端串联电阻的阻值选择。 图2 MCP2515 CAN总线接口电路 2 SPI主机的工作方式 9200通过SPI接口与五个MCP2515进行通信,9200的SPI控制器工作在主机模式,MCP2515工作在从机模 式。MCP2515支持多个指令(如复位指令、读指令、写指令等),以便于9200通过SPI接口对MCP2515的内部寄存器进行读写操作。9200 SPI控制器作为主机时工作模式流程如图3所示[1]。 图3 9200 SPI控制器主机模式流程图 需要注意的是,SPI使能后,只有在SPI_TDR(发送数据寄存器)中有数据时,才会根据片选配置(固定外设或可变外设)使能相应片选,而SPI_TDR中无数据时,则片选自动禁用。因此,9200向MCP2515连续发送多个字节时,要保证在前一个字节传输完毕前,后一个字节就被写入到SPI_TDR中,以避免片选被自动禁用。同时,在传输完每一个字节后,

文档评论(0)

ipad0c + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档