Crate mcp25xx[−][src]
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::blocking::Can as _;
use embedded_can::{Can, Frame, StandardId};
use mcp25xx::bitrates::clock_16mhz::CNF_500K_BPS;
use mcp25xx::registers::{OperationMode, RXB0CTRL, RXM};
use mcp25xx::{CanFrame, Config, MCP25xx};
// spi, cs and timer are structs implementing their respective embedded_hal traits.
let mut mcp25xx = MCP25xx { spi, cs };
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.try_write(&frame).unwrap();
// Receive a frame
if let Ok(frame) = mcp25xx.try_receive() {
let _can_id = frame.id();
let _data = frame.data();
}
Re-exports
pub use embedded_can;
Modules
Structs
CAN frame with the same in memory representation as the registers of the CAN controller
Configuration for:
Id header used in filters and masks
Either a MCP2510, MCP2515 or MCP25625 CAN controller
Enums
Filters and Masks of the two receive buffers
Instruction supported by the CAN controller
Receive buffer
Transmit buffer
Traits
Convenience trait, reducing the amount of where bounds for generic code