CMSIS-Драйвер периферийных устройств - PullRequest
1 голос
/ 29 марта 2020

Я бродил, почему нет реализаций устройств, написанных на CMSIS-Driver?

Я имею в виду, что у меня мало периферийных устройств: ЖК-дисплей, датчик температуры и давления, измеритель тока и т. Д. c. - все они очень популярны в ардуино и учебных комплектах. Каждое из этих устройств использует некоторый протокол для связи с u C. некоторые для i2 C, некоторые общаются по SPI, некоторые по UART. Мне было интересно, если есть драйверы, которые обрабатывают эти устройства, и в качестве бэкэнда использовать CMSIS-Driver API.

Я думаю, что это достойный API, и, в конце концов, стандартная разработка ARM, так почему я не могу найти драйверы с его помощью?

Например, когда я искал s18b20 (датчик температуры для 1-проводного подключения), мне было легко найти драйвер для этого устройства, написанный на языке RUST, но я не смог найдите любую реализацию для C, которая бы использовала CMSIS. (в этом случае сравнение с ржавчиной вполне solid, потому что в Rust есть хороший встроенный API, и вы можете легко использовать драйвер для нескольких целей, точно так же, как CMSIS-Driver поддерживает работу). Мне удалось найти несколько проектов, использующих это периферийные, но все они работают на HAL, который отличается для каждого u C, поэтому реализация не переносима (в отличие от RUST и, возможно, CMSIS-Driver)

Итак, мои основные вопросы:

Почему существует так мало реализаций на основе CMSIS-Driver? Может быть, есть какой-то скрытый репозиторий реализации, о котором я не знаю?

Я что-то упустил? Разве CMSIS-Driver не предназначен для случайных разработчиков? Для кого он предназначен?

1 Ответ

2 голосов
/ 29 марта 2020

CMSIS не имеет отношения к внешним устройствам, в первую очередь это касается интерфейса драйверов для интерфейсов на микроконтроллере d ie. Так что если у вас есть устройство SPI, вы можете использовать CMSIS. Драйвер SPI для этой части, но вы, как разработчик, должны написать драйвер более высокого уровня для внешнего устройства.

Программные платформы более высокого уровня, такие как встраивание ARM, или ST CubeMX используют драйверы интерфейса CMSIS и включить драйверы для обычных устройств более высокого уровня. Они предназначены для более сложных устройств, связанных с сетью, файловыми системами и дисплеями. Я не ожидал бы большой поддержки для таких тривиально простых устройств, таких как датчик температуры.

...