DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 750|回复: 0
打印 上一主题 下一主题

[接口电路] 基于AT91RM9200的CAN智能节点设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 14:08:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                    ???? 近年来工业测控系统从传统的集中测量控制系统转向网络化的集散控制系统。随着现场总线技术高速发展和标准化程度的不断提高,以现场总线技术为基础的开放型集散测控系统得到广泛应用。总线是控制器局域网(controller area network,CAN)属于现场总线范畴,是一种能有效支持分布式控制的串行通信网络,可将挂接在现场总线上作为网络节点的智能设备连接成网络系统,并进一步构成集散测控系统。CAN智能节点位于传感器和执行机构所在的现场,在集散控制系统中起着承上启下的作用。一方面,它必须和上位机进行通信,以完成数据交换;另一方面,它根据系统的需要以完成测量与控制的功能。因此,CAN智能节点的设计在工业集散测控系统中有着十分重要的作用。本文将提出一种基于ARM9处理器AT91RM9200和CAN控制器MCP25lO构建的CAN智能节点的设计方案,并介绍了该方案的软硬件设计及调试方法。
  1 硬件设计
  CAN智能节点的设计涉及2个方面:需要实现的功能;如何实现CAN通信。因此本文基于AT91RM9200和MCP2510提出的CAN智能节点的设计框架如图1所示。在此首先介绍主要芯片的特性,然后再说明智能节点的设计原理。




  现分别介绍如下:
  (1)PIOA端口初始化。由于AT91RM9200每个引脚可配置为通用功能I/O线或与1个或2个外设I/O复用的I/O线。因此必须通过软件配置PIOA端口:将PA0,PAl,PA2,PA4引脚分别定义为MISO,MOSI,SPCK,NPCSl,从而完成CAN智能节点SPI接口的定义;将PA3引脚定义为IRQ5,从而完成CAN智能节点中断信号的定义。
  (2)SPI初始化。通过PIOA端口初始化,只是完成SPI接口的引脚定义。为了使SPI接口能够正常工作,首先配置电源管理控制器(PMC)以使能SPI时钟;如果允许SPI中断请求,必须对高级中断控制器(AIC)进行配置;最后通过SPI的模式寄存器SPI_MR。指定SPI为主机模式、固定外设选择、SPI时钟为MCK、片选信号NPCSl有效;通过SPI的片选1寄存器SPI_CSRl指定SPCK时钟极性、时钟相位以支持MCP2510的(O,O)或(1,1)的SPI模式,指定SPI接口以8位数据进行传输匹配MCP2510的命令及数据格式,指定SPI的串行时钟波特率以匹配与MCP2510的通信。
  (3)MCP2510初始化。在完成PIOA端口、SPI初始化的基础上,即可按照图2(a)虚线框中的流程进行MCP2510初始化:首先必须使MCP2510进入配置模式;然后对MCP2510相关寄存器(位定时配置寄存器、接收滤波寄存器、接收屏蔽寄存器、引脚控制和状态寄存器)进行配置;最后使MCP2510进入正常模式。根据MCP2510提供的SPI命令集(读指令、写指令、请求发送指令、状态读指令、位修改指令、复位指令),可以通过对
  AT91RM9200的SPI接收数据寄存器SPI_RDR,SPI发送数据寄存器SPI_TDR,SPI状态寄存器SPI_SR的操作实现相应的函数:McpRdByte(),Mcp-WrByte(),WriteRTS(),McpRdStatus(),BitModify(),McpReset()。软件通过这些基本的指令函数完成MCP2510相关寄存器的配置。
  (4)中断初始化。通过AT91RM9200的高级中断控制器(AIC),首先配置IRQ5中断的优先级为最高,中断触发类型为下降沿触发;接着将中断服务程序IRQ5_ISR()的地址设置到中断向量寄存器;最后使能IRQ5中断。
  2.2 CAN发送数据
  当完成CAN的初始化后,即可使用3个发送缓冲器发送报文数据。由图2(b)可知:在发送数据前,首先通过发送缓冲器N(N=O,1,2)控制寄存器TXBNCTRL终止报文发送,并设定发送缓冲器N报文发送的优先级;接着通过发送缓冲器N标准标识符高低位寄存器TXBNSIDH,TXBNSIDL设定标准标识符,如果报文采用扩展标识符,还需通过发送缓冲器N扩展标识符高低位寄存器TXBNEID8,TXBNEID0设定扩展标识符。当发送缓冲器N相关寄存器初始化后,发送任务处于休眠等待状态。一旦有数据需要发送,即可将需要发送的数据(每次最多8 B)存放在发送缓冲器N的数据寄存器TXBND7~TXlBND0,并且通过送缓冲器N的数据长度寄存器TXBNDLC设定每次发送的字节数,最后通过发送缓冲器N控制寄存器TXB-NCTRL启动数据发送。当数据发送完毕,发送任务又处于休眠等待状态。
  2.3 CAN接收数据
  当完成CAN的初始化后,即可使用两个接收缓冲器接收报文数据。由图2(c)可知:在接收数据前,首先通过接收缓冲器N(N=0,1)控制寄存器RXBNCTRL,设定接收缓冲器的工作模式为接收符合滤波条件的所有带扩展标识符或标准标识符的有效报文;如果允许MCP2510接收中断,还需通过中断使能寄存器CANINTE允许接收缓冲器N装入报文时产生中断。
  当接收缓冲器N相关寄存器初始化后,接收任务处于休眠等待状态。当接收任务通过轮询或中断方法发现需要接收数据时,它通过接收缓冲器N标准标识符高低位寄存器RXBNSIDH,RXBNSIDL获取标准标识符;如果收到的报文是扩展帧,可通过RXBNSIDL及接收缓冲器N扩展标识符中间、低位寄存器RXBNEID8,RXBNEIDO获取扩展标识符;通过接收缓冲器N数据长度码寄存器RXBNDLC获取接收到的数据字节个数,进而通过接收缓冲器N数据寄存器RBNDm7~RBNDm0获取接收报文中的数据信息。当数据接收完毕,接收任务又处于休眠等待状态。
  3 软硬件调试
  当CAN智能节点的硬件和软件设计完毕,需要对其进行软、硬件的调试以验证其设计的正确性。CAN智能节点软、硬件调试按以下步骤依次进行:
  (1)CAN自发、自收功能调试。只要在CAN初始化过程完成MCP2510相关寄存器的配置,将MCP2510设置为环回模式,即可使MCP2510器件内部发送缓冲器和接收缓冲器之间进行报文自发、自收,而无需通过CAN总线。




  (2)CAN通信功能调试。按照图3所示方案进行CAN通信功能的调试。其中USB_CAN适配器采用武汉吉阳光电科技有限公司一款带有USB接口和1路CAN接口的GY8507 USB_CAN总线适配器。通过该适配器,PC可以通过USB接口连接一个标准CAN网络,从而与CAN智能节点通信。使用厂家提供的CANTools工具软件可以方便进行CAN智能节点数据的发送和接收调试。
  (3)CAN功能模块调试。由于CAN智能节点具体实现的功能各异,不详细介绍CAN功能模块的调试。
  4 结语
  目前已完成CAN智能节点通信电路的软、硬件设计及调试,并成功将软件移植到VxWorks 5.5操作系统上运行。基于功能强大的AT91RM-9200处理器以及高可靠和强实时的VxWorks 5.5操作系统,容易构建出满足应用需求的CAN智能节点。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-17 03:25 , 耗时 0.094671 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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