3个不稳定版本
0.2.1 | 2023年12月18日 |
---|---|
0.2.0 | 2023年12月18日 |
0.1.0 | 2023年12月17日 |
#709 在 嵌入式开发 中
24KB
346 行
pio-uart
概述
pio-uart
包为Raspberry Pi RP2040微控制器提供了一个软件UART实现,利用其可编程I/O (PIO) 功能。此包允许RP2040进行串行通信,而无需使用其专用的UART硬件块,从而在引脚选择上提供了更大的灵活性,并且可能释放硬件UART用于其他目的。
特性
- 基于PIO的UART:完全通过RP2040的PIO功能实现UART通信。
- 灵活的引脚选择:任何GPIO引脚都可以用于UART的TX和RX,不受特定UART引脚的限制。
- 可配置波特率:支持设置自定义波特率,但受限于PIO状态机定时。
- 发送/接收缓冲:内部提供发送和接收缓冲。
- 错误处理:基本的帧错误检测。
安装
将 pio-uart
添加为依赖项
cargo add pio-uart
用法
pio-uart
包的基本用法是设置所需的引脚和波特率的PIO UART,然后使用它进行读写数据。
示例
use embedded_io::{Read, Write};
use fugit::RateExtU32;
use pio_uart::PioUart;
use rp2040_hal as hal;
use rp2040_hal::pac;
fn main() {
let mut pac = pac::Peripherals::take().unwrap();
let core = pac::CorePeripherals::take().unwrap();
let mut watchdog = hal::Watchdog::new(pac.WATCHDOG);
let clocks = hal::clocks::init_clocks_and_plls(
rp_pico::XOSC_CRYSTAL_FREQ, pac.XOSC, pac.CLOCKS,
pac.PLL_SYS, pac.PLL_USB, &mut pac.RESETS, &mut watchdog,
).ok().unwrap();
let sio = hal::Sio::new(pac.SIO);
let pins = rp_pico::Pins::new(
pac.IO_BANK0,
pac.PADS_BANK0,
sio.gpio_bank0,
&mut pac.RESETS,
);
// Initialize software UART
let mut uart = PioUart::new(
pac.PIO0,
pins.gpio16.reconfigure(),
pins.gpio17.reconfigure(),
&mut pac.RESETS,
19200.Hz(),
125.MHz(),
)
.enable();
uart.write(b"Hello, UART over PIO!");
let mut buffer = [0u8; 10];
uart.read(&mut buffer);
}
文档
有关详细文档、示例和API参考,请访问 crates.io。
许可证
此包根据 BSD-3-Clause许可证 许可。
贡献
欢迎贡献。请遵循标准的Rust社区贡献指南。
免责声明
此包按原样提供,不保证功能或稳定性。开发者不对使用此包造成的任何损害负责。
依赖项
~10-18MB
~261K SLoC