/mcan

Unofficial MCAN Hardware Abstraction Layer

Primary LanguageRustApache License 2.0Apache-2.0

MCAN

The M_CAN is a CAN IP module that can be realized as a standalone device, as part of an ASIC or on an FPGA. It performs communication according to ISO11898-1:2015. It supports Classical CAN and CAN FD (CAN with Flexible Data-rate). Additional transceiver hardware is required for connection to the CAN physical layer. The message storage is intended to be a single or dual-ported Message RAM outside of the module. It is connected to the M_CAN via the Generic Master Interface. Depending on the chosen integration, multiple M_CAN controllers may share the same Message RAM. The Host CPU is connected via the 32-bit Generic Interface.1

Repository content

This repository provides two crates:

mcan

It contains a platform-agnostic HAL for MCAN, with support for

  • classical CAN and CAN FD with bitrate switching
  • message transmission using dedicated buffers, FIFO and priority queue
  • message reception using dedicated buffers and two FIFOs
  • message transmission cancellation
  • filter settings

mcan-core

It contains traits meant to be implemented by target HALs in order to resolve platform-specific details

Acknowledgement

MCAN HAL was developed by Grepit AB and financed by Volvo Cars Corporation

VCC Logo

This project is not affiliated with Robert Bosch GmbH and as such should be considered unofficial.

Authors

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Footnotes

  1. Bosch M_CAN