CAN шина

Материал из ВИКИЦМИТ
Перейти к навигации Перейти к поиску

Обзор

Шина CAN соответствует стандарту ISO и изначально была разработана для транспортных средств. Она управляет системой управления шасси и отвечает за такие критически важные функции, как электрооборудование двигателя и противоскольжение. Эта система также используется для предоставления диагностической информации для технического обслуживания автомобиля. Для этой шины типична конфигурация «многозвезда»: основная линия шины разветвляется на дополнительные линии шины на своих концах, а затем подключается к нескольким узлам устройств. Дифференциальное напряжение подаётся по витой паре напряжением от 1,5 до 2,5 В и от 2,5 до 3,5 В для обеспечения помехоустойчивости сигнала. Скорость передачи данных до 1 Мбит/с возможна при длине сети менее 40 м. Уменьшение скорости передачи данных позволяет увеличить дальность передачи данных (например, 500 м при 125 кбит/с). ( Источник : Джеремайя Дж. Флерчингер ) Контроллеры, поддерживающие CAN FD, улучшенную версию CAN с кадрами до 64 байт и скоростью передачи данных до 4 Мбит/с, будут доступны во второй половине 2014 года. Версия can4linux, поддерживающая CAN FD на IFI CAN, готова к использованию.

Хотя CAN-сеть была разработана как автомобильная коммуникационная сеть, она используется во многих других областях: в промышленности, медицине, морских лабораториях и т.д. Чаще всего она используется совместно с протоколом более высокого уровня, основанным на CAN, например, CANopen .


Дополнительную информацию можно найти по адресу:

http://en.wikipedia.org/wiki/CAN_bus
CiA CAN in Automation ассоциации пользователей CAN автоматизации
CAN Wiki
https://elinux.org/CAN_Bus

Поддержка CAN в Linux

CAN поддерживается драйверами устройств Linux. Существует два основных типа: драйверы на основе символьных устройств и драйверы на основе сетевых сокетов. Ядро Linux поддерживает CAN с помощью фреймворка SocketCAN.

Одним из символьных драйверов является can4linux.

Поддерживаемые протоколы SocketCAN

  • RAW: отправка и получение необработанных CAN-кадров
  • BCM: диспетчер вещания, перекладывающий повторяющуюся работу на ядро ​​Linux
  • ИЗОТР ...
  • SAE J1939

Контроллеры, поддерживаемые SocketCAN

    • Микрочип MCP251x
    • SoC Atmel AT91
    • Карты ESD 331 CAN
    • NXP (Philips) SJA1000
    • SoC Freescale MPC52xx
    • Бош CC770
    • Intel AN82527
    • TIs SoCs
    • Последовательные/сетевые устройства, использующие протокол ASCII (драйвер slcan)
Vendor Device Name Driver Module Name Controller Kconfig Option Linux Mainline Remarks
VScom NetCAN Plus 110 slcan (unknown) CONFIG_CAN_SLCAN 2.6.38 needs slcand and socat
VScom USB-CAN Plus slcan SJA1000T CONFIG_CAN_SLCAN 2.6.38 needs slcand
LAWICEL CAN232 slcan (unknown) CONFIG_CAN_SLCAN 2.6.38 needs slcand
LAWICEL CANUSB slcan (unknown) CONFIG_CAN_SLCAN 2.6.38 needs slcand
TITAN USB-CAN slcan (unknown) CONFIG_CAN_SLCAN 2.6.38 needs slcand
PEAK PCAN-PCI peak_pci sja1000 CONFIG_CAN_PEAK_PCI 3.2 supports all PCAN-[mini]PCI[e][104] variants
PEAK PCAN-USB peak_usb (unknown) CONFIG_CAN_PEAK_USB 3.4 supports PCAN-USB[pro][hub] (no LIN support)
Kvaser PCIcanx kvaser_pci sja1000 CONFIG_CAN_KVASER_PCI 2.6.31 supports all PCI-[mini]PCI[e][104] variants
Kvaser PCIe products kvaser_pciefd Kvaser kcan CAN_KVASER_PCIEFD 5.4





6.6





6.9

PCIEcan 4xHS
PCIEcan 2xHS v2
PCIEcan HS v2
Mini PCI Express HS v2
Mini PCI Express 2xHS v2

PCIEcan 1xCAN v3
PCIEcan 2xCAN v3
PCIEcan 4xCAN v2
Mini PCI Express 1xCAN v3
Mini PCI Express 2xCAN v3

M.2 PCIe 4xCAN
PCIe 8xCAN
Kvaser USB products kvaser_usb (unknown) CONFIG_CAN_KVASER_USB 3.8






3.16



4.0


4.7


4.19






5.11



5.12

5.14

6.9

6.11

Leaf Light
Leaf Professional {HS,LS,SWC,LIN}
Leaf SemiPro {HS,LS,SWC}
USBcan {Professional,R}
Memorator {II, Professional} HS/HS
Blackbird

Leaf Light v2
Memorator HS/{HS,LS}
Mini PCI Express HS

USBcan II HS/{HS,LS}
USBcan R

Mini PCI Express 2xHS
USBcan Light 2xHS

Leaf Pro HS v2
Hybrid {,Pro} 2xCAN/LIN
Memorator 2xHS v2
Memorator Pro {2,5}xHS v2
USBcan Light 4xHS
USBcan Pro {2,5}xHS v2

USBcan R v2
Leaf Light R v2
U100{,P,S}

USBcan Pro 4xHS

Hybrid {,Pro} CAN/LIN

Leaf v3

Mini PCIe 1xCAN
USBcan Pro 5xCAN

EMS Wünsche CPC-Card ems_pcmcia sja1000 CONFIG_CAN_EMS_PCMCIA 3.2 discontinued
EMS Wünsche CPC-USB/ARM7 ems_usb (unknown) CONFIG_CAN_EMS_USB 3.2
EMS Wünsche CPC-PCI/PCIe ems_pci sja1000 CONFIG_CAN_EMS_PCI 3.2 up to four channel
EMS Wünsche CPC-PC104P ems_pci sja1000 CONFIG_CAN_EMS_PCI 3.2 up to four channel on a PC104+ board
8devices USB2CAN usb_8dev (STR750FV2) CONFIG_CAN_8DEV_USB 3.9 STR750FV2 Firmware
Softing CANcard2 softing_cs sja1000 or NEC-005(?) CONFIG_CAN_SOFTING_CS 2.6.38 Supports {CAN,EDIC}card{,SJA,2} PCMCIA cards

Needs firmware softing-fw-4.6-binaries.tar.gz

Microchip CAN BUS Analyzer Tool mcba_usb PIC18F2680 CONFIG_CAN_MCBA_USB 4.12 SocketCAN driver

Improved firmware

FEE CTU CTU CAN FD Core ctucanfd CTU CAN FD Core CONFIG_CTUCANFD 5.19 Open Source VHDL CAN FD IP Core - tested on
Linux Automation GmbH
et al.
candleLight gs_usb STM32F07 CONFIG_CAN_GS_USB 3.16 Open Hardware project by Hubert Denkmair (LXA variant), with open source firmware
CANhack RKS+CAN RKS+CAN slcan sja1000 compatible CONFIG_CAN_SLCAN all needs slcand

https://github.com/kaufmannr/dieselschrauber-can-rks-wrapper-for-csharp

Поддержка SocketCAN в языках/средах программирования

can4linux Supported Controllers

  • Allwinner A20 with integrated CAN (on the popular BananaPi single-board computer, BananaPi-Pro, Banana-Mberry, Olimex Olinux-A20)
  • Analog Devices BlackFin BF537
  • Atmel AT91 SoCs
  • Freescale FlexCAN (ColdFire 5282, i.MX25, i.MX28, i.MX35)
  • Intel 82527 (the replacement Bosch CC770 should work)
  • Microchip Stand Alone CAN MCP2515
  • NXP Stand Alone CAN SJA1000 (on different ISA or PCI/PCIe boards)
  • Xilinx Zynq with XCAN
  • 'virtual' CAN mode without CAN hardware
  • 'virtual' CAN mode supporting CAN FD
  • IFI CAN FPGA IP, in classic CAN mode and CAN FD mode
  • KVASER PCICan-4HS with up to four classic CAN mode and CAN FD mode

can4linux Support in Programming Languages/Environments

  • C - many examples and useful applications are provided with the package, check can4linux-examples/
  • Tcl/Tk also in can4linux-examples/
  • Python also in can4linux-examples/

CAN Controllers Emulation

SocketCAN Bechmarking

SocketCAN Tutorials

CAN tools

  • CANdevStudio is a Qt based tool that aims to provide easy to use and comprehensive CAN bus simulation environment. Supports variety of different CAN controllers. Works on Linux, Windows and macOS.