CMSIS и периферийные устройства

Какие типы кодов записаны в файлах CMSIS и файлах драйверов периферийных устройств. Как я могу их различить? любой пример будет более полезным. Спасибо.

2 ответа

Решение

"CMSIS" - это стандарт программного интерфейса микроконтроллеров Cortex. Это стандарт ARM, поэтому код должен быть более или менее переносимым между реализациями Cortex.

Периферийные библиотеки, как правило, в большей степени зависят от поставщика, поскольку не существует стандарта для того, как два разных поставщика будут реализовывать, например, таймер или блок UART.

По крайней мере, это мое основное понимание работы (в основном) с ARM в семействе STM32. Однако на этой странице CMSIS я заметил, что область действия CMSIS на самом деле больше:

CMSIS-Driver: определяет общие интерфейсы периферийных драйверов для промежуточного программного обеспечения, что делает его многоразовым на поддерживаемых устройствах. API не зависит от RTOS и соединяет периферийные устройства микроконтроллера с промежуточным программным обеспечением, которое реализует, например, стеки связи, файловые системы или графические пользовательские интерфейсы.

Звучит так, как будто бы это связано с тем, что я ассоциирую с кодом конкретного поставщика, но, возможно, не все поставщики фактически используют CMSIS-Driver.

ОБНОВЛЕНИЕ: На STM32: с которым я работал, GPIO управляется только с помощью периферийной библиотеки ST.

Это довольно легко, правда:

  1. использование RCC_AHB1PeriphClockCmd() включить часы периферийного устройства GPIO. Есть много часов, поэтому убедитесь, что вы делаете это правильно. Я думаю, что все GPIO на AHB1.
  2. Инициализируйте переменную типа GPIO_InitTypeDef позвонив GPIO_StructInit() на нем, чтобы получить значения по умолчанию.
  3. Установите настройки, которые вы действительно хотите в своем GPIO_InitTypeDef, переопределяя значения по умолчанию по мере необходимости.
  4. Вызов GPIO_Init() на соответствующий порт, также передавая его GPIO_InitTypeDef с вашими фактическими настройками. Это будет тыкать регистры на периферии.
  5. Используйте звонки как GPIO_SetBits(), GPIO_ReadInputDataBit() и так далее, чтобы фактически использовать вывод GPIO.

Код CMSIS написан для контроллера ARM для различных поставщиков, таких как NXP (серия LPC и т. Д.) STM (STM32f4, stm32F1), в основном контроллер, имеющий архитектуру ARM. это портативное программное обеспечение. этот язык кодирования является C/C++ большую часть времени, но в некоторых файлах используется язык ассемблера. обычно язык ассемблера используется в файлах запуска.

В периферийном драйвере код написан на языке c/ C++. периферийные драйверы используются для коммуникационных целей.

В настоящее время я работаю над контроллером LPC18xx, используя драйвер CMSIS, драйвер CMSIS имеет код для всех периферийных устройств, вы можете использовать драйвер непосредственно для реализации своего приложения

например: если вы хотите прочитать данные с датчика, подключенного через I2C. Вы можете напрямую использовать драйвер I2C Cmsis для реализации приложения. Единственное, что вам нужно знать, это аппаратный адрес датчика.

Точно так же вы можете использовать драйвер SPI, CMSIS также предоставляет драйвер RTOS.

Другие вопросы по тегам