怎么会为can总线节点分配地址

接口/总线/驱动

1139人已加入

描述

  CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。

  CAN总线的工作原理

  CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。CAN与I2C总线的许多细节很类似,但也有一些明显的区别。

  当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。

  当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。

  由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。

  CAN总线的应用

  1.汽车制造中的应用

  应用CAN总线,可以减少车身布线,进一步节省了成本,由于采用总线技术,模块之间的信号传递仅需要两条信号线。布线局部化,车上除掉总线外其他所有横贯车身的线都不再需要了,节省了布线成本。CAN总线系统数据稳定可靠,CAN总线具有线间干扰小、抗干扰能力强的特点。CAN总线专为汽车量身定做,充分考虑到了汽车上恶劣工作环境,比如点火线圈点火时产生的强大的反充电压,电涡流缓冲器切断时产生的浪涌电流及汽车发动机仓100℃左右的高温。

  2.大型仪器设备中的应用

  大型仪器设备是一种参照一定步骤对多种信息采集、处理、控制、输出等操作的复杂系统。过去这类仪器设备的电子系统往往是在结构和成本方面占据相当大的部分,而且可靠性不高。采用CAN总线技术后,在这方面有了明显改观。

  3.工业控制中的应用

  随着计算机技术、通信技术和控制技术的发展,传统的工业控制领域正经历着一场前所未有的变革,而工业控制的网络化,更拓展了工业控制领域的发展空间,带来新的发展机遇。在广泛的工业领域,CAN总线可作为现场设备级的通信总线,而且与其他的总线相比,具有很高的可靠性和性能价格比。这将是CAN技术开发应用的一个主要的方向。

  4.智能家庭和生活小区管理中的应用

  小区智能化是一个综合性系统工程,要从其功能、性能、成本、扩充能力及现代相关技术的应用等多方面来考虑。基于这样的需求,采用CAN技术所设计的家庭智能管理系统比较适合用于多表远传、防盗、防火、防可燃气体泄漏、紧急救援、家电控制等方面。

  CAN节点

  CAN节点是指能够挂接在CAN总线上的单元,并能通过CAN总线实现各个节点间的通信,以实现复杂的控制过程,当前主要用于汽车的众多传感器间通信。

  构建CAN节点

  构建节点,实现相应控制,由底向上分为四个部分:CAN节点电路、CAN控制器驱动、CAN应用层协议、CAN节点应用程序。

  虽然不同节点完成的功能不同,但是都有相同的硬件和软件结构。

  C

  CAN收发器和控制器分别对应CAN的物理层和数据链路层,完成CAN报文的收发;功能电路,完成特定的功能,如信号采集或控制外设等;主控制器与应用软件按照CAN报文格式解析报文,完成相应控制。

  CAN硬件驱动是运行在主控制器(如P89V51)上的程序,它主要完成以下工作:基于寄存器的操作,初始化CAN控制器、发送CAN报文、接收CAN报文;

  如果直接使用CAN硬件驱动,当更换控制器时,需要修改上层应用程序,移植性差。在应用层和硬件驱动层加入虚拟驱动层,能够屏蔽不同CAN控制器的差异。

  一个CAN节点除了完成通信的功能,还包括一些特定的硬件功能电路,功能电路驱动向下直接控制功能电路,向上为应用层提供控制功能电路函数接口。特定功能包括信号采集、人机显示等。

  C

  CAN收发器是实现CAN控制器逻辑电平与CAN总线上差分电平的互换。实现CAN收发器的方案有两种,一是使用CAN收发IC(需要加电源隔离和电气隔离),另一种是使用CAN隔离收发模块。推荐使用第二种。

  CAN控制器是CAN的核心元件,它实现了CAN协议中数据链路层的全部功能,能够自动完成CAN协议的解析。CAN控制器一般有两种,一种是控制器IC(SJA1000),另一种是集成CAN控制器的MCU(LPC11C00)。

  MCU负责实现对功能电路和CAN控制器的控制:在节点启动时,初始化CAN控制器参数;通过CAN控制器读取和发送CAN帧;在CAN控制器发生中断时,处理CAN控制器的中断异常;根据接收到的数据输出控制信号;

  C

  接口管理逻辑:解释MCU指令,寻址CAN控制器中的各功能模块的寄存器单元,向主控制器提供中断信息和状态信息。

  发送缓冲区和接收缓冲区能够存储CAN总线网络上的完整信息。

  验收滤波是将存储的验证码与CAN报文识别码进行比较,跟验证码匹配的CAN帧才会存储到接收缓冲区。

  CAN内核实现了数据链路的全部协议。

  CAN总线如何设置本节点标识符

  can协议中有规定,在某几位发送目的站的地址,目的站可以通过对这几位进行选择,自行决定是否接受该消息,是自变成设定的。一般CAN通信芯片都可以在寄存器里设定自己需要接受的标识符等A要和B通信,A要指导B的标识符,然后发出去,B发现标识符正确接受,C和D读完标识符后选择丢弃。

  要实现CAN通信,选择一个合适的can控制芯片和驱动芯片即可。

  怎样为CAN总线上的节点分配地址

  CAN报文里是有ID场的,标准帧11位,扩展帧29位, 我设计时使用的是扩展帧。CAN是以数据包方式发送数据的,通常,一包数据13字节,第一个字节是控制上用的,比如定义了远程帧还是别的帧,定义了接收数据的字节数,接下来就是ID位了,共4字节,余下的8字节是数据用。以上可以认为是CAN2.0底层通信协议所规定的。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • C

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分