基于mcp2515的多路can总线系统设计

基于mcp2515的多路can总线系统设计

ID:12797097

大小:1.05 MB

页数:0页

时间:2018-07-19

基于mcp2515的多路can总线系统设计_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《基于mcp2515的多路can总线系统设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于AT91RM9200的多路CAN总线接口及驱动程序设计■北京交通大学徐晓东路红英张宁摘要本文结合实际需求,提出了一种多路CAN总线接口的设计方法。系统硬件主体采用AT91RM9200和MCP2515,操作系统采用arm-linux。详细介绍了硬件的接口设计,并针对该硬件接口设计分析了arm-linux下的驱动程序各接口的设计方法,并对驱动程序实现过程中需要注意的问题进行了深入分析。经过测试,该设计方案可以满足应用的要求。关键词AT91RM9200MCP2515arm-LinuxCANSPI驱动程序70引言在铁路系统中,为了保证列车的安全运

2、行,需要对铁轨及周围状况进行实时检测。目前采用的方法是在铁路沿线安装多个检测设备,用于检测洪水、大风、泥石流等自然灾害及轨温等参数。这些设备一般采用的通信方式是RS-232、RS485或CAN,并通过专线连接至监控中心的各个监控设备。这种方式极大浪费了线路资源,也不易于设备的统一管理。因此,需要一种安装在铁路沿线的设备,它将附近的检测设备发送的信息统一收集并通过一条专线直接送往监控中心。为了和多个检测设备通信,我们的设备必须同时具有多个RS-232、RS-485和CAN接口。本文即是出于这种应用需要,提出了扩展多个CAN总线接口的方法。1系统

3、结构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片选线可

4、用,因此我们最终选用9200的SPI接口与MCP2515进行多路CAN总线接口的扩展。MCP2515是具有SPI接口的独立CAN控制器,它完全支持CANV2.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。由于92

5、00的SPI从设备片选线数量有限,故采用片选译码方式,NPCS0可作为普通的外部中断线使用(NPCS0与IRQ5复用引脚)。由于9200的外部中断线资源有限,我们采用中断线共享的方式,即分别有两个MCP2515共享同一中断线,最后一个MCP2515独占一条中断线,以满足不同通信速率下数据处理的需要。图1AT91RM9200与MCP2515接口框图7图2是MCP2515的外围CAN总线接口框图,图中省略了MCP2515和9200的接口部分。由于设备需要安装在铁路沿线,必须具有防雷击的能力。因此MCP2515与CAN总线收发器(TJA1050)之

6、间采用高速光耦进行完全的电气隔离,并且光耦两端电路的电源也必须用电源隔离模块隔离开,这样才能真正起到隔离的作用。在TJA1050的CANH和CANL引脚与地之间连接两个30pF的电容可以过滤CAN总线上的高频干扰,两个二极管可以在总线电压发生瞬变干扰时起保护作用。光耦正常工作时输入电流为10mA左右,内部发光二极管的正向电压降为1.7V左右,因此要特别注意输入端串联电阻的阻值选择。图2MCP2515CAN总线接口电路2SPI主机的工作方式9200通过SPI接口与五个MCP2515进行通信,9200的SPI控制器工作在主机模式,MCP2515工

7、作在从机模式。MCP2515支持多个指令(如复位指令、读指令、写指令等),以便于9200通过SPI接口对MCP2515的内部寄存器进行读写操作。9200SPI控制器作为主机时工作模式流程如图3所示[1]。图39200SPI控制器主机模式流程图需要注意的是,SPI使能后,只有在SPI_TDR(发送数据寄存器)中有数据时,才会根据片选配置(固定外设或可变外设)使能相应片选,而SPI_TDR中无数据时,则片选自动禁用。因此,9200向MCP2515连续发送多个字节时,要保证在前一个字节传输7完毕前,后一个字节就被写入到SPI_TDR中,以避免片选被

8、自动禁用。同时,在传输完每一个字节后,还要读取SPI_RDR(接收数据寄存器)。以MCP2515的读指令为例,如图4所示为驱动程序完成一次读指令操作(只读一个字节数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。