Crate mcp25xx

Crate mcp25xx 

Source
Expand description

no_std library for the MCP2510, MCP2515 and MCP25625 CAN controller chips.

API is implemented in terms of of the embedded_hal and embedded_can traits.

Activating the mcp2515 or mcp25625 feature will enable additional registers and instructions the MCP2510 does not support.

§Example

use embedded_can::nb::Can;
use embedded_can::{Frame, StandardId};
use mcp25xx::bitrates::clock_16mhz::CNF_500K_BPS;
use mcp25xx::registers::{OperationMode, RXB0CTRL, RXM};
use mcp25xx::{CanFrame, Config, MCP25xx};

// spi is a struct implementing embedded_hal::spi::SpiDevice.

let mut mcp25xx = MCP25xx { spi };

let config = Config::default()
    .mode(OperationMode::NormalOperation)
    .bitrate(CNF_500K_BPS)
    .receive_buffer_0(RXB0CTRL::default().with_rxm(RXM::ReceiveAny));

mcp25xx.apply_config(&config).unwrap();

// Send a frame
let can_id = StandardId::new(123).unwrap();
let data = [1, 2, 3, 4, 5, 6, 7, 8];
let frame = CanFrame::new(can_id, &data).unwrap();
mcp25xx.transmit(&frame).unwrap();

// Receive a frame
if let Ok(frame) = mcp25xx.receive() {
    let _can_id = frame.id();
    let _data = frame.data();
}

Re-exports§

pub use embedded_can;

Modules§

bitrates
Preconfigured CNF registers for 8, 16 and 20 Mhz oscillators
registers
Register bitfields

Structs§

CanFrame
CAN frame with the same in memory representation as the registers of the CAN controller
Config
Configuration for:
IdHeader
Id header used in filters and masks
MCP25xx
Either a MCP2510, MCP2515 or MCP25625 CAN controller
SpiError

Enums§

AcceptanceFilter
Filters and Masks of the two receive buffers
Instruction
Instruction supported by the CAN controller
RxBuffer
Receive buffer
TxBuffer
Transmit buffer