首页 > 解决方案 > CMSIS-驱动外设

问题描述

我在徘徊,为什么没有用CMSIS-Driver编写的设备实现?

我的意思是我的外围设备很少:LCD、温度和压力传感器、电流表等——所有这些都非常流行用于 arduino 和学习设备。这些设备中的每一个都使用某种协议与 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 不是为临时开发人员设计的吗?那么它是为谁设计的呢?

标签: carmembeddedcmsis

解决方案


CMSIS 不关心外部设备,它主要处理微控制器芯片上接口的接口驱动程序。所以如果你有一个 SPI 设备,你可能会使用 CMSIS。该部分的 SPI 驱动程序,但作为开发人员,您有责任为外部设备编写更高级别的驱动程序。

ARM 的 embed 或 ST 的 CubeMX 等更高级别的软件平台使用 CMSIS 接口驱动程序,并包括用于常见更高级别设备的驱动程序。它们往往用于与网络、文件系统和显示器相关的更复杂的设备。我不希望对温度传感器等如此简单的设备提供太多支持。


推荐阅读