Software Products
CAN Bus Software
and CAN-FD protocol support
Simma Software has been designing CAN and CAN-FD device drivers for 15 years and has deployed numerous drivers into automotive embedded systems. Simma Software’s CAN drivers have been validated to withstand 100% bus utilization on multiple CAN networks simultaneously and have been shown to be 800% faster than other drivers.
CAN Bus Device Driver Details:
Table of Contents
- ISO 11898 compliant
- MISRA C compliant
- ANSI C source code
- Use with or without an RTOS
- Use with 8, 16, 32, or 64-bit CPU
- Multiple network support
- Complete user’s reference manual
Quick Links
Resources
CAN Bus
Introduction
CAN, which stands for Controller Area Network, is a high-speed, half-duplex, differential, serial communications protocol invented by Bosch. CAN was designed to be a multi-master network for connecting ECUs in a vehicle. It is now widely used in all light, medium, and heavy duty vehicles. Due to its popularity, it has spread to aircraft, marine, all terrain vehicles, and industrial automation.
CAN Datalink
A CAN bus has a network speed ranging from 33 Kbps to 1 Mbps. CAN uses a non-destructive method for bus arbitration and collision detection. Because bus collisions are non-destructive, it is possible to achieve 100% bus load.
Non-destructive arbitration is achieved by defining a 0 to be electrically active, known as a dominant bit, and a 1 to be electrically passive, known as a recessive bit. A dominant bit, is when CAN_H has a potential 200mV higher than CAN_L. A recessive bit is when the difference is less than 200mV.
CAN Arbitration
When a node transmits, it verifies it’s transmitted value is present on the bus. If the value it is transmitting is not the value currently on the bus, it stops transmitting. Because a 0 is dominant, if a 0 and 1 are transmitted by two different controllers at the same time, the bus will always be 0. When the 1 sending node detects the 0, instead of its sent value of 1, it immediately stops it’s transmission with the 0 sending node continuing.
CAN Applications
CAN is rarely used without a higher level protocol specifying how information is exchanged. Light duty vehicles use ISO 15765-4, while medium and heavy duty use SAE J1939. The marine industry uses NMEA 2000, which is based on J1939, and Agricultural equipment uses ISO 11783, which is also based on J1939. Industrial automation applications, like robotic arms, use DeviceNet or CANopen software (CiA 301).
CAN Frame
A frame consists primarily of the CAN identifier, data length code, and data field.
The ID represents the priority of the message.
The data length code is a 4-bit value from 0 to 8 indicating how many bytes are present in the data field.
The data field is the actual data for that CAN frame.
CAN Bus
Ports
Our CAN device drivers, ssCAN, are hard real-time drivers with low interrupt latency and are written in the ANSI C programming language. They are completely interrupt driven and feature configurable FIFO sizes. Our CAN device drivers implement all target specific details for a given microcontroller.
Together ssCAN and one of our high level protocols form a complete ported system allowing customers to be up and running almost immediately.Â
Our ssCAN device driver has been ported to over 40 different microcontrollers.
See our full list of available ports.
Texas Instruments
- Texas Instruments RM4x
- Texas Instruments LM3Sx
- Texas Instruments TMS470x
- Texas Instruments TMS470Mx
- Texas Instruments TMS570x
- Texas Instruments Tiva TM4C
- Texas Instruments F28M35xx
- Texas Instruments TMS320F280x
- Texas Instruments TMS320F281x
- Texas Instruments TMS320F282x
- Texas Instruments TMS320F283x
- Texas Instruments AM3x – Sitara
- Texas Instruments DM8x – DaVinci
- Texas Instruments MSPM0
- Texas Instruments MSPM0G
Microchip
- Microchip PIC18
- Microchip PIC24
- Microchip PIC32
- Microchip dsPIC30
- Microchip dsPIC33F
- Microchip dsPIC33E
- Microchip dsPIC33CK
- Microchip MCP2515
STMicro
- STMicro ST7
- STMicro ST10
- STMicro STR7
- STMicro STM8
- STMicro STM32L4x
- STMicro STM32G0x
- STMicro STM32G4x
- STMicro STM32F0x
- STMicro STM32F1x
- STMicro STM32F2x
- STMicro STM32F3x
- STMicro STM32F4x
- STMicro STM32F7x
NXP
- NXP LPC11xx
- NXP LPC17xx
- NXP LPC21xx
- NXP LPC23xx
- NXP SJA1000
- NXP HCS08
- NXP HCS12
- NXP HCS12X
- NXP MC68xxx
- NXP MCF5xxx
- NXP MPC5xxx
- NXP Kinetis Kxx
Miscellaneous
- Linux
- Windows XP/7/Embedded
- Atmel SAM7
- Atmel AT90
- Infineon C16x
- Infineon TriCore
- Intel 82527
- Silicon Labs C8051
- Xilinx LogiCORE AXI (axi_can)
Talk to us about CANopen needs
Please contact us if you are interested in a port or device driver for a hardware platform that is not listed.
Experience Summary
1000
Global
Customers
500
Protocol
Stacks
300
CAN
Device Drivers
75
Flash
Bootloaders
60
Microcontrollers
& DSPs
10
Real Time Operating Systems