CAN总线

CAN总线基础知识(三)

1.CAN协议

1.1 帧类型

通讯时使用下面5个类型的帧:

  • 数据帧
  • 遥控帧
  • 错误帧
  • 过载帧
  • 帧间空隙
  • 在所有这些帧中,数据帧和遥控帧由用户设置,而其它帧则由CAN硬件设置。
    数据和遥控帧有两种格式:标准和扩展格式。标准格式有11bit的ID,而扩展格式则是29bit的ID。
    每个帧的用处见表6,每个帧的结构见图10到图14

    表6 帧类型和每种类型帧的作用


    CAN总线基础知识(二)

    CAN协议和标准规范

    1、 由ISO标准化的CAN协议

    CAN协议已经由ISO标准化,有2个版本,如ISO11898和ISO11519-2,它们之间在数据链路层没什么不同,但是在物理层有些区别。
    (1) 关于ISO11898:这个标准用于高速CAN通讯。开始的时候,数据链路层和物理层都在标准ISO11898中规定,后来被拆分为ISO11898-1(仅涉及数据链路层)和ISO11898-2(仅涉及物理层)
    (2) 关于ISO11519:这个标准用于低速(最高125kbps)CAN通讯

    2、 ISO11898和ISO11519-2之间的不同

    图6显示了CAN规范的规定范围。三个物理层的子层:PLS(Physucal Signaling Sublayer物理信号子层)子层,PMA(Physical Medium Attachment物理介质连接)子层,MDI(Medium Dependent Interface介质相关接口)子层,PMA和MDI子层的定义是不一样的。

    CAN总线基础知识(一)

    1.CAN总线是什么?

    CAN(Controller Area Network)是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的高性能和可靠性。

    CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,在任一时刻,总线上有2种电平:显性电平和隐性电平。

    “显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平,并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强)。

    总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。

    下图显示了一个典型的CAN拓扑连接图。

    连接在总线上的所有单元都能够发送信息,如果有超过一个单元在同一时刻发送信息,有最高优先级的单元获得发送的资格,所有其它单元执行接收操作。

    2.CAN总线的特点

    CAN设计与应用指南

    作者:zhzht19861011

    0.前言
    这是我为公司写的一个关于CAN总线的入门文章,对全面理解CAN总线特性很有帮助,拿出来分享给大家。

    1. 简介
    CAN总线由德国BOSCH公司开发,最高速率可达到1Mbps。CAN的容错能力特别强,CAN控制器内建了强大的检错和处理机制。另外不同于传统的网络(比如USB或者以太网),CAN节点与节点之间不会传输大数据块,一帧CAN消息最多传输8字节用户数据,采用短数据包也可以使得系统获得更好的稳定性。CAN总线具有总线仲裁机制,可以组建多主系统。

    2. CAN标准
    CAN是一个由国际化标准组织定义的串行通讯总线。最初是用于汽车工业,使用两根信号总线代替汽车内复杂的走线。CAN总线具有高抗干扰性、自诊断和数据侦错功能,这些特性使得CAN总线在各种工业场合广泛使用,包括楼宇自动化、医疗和制造业。

    Xilinx的socket CAN驱动介绍

    在Linux中,CAN总线的驱动有两种实现方式:字符设备以及socket can驱动。Socket CAN使用伯克利的Socket接口和Linux网络协议栈,这种方法使得CAN设备驱动可以通过网络接口来调用。Socket CAN的接口被设计的尽量接近TCP/IP的协议,让那些熟悉网络编程的程序员能够比较容易的学习和使用。

    本文以赛灵思的Zynq-7000为硬件背景,详细介绍开发板上的socket can驱动。主要的驱动文件为dev.c以及xilinx_can.c,可以从
    https://github.com/Xilinx/linux-xlnx 获取。

    首先看一下传递给内核的dts文件中的can设备信息:
    ps7_can_0: ps7-can@e0008000 {
    clock-names = "ref_clk", "aper_clk";
    clocks = <&clkc 19>, <&clkc 36>;
    compatible = "xlnx,ps7-can-1.00.a", "xlnx,ps7-can";
    interrupt-parent = <&ps7_scugic_0>;
    interrupts = <0 28 4>;

    基于FPGA的车电总线接口技术研究

    为提高集成架构中车电总线通信速率,结合综合化处理系统项目要求,采用双总线结合的方式,利用CAN总线和FlexRay总线实现功能及搭配上的互补,提出一种基于现场可编程门阵列(FPGA)的总线接口单元设计方案。通过FPGA完成CAN总线控制器、FlexRay总线控制器、RapidIO总线接口等模块功能,实现高速接口的控制和扩展,并使模块接口具备可配置能力。测试结果表明,CAN接口及FlexRay接口在指定的波特率下均工作正常,满足项目要求的各项性能指标。

    1 概述

    一种空间相机的数据通信系统设计

    摘 要:在空间相机数据采集应用中,为了满足电路板体积重量以及可扩展性的要求,利用FPGA作为主控芯片,控制相机进行数据采集和传输。在数据通信系统中,FPGA替代了传统的单片机作为CAN总线的主控制器,并给出了详细的硬件电路设计方法。在对CAN协议控制器SJA1000进行功能及时序分析后,利用硬件语言对其通信流程进行设计。实践证明,在严格的时序逻辑下,FPGA能够控制CAN总线稳定正确地对相机数据进行收发。

    CAN总线是由ISO定义的串行通信总线,主要用于各种过程检测及控制。它是一种多主总线,具有高位速率和高抗电磁干扰性,而且能够检测出传输中产生的任何错误。显著的优点使得CAN总线成为国际上应用最广泛的现场总线标准之一 [1]。

    基于DSP和FPGA技术的多总线伺服控制模块设计

    利用TMS320F2812作为核心器件,FPGA作为预处理单元和接口逻辑电路和PC104PLUS和CAN总线作为外部总线设计了伺服控制模块。该伺服控制模块具有高集成性、高速度、高可靠性、可扩展等优点,适用于对精度和系统扩展性要求较高的多伺服控制领域,可应用于大型光电跟踪设备的伺服控制。

    在大型光电跟踪设备中由于跟踪算法复杂,分系统众多,要求伺服控制模块不仅精度高、速度快、可靠性强,而且要有丰富的外围总线接口。考虑可靠性,选用PCI04PLUS总线及CAN总线作为系统外部总线。PC104PLUS总线以针孔堆叠方式组成。具有结构紧凑、抗震性能好等优点,可以在恶劣的环境下正常工作,应用于工控机领域。其与PCI总线标准兼容,可用于中高速数据传输。CAN总线符合可嵌入式结构的先进设计思想。最早应用于汽车电子中,由于其良好的工业抗干扰能力,近几年广泛应用在工业控制和军用装备方面。考虑精度和速度,主控制器选用TMS320F2812A芯片。其作为专用于电机控制方面的高端DSP产品,具有高速度、高精度等优点,广泛应用于复杂伺服控制领域 。以PC104PLIUS和CAN为总线接口,DSP为核心处理芯片,FPGA设计前端预处理电路及接口。此结构的伺服控制系统具有处理速度快、精度高、可靠性强等特点,并有良好的扩展性和兼容性。

    CAN总线是现场总线的一种,因为其成本低、容错能力强、支持分布式控制、通信速率高等优点在汽车、工业控制、航天等领域得到广泛应用。但是计算机没有CAN总线接口,为了进行CAN总线的调试,必须具有专用的适配卡才能实现与计算机的通信。目前常用的CAN转换器是基于单片机设计的,一般只适用于单路CAN总线的数据转换,可扩展性差。

    同步内容