c - 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 不是为临时开发人员设计的吗?那么它是为谁设计的呢?
解决方案
CMSIS 不关心外部设备,它主要处理微控制器芯片上接口的接口驱动程序。所以如果你有一个 SPI 设备,你可能会使用 CMSIS。该部分的 SPI 驱动程序,但作为开发人员,您有责任为外部设备编写更高级别的驱动程序。
ARM 的 embed 或 ST 的 CubeMX 等更高级别的软件平台使用 CMSIS 接口驱动程序,并包括用于常见更高级别设备的驱动程序。它们往往用于与网络、文件系统和显示器相关的更复杂的设备。我不希望对温度传感器等如此简单的设备提供太多支持。
推荐阅读
- vba - 如何让用户选择图像,然后将它们插入 Word PDF?
- arrays - 在 Julia 中替换数组中特定条目的值
- json - 使用嵌套数据创建 json 文件时的问题
- azure - Invoke-AzVMRunCommand - 错误处理的最佳实践?
- java - Groovy:如何验证 JAXB 实例是否存在嵌套属性和值
- javascript - 正则表达式量词匹配较短的序列
- c++ - 选择/取消选择所有复选框 WIN32
- python - 将字典转换为嵌套字典并在 python 中切换键 <-> 值
- angular - 我的角度分量表现不佳。有什么我可以改变来提高性能的吗?
- python - 我的代码有什么问题,返回空图?