#nxp #imxrt #no-std

no-std imxrt-iomuxc

NXP i.MX RT 处理器的引脚配置接口。imxrt-rs 项目的组成部分

15 个版本

0.2.8 2024 年 7 月 18 日
0.2.6 2024 年 1 月 27 日
0.2.5 2023 年 12 月 23 日
0.2.4 2023 年 11 月 17 日
0.1.2 2020 年 11 月 23 日

34嵌入式开发

Download history 795/week @ 2024-05-04 79/week @ 2024-05-11 339/week @ 2024-05-18 749/week @ 2024-05-25 594/week @ 2024-06-01 511/week @ 2024-06-08 363/week @ 2024-06-15 496/week @ 2024-06-22 236/week @ 2024-06-29 34/week @ 2024-07-06 611/week @ 2024-07-13 128/week @ 2024-07-20 83/week @ 2024-07-27 309/week @ 2024-08-03 83/week @ 2024-08-10 1031/week @ 2024-08-17

1,513 每月下载量
10 个 crates (3 直接) 中使用

MIT/Apache

430KB
8K SLoC

imxrt-iomuxc

i.MX RT 引脚定义和引脚配置。使用此库来

  • 配置外设的引脚,并指定其电气特性。
  • 管理可拥有的引脚对象。
  • 将引脚静态约束为与外设一起工作。

imxrt-iomuxc 面向最新的稳定 Rust 编译器。

入门

如果您已经使用 imxrt-hal 作为硬件抽象层,则无需进行任何操作。imxrt-hal 重新导出此 API 并确保与您的 i.MX RT 处理器兼容。有关获取引脚和实例化驱动程序的更多信息,请参阅 imxrt-hal 文档。

如果您正在定义新的 i.MX RT 硬件驱动程序,请考虑使用 imxrt-iomuxc 来约束与您的驱动程序兼容的引脚。依赖于最新的 imxrt-iomuxc 包,并不要启用任何包功能。然后,使用各种 imxrt-iomuxc 引脚特质实现您的 API。有关示例,请参阅 imxrt-iomuxc API 文档。有关更多示例,请研究 imxrt-hal 包。

如果您正在定义板级支持包,请考虑使用 imxrt-iomuxc 来重命名您的板支持的引脚。依赖于最新的 imxrt-iomuxc 包,并启用您的 i.MX RT 处理器的功能。然后,公开类型别名和/或对象,根据您的板重命名 i.MX RT 处理器的引脚。如果您正在寻找此类模式的示例,请参阅 teensy4-pins 包。

支持的芯片

下表显示了芯片及其相应的 crate 功能。请注意,芯片由参考手册标识,可能支持不同的变体。例如,1060 功能支持 1061 和 1062 芯片变体。

芯片 功能
1010 "imxrt1010"
1020 "imxrt1020"
1060 "imxrt1060"
1170 "imxrt1170"

如果您有兴趣添加对其他 i.MX RT 微控制器的支持,或者希望扩展现有支持,请继续阅读。

贡献

我们感谢您的贡献。在讨论开发基础之后,本节描述了您如何

  • 添加对新 i.MX RT 芯片的支持。
  • 在焊盘上实现引脚特性。
  • 为外设定义新的引脚特性。

通常情况下,如果你对任何类型的贡献感兴趣,或者发现了缺陷,请开启一个问题。

开发基础

使用cargo构建包。第一个命令仅构建引脚特性和配置API;它不包括任何芯片支持。第二个命令包括1060个焊盘定义和引脚实现。第三个命令包括针对ARM目标的全部支持的焊盘定义和引脚实现。

cargo build
cargo build --features=imxrt1060
cargo build --all-features --target=thumbv7em-none-eabihf

所有代码都必须在主机和嵌入式目标上构建。注意,例如thumbv7em-none-eabihf这样的目标是可选的。

使用以下命令运行测试:

cargo test --all-features

特别是,文档测试可能表明crate是用1060功能构建的。请在添加文档示例时遵循这一先例。

使用cargo doc生成文档。你可以选择启用(所有)芯片功能。

cargo doc
cargo doc --features=imxrt1060
cargo doc --all-features

如果你对生成docs.rs文档感兴趣,请使用nightly工具链,并供应docsrs配置。这将包括突出显示构建配置的文档标签。

cargo +nightly rustdoc --all-features -- --cfg=docsrs

添加对新芯片的支持

使用iomuxc.py脚本生成新i.MX RT芯片的所有焊盘。该脚本从系统视图描述(SVD)文件中提取焊盘定义。考虑使用imxrt-ral存储库中维护的SVD。

一旦你有了SVD并能生成焊盘模块,就将该模块集成到包中。以现有的1010、1060和1170支持作为你的指南。到目前为止,这个过程大致如下

  1. lib.rs中条件性地包含模块。
  2. 为你芯片创建一个新目录,并添加一个mod.rs文件。包含并重新导出你脚本生成的焊盘模块。
  3. 为你芯片添加一个Cargo.toml功能。

到这一过程结束时,你有了i.MX RT芯片焊盘的定义。你还应该有GPIO引脚实现。然而,你没有其他外设的引脚实现。继续阅读以了解贡献过程。

扩展现有焊盘的引脚实现

本节假设你的外设已存在引脚特性。如果不存在,请阅读下一节以获取指导。

当你为处理器焊盘实现引脚特性时,你向用户表明该焊盘支持特定的外设功能。截至本文撰写时,我们通过使用参考手册(RM)或SVD作为真实来源手动编写这些实现。有关获取RM的提示,请参阅imxrt-rs项目文档。一旦你有了RM,“外部信号和引脚复用”章节中的表格应揭示支持外设功能的焊盘。

要扩展引脚实现,可以扩展你芯片的现有引脚模块,或者为你的芯片创建一个新的引脚模块。如果你的引脚实现需要菊花链寄存器,请考虑使用daisy.py脚本从SVD文件中提取它们。(如果你没有SVD文件,请参阅上一节。)再次,以现有的1010、1060和1170支持作为你的指南。

我们欢迎任何贡献来自动化此过程。有关更多信息,请参阅跟踪问题

定义新的引脚特性

当您定义一个新的引脚特性时,您需要指定所有用于配置特定外设功能的引脚所需信息。例如,LPUART引脚特性需要关注以下方面:

  • 外设实例(LPUART1或LPUART2?)。
  • 功能(发送、接收?)。
  • 复用器选择的备用值。
  • 任何所需的电气设置(无拉阻、慢速斜率等)。

特性描述了这些参数,并设计用于这些特性的功能将引脚准备好以进行选择的配置。

特性的复杂性可能因外设而异。如果您不确定特性可能的样子,首先研究引脚复用选项,然后将其转换为特性。参考现有的引脚特性以了解不同的设计技术。

许可证

许可方式为以下之一:

任选其一。

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

无运行时依赖

功能