2 个版本
0.1.1 | 2023年1月12日 |
---|---|
0.1.0 | 2022年12月30日 |
在 嵌入式开发 中排名 1963
每月下载量 1,898
用于 8 个 软件包(直接使用 2 个)
71KB
953 行
imxrt-dma
i.MX RT 微控制器的 DMA 驱动程序。
请参阅 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
驱动程序,您需要知道
- DMA 控制器寄存器的位置。
- DMAMUX 寄存器的位置。
- 您的芯片支持的 DMA 通道数量。
这些参数取决于您针对的 i.MX RT 芯片。如果您已经在使用 imxrt-ral
,则考虑使用地址的 DMA
和 DMAMUX
常量。您始终负责配置 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