#nxp #imxrt

no-std imxrt-dma

i.MX RT 处理器的 DMA 驱动程序

2 个版本

0.1.1 2023年1月12日
0.1.0 2022年12月30日

嵌入式开发 中排名 1963

Download history • Rust 包仓库 129/week @ 2024-03-13 • Rust 包仓库 70/week @ 2024-03-20 • Rust 包仓库 92/week @ 2024-03-27 • Rust 包仓库 129/week @ 2024-04-03 • Rust 包仓库 149/week @ 2024-04-10 • Rust 包仓库 105/week @ 2024-04-17 • Rust 包仓库 371/week @ 2024-04-24 • Rust 包仓库 111/week @ 2024-05-01 • Rust 包仓库 863/week @ 2024-05-08 • Rust 包仓库 171/week @ 2024-05-15 • Rust 包仓库 703/week @ 2024-05-22 • Rust 包仓库 372/week @ 2024-05-29 • Rust 包仓库 645/week @ 2024-06-05 • Rust 包仓库 383/week @ 2024-06-12 • Rust 包仓库 620/week @ 2024-06-19 • Rust 包仓库 234/week @ 2024-06-26 • Rust 包仓库

每月下载量 1,898
用于 8 软件包(直接使用 2 个)

MIT/Apache

71KB
953

imxrt-dma

i.MX RT 微控制器的 DMA 驱动程序。

API 文档(主分支)

请参阅 API 文档以获取更多信息。要在硬件上尝试示例,请参阅示例目录。

许可证

根据以下任一许可证授权:

任选其一。

除非您明确声明,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在工作中的贡献,应按上述方式双重许可,不附加任何额外条款或条件。


lib.rs:

Direct Memory Access (DMA) 驱动程序,用于 i.MX RT 处理器。

imxrt-dma 提供

  • 用于定义和安排使用 DMA Channel 的传输的不安全 API。
  • safe DMA futures,用于 memcpy、外设到内存和内存到外设的传输。

此 DMA 驱动程序可以从硬件抽象层 (HAL) 中重新导出。如果可以,您应使用您的 HAL 提供的更安全的 API。

入门指南

要分配 Dma 驱动程序,您需要知道

  1. DMA 控制器寄存器的位置。
  2. DMAMUX 寄存器的位置。
  3. 您的芯片支持的 DMA 通道数量。

这些参数取决于您针对的 i.MX RT 芯片。如果您已经在使用 imxrt-ral,则考虑使用地址的 DMADMAMUX 常量。您始终负责配置 DMA 通道数量。

有了这三个参数,将 Dma 分配给静态。然后,使用该对象创建 DMA Channel

use imxrt_dma::Dma;

// Safety: addresses and channel count are valid for this target.
static DMA: Dma<32> = unsafe { Dma::new(DMA_PTR, DMAMUX_PTR) };

// Safety: we only allocate one DMA channel 7 object.
let mut channel = unsafe { DMA.channel(7) };

一旦您有了通道,您就可以使用更高级别的 DMA API,例如

  • memcpy 进行内存复制。
  • write 从内存向外设传输数据。
  • read 从外围设备接收数据。
  • full_duplex 使用单个缓冲区与外围设备进行读写操作。

外围设备传输依赖于外围设备的DMA支持。这些通过各种peripheral特性来指示。

对于更底层的API,请使用channel对象和辅助函数。

许可证

根据以下任一许可证授权:

任选其一。

除非您明确声明,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在工作中的贡献,应按上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~620KB