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 在 嵌入式开发 中
1,513 每月下载量
在 10 个 crates (3 直接) 中使用
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支持作为你的指南。到目前为止,这个过程大致如下
- 在
lib.rs
中条件性地包含模块。 - 为你芯片创建一个新目录,并添加一个
mod.rs
文件。包含并重新导出你脚本生成的焊盘模块。 - 为你芯片添加一个
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版本(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
任选其一。
除非您明确声明,否则您根据Apache-2.0许可证定义的工作中提交的任何有意贡献,将按上述方式双重许可,不附加任何额外条款或条件。