23 releases
new 0.0.22 | Nov 17, 2024 |
---|---|
0.0.21 | Nov 17, 2024 |
0.0.16 | Oct 31, 2024 |
0.0.13 | Jul 6, 2024 |
0.0.4 | Jun 24, 2024 |
#218 in Embedded development
703 downloads per month
26KB
329 lines
mcp2003a
Embedded Rust Microchip MCP2003A/B LIN transceiver driver with embedded-hal traits for no-std
environments.
[!WARNING] This crate is still in development and may not be suitable for production use.
Full Documentation: https://docs.rs/mcp2003a/latest/mcp2003a/
Part Numbers
Tested on:
- MCP2003A (No Longer Recommended for New Designs)
- MCP2003E
Should also work with:
- MCP2003B (functional drop-in replacement for MCP2003A)
References
- MCP2003A Product Page
- MCP2003/4/3A/4A Datasheet
- MCP2003A to MCP2003B Migration Guide
- MCP2003B Datasheet
Features
Uses embedded-hal
digital traits for GPIO and embedded-hal-nb
Serial traits for UART.
embedded-hal = "1.0.0"
- Major breaking changes versus 0.2.x implementations.embedded-hal-nb = "1.0.0"
- Additional non-blocking traits usingnb
crate underneath.
Usage
Add the crate to your Cargo.toml
:
cargo add mcp2003a
Example
let mut mcp2003a = Mcp2003a::new(uart2_driver, break_pin_driver, delay);
let lin_bus_config = LinBusConfig {
speed: LinBusSpeed::Baud19200,
break_duration: LinBreakDuration::Minimum13Bits, // Test for your application
wakeup_duration: LinWakeupDuration::Minimum250Microseconds, // Test for your application
read_device_response_timeout: LinReadDeviceResponseTimeout::DelayMilliseconds(15), // Test for your application
inter_frame_space: LinInterFrameSpace::DelayMilliseconds(1), // Test for your application
};
mcp2003a.init(lin_bus_config);
mcp2003a.send_wakeup();
mc2003a.send_frame(0x01, &[0x02, 0x03], 0x05).unwrap();
let mut read_buffer = [0u8; 8]; // Initialize the buffer to the frame's known size
let checksum = mcp2003a.read_frame(0xC1, &mut read_buffer).unwrap();
Full Examples
(More coming soon)
- ESP-32 via ESP-RS - Example using the MCP2003A with an ESP-32 microcontroller using the ESP-RS HAL.
Dependencies
~85KB