2 个不稳定版本
0.2.0 | 2024 年 8 月 4 日 |
---|---|
0.1.0 | 2021 年 12 月 15 日 |
#268 在 嵌入式开发
119 每月下载量
48KB
945 行
mcp25xx
no_std
库,用于 MCP2510、MCP2515 和 MCP25625 CAN 控制器芯片。
API 使用 embedded_hal 和 embedded_can 特性实现。
激活 mcp2515
或 mcp25625
功能将启用 MCP2510 不支持的额外寄存器和指令。
示例
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.try_receive() {
let _can_id = frame.id();
let _data = frame.data();
}
许可证
根据您的选择,许可协议为 Apache License, Version 2.0 或 MIT license。除非您明确声明,否则根据 Apache-2.0 许可证定义的任何您有意提交并包含在此 crate 中的贡献,都将按照上述方式双许可,没有任何额外的条款或条件。
依赖关系
~1.5MB
~37K SLoC