我在想,为什么CMSIS-Driver中编写的设备没有实现?
我的意思是我的外设很少:LCD、温度和压力传感器、电流表等 - 所有这些都在 arduino 和学习套件中非常流行。 这些设备中的每一个都使用某种协议(protocol)与 uC 进行通信。有些是用于 i2C 的,有些是通过 SPI 通信的,有些是通过 UART 通信的。我想知道是否有处理这些设备的驱动程序,并作为后端使用 CMSIS-Driver API。
我认为这是一个不错的API,毕竟是ARM开发的标准,所以为什么我找不到任何使用它的驱动程序?
例如,当我寻找 s18b20(1 线温度传感器)时,我很容易找到用 RUST 语言编写的该设备的驱动程序,但我无法找到任何使用 CMSIS 的 C 实现。 (在这种情况下,与 Rust 相比是相当可靠的,因为 Rust 具有很好的嵌入式 API,并且您可以轻松地在多个目标上使用驱动程序,就像 CMSIS-Driver 是工作的配偶一样) 我能够找到一些使用此外设的项目,但它们都在 HAL 上运行,每个 uC 都不同,因此实现不可移植(与 RUST 不同,可能还有 CMSIS-Driver)
所以我的主要问题是:
为什么基于CMSIS-Driver的实现这么少?也许有一些我不知道的隐藏实现存储库?
我错过了什么吗? CMSIS-Driver 不是为临时开发人员设计的吗?那么它是为谁设计的?
最佳答案
CMSIS 不关心外部设备,它主要处理微 Controller 芯片上接口(interface)的接口(interface)驱动程序。因此,如果您有 SPI 设备,则可以使用 CMSIS。该部分的 SPI 驱动程序,但作为开发人员,您有责任为外部设备编写更高级别的驱动程序。
更高级别的软件平台(例如 ARM 的 embed 或 ST 的 CubeMX)使用 CMSIS 接口(interface)驱动程序,并包含常见更高级别设备的驱动程序。它们往往适用于与网络、文件系统和显示器相关的更复杂的设备。我不希望对温度传感器等如此简单的设备有太多支持。
关于CMSIS-驱动外设,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60914235/