Robert Gałat
Robert Gałat

Reputation: 129

CMSIS-Driver peripherals

I was wandering, why there are no implementations of the devices written in CMSIS-Driver?

I mean that I have few peripherals: LCD, temperature and pressure sensor, current meter etc. - all of them very popular used in arduino and learning sets. Each of these devices uses some protocol to communicate with the uC. some are for i2C, some communicate by SPI, some by UART. I was wondering if there are drivers that handle those devices, and as a backend use CMSIS-Driver API.

I think that it is a decent api, and after all standard develop by ARM, so why I can not find any drivers using it?

For example when I was looking for s18b20 (temperature sensor for 1-wire), I was easily able to find driver for this device written in RUST language, but I was not able to find any implementation for C that would use CMSIS. (in this case compare to rust is quite solid, because Rust has nice embedded API, and you can easily use the driver on multiple targets, just like CMSIS-Driver is spouse to work) I was able to find some projects using this peripheral, but they all operated on HAL that is different for every uC, so the implementation is not portable ( unlike RUST, and potentially CMSIS-Driver)

So my main questions are:

Why there are so little implementations based on CMSIS-Driver? Maybe there is some hidden implementation repository that I do not know about?

Am I missing something? Is the CMSIS-Driver not designed for the casual developers? Who is it designed for then ?

Upvotes: 2

Views: 595

Answers (1)

Clifford
Clifford

Reputation: 93446

CMSIS is not concerned with external devices, it deals primarily with interface drivers for interfaces on the microcontroller die. So if you have an SPI device, you might use the CMSIS. SPI driver for that part, but it is then your responsibility as a developer to write the higher-level driver for the external device.

Higher-level software platforms such as ARM's embed, or ST's CubeMX use CMSIS interface drivers, and include drivers for common higher level devices. They tend to be for more complex devices related to networking, filesystems and displays. I would not expect much support for such trivially simple devices such as a temperature sensor.

Upvotes: 2

Related Questions