Confidential guide on numerology and astrology, based of GG33 Public information

MCP2515-RS
`#! [NO_STD]` Bibliothèque pour interagir avec les puces MCP2515 peut contrôler.
3 years
Works with Finder
1
Github Watches
12
Github Forks
21
Github Stars
MCP2515
#![no_std]
library for interacting with MCP2515 CAN controller chips.
Platform-agnostic, tested with arduino-hal
on ATmega2560.
Inspired by the following C++ libraries:
Cargo Features
All features are disabled by default.
-
defmt
- Implementsdefmt::Format
for most public types so they can be printed usingdefmt::info!()
and relatives -
ufmt
- Implementsufmt::uDebug
for most public types so they can be printed usingufmt::uwriteln!()
and relatives
Examples
Examples for some common microcontrollers are available in the examples/
folder.
-
Arduino Uno
- Easily adapted to other AVR-based boards
-
Raspberry Pi Pico
- Easily adapted to other RP2040-based boards
Usage
Import the relevant HAL crate for your platform. For this example I'm using
arduino-hal
on an ATmega2560.
#![no_std]
#![no_main]
use panic_halt as _;
use arduino_hal::{spi::Settings, Delay, Spi};
use embedded_can::{ExtendedId, Frame, Id};
use embedded_hal_bus::spi::ExclusiveDevice;
use mcp2515::{error::Error, frame::CanFrame, regs::OpMode, CanSpeed, McpSpeed, MCP2515};
#[arduino_hal::entry]
fn main() -> ! {
let dp = arduino_hal::Peripherals::take().unwrap();
let pins = arduino_hal::pins!(dp);
let mut delay = Delay::new();
let mut serial = arduino_hal::default_serial!(dp, pins, 115200);
ufmt::uwriteln!(&mut serial, "Hello, world!").unwrap();
let (spi, cs) = Spi::new(
dp.SPI,
pins.d13.into_output(),
pins.d11.into_output(),
pins.d12.into_pull_up_input(),
pins.d10.into_output(),
Settings {
data_order: arduino_hal::spi::DataOrder::MostSignificantFirst,
clock: arduino_hal::spi::SerialClockRate::OscfOver128,
mode: embedded_hal::spi::MODE_0,
},
);
let spi_device = ExclusiveDevice::new(spi, cs, Delay::new()).unwrap();
let mut can = MCP2515::new(spi_device);
can.init(
&mut delay,
mcp2515::Settings {
mode: OpMode::Loopback, // Loopback for testing and example
can_speed: CanSpeed::Kbps100, // Many options supported.
mcp_speed: McpSpeed::MHz8, // Currently 16MHz and 8MHz chips are supported.
clkout_en: false,
},
)
.unwrap();
loop {
// Send a message
let frame = CanFrame::new(
Id::Extended(ExtendedId::MAX),
&[0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08],
)
.unwrap();
can.send_message(frame).unwrap();
ufmt::uwriteln!(&mut serial, "Sent message!").unwrap();
// Read the message back (we are in loopback mode)
match can.read_message() {
Ok(frame) => ufmt::uwriteln!(&mut serial, "Received frame {:?}", frame).unwrap(),
Err(Error::NoMessage) => ufmt::uwriteln!(&mut serial, "No message to read!").unwrap(),
Err(_) => panic!("Oh no!"),
}
arduino_hal::delay_ms(1000);
}
}
Output over serial:
Sent message!
No message to read!
Sent message!
Received frame CanFrame { id: Extended(ExtendedId(536870911)), rtr: false, dlc: 8, data: [1, 2, 3, 4, 5, 6, 7, 8] }
Sent message!
Received frame CanFrame { id: Extended(ExtendedId(536870911)), rtr: false, dlc: 8, data: [1, 2, 3, 4, 5, 6, 7, 8] }
Sent message!
Received frame CanFrame { id: Extended(ExtendedId(536870911)), rtr: false, dlc: 8, data: [1, 2, 3, 4, 5, 6, 7, 8] }
License
Licensed under either of
- Apache License, Version 2.0 ([LICENSE-APACHE] or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT] or http://opensource.org/licenses/MIT)
at your option.
相关推荐
Advanced software engineer GPT that excels through nailing the basics.
Take an adjectivised noun, and create images making it progressively more adjective!
Siri Shortcut Finder – your go-to place for discovering amazing Siri Shortcuts with ease
I find academic articles and books for research and literature reviews.
Découvrez la collection la plus complète et la plus à jour de serveurs MCP sur le marché. Ce référentiel sert de centre centralisé, offrant un vaste catalogue de serveurs MCP open-source et propriétaires, avec des fonctionnalités, des liens de documentation et des contributeurs.
Manipulation basée sur Micropython I2C de l'exposition GPIO de la série MCP, dérivée d'Adafruit_MCP230XX
MCP Server pour récupérer le contenu de la page Web à l'aide du navigateur sans tête du dramwright.
Un puissant plugin Neovim pour gérer les serveurs MCP (Protocole de contexte modèle)
Pont entre les serveurs Olllama et MCP, permettant aux LLM locaux d'utiliser des outils de protocole de contexte de modèle
La communauté du curseur et de la planche à voile, recherchez des règles et des MCP
🧑🚀 全世界最好的 LLM 资料总结 (数据处理、模型训练、模型部署、 O1 模型、 MCP 、小语言模型、视觉语言模型) | Résumé des meilleures ressources LLM du monde.
L'application tout-en-un desktop et Docker AI avec chiffon intégré, agents AI, constructeur d'agent sans code, compatibilité MCP, etc.
Serveurs MCP géniaux - une liste organisée de serveurs de protocole de contexte de modèle
Reviews

user_R1wNiDQk
I've been using the mcp2515-rs library by davidcole1340 and I'm thoroughly impressed with its functionality and ease of use. This Rust-based crate offers a seamless interface for CAN bus communication, making it an essential tool for embedded systems developers. The comprehensive documentation on the provided GitHub page is extremely helpful, ensuring a smooth integration into any project. Highly recommended!