Работа с жк индикатором на отладочной плате stm32l-discovery

Frameworks¶

Name Description
Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences
The ARM Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. The CMSIS enables consistent and simple software interfaces to the processor for interface peripherals, real-time operating systems, and middleware. It simplifies software re-use, reducing the learning curve for new microcontroller developers and cutting the time-to-market for devices
Arm Mbed OS is an open source embedded operating system designed specifically for the ‘things’ in the Internet of Things. It includes all the features you need to develop a connected product based on an Arm Cortex-M microcontroller, including security, connectivity, an RTOS and drivers for sensors and I/O devices
STM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency

Запуск в эмуляторе

На эмуляторе отлаживаться гораздо проще, поэтому сначала убедимся, что библиотека работает на qemu. В качестве эмулируемой платформы я выбрал Integrator/CP, т.к. во-первых, это тоже ARM, а во-вторых, Embox поддерживает вывод графики для этой платформы.

В Embox есть механизм для сборки внешних библиотек, с его помощью добавляем OpenCV как модуль (передав все те же опции для «минимальной» сборки в виде статических библиотек), после этого добавляю простейшее приложение, которое выглядит так:

Собираем систему, запускаем — получаем ожидаемый вывод.

Следующий шаг — запустить какой-нибудь пример, лучше всего какой-нибудь стандартный из тех, что предлагают сами разработчики у себя на сайте. Я выбрал детектор границ Кэнни.

Пример пришлось немного переписать, чтобы отображать картинку с результатом напрямую во фрэйм-буффер. Сделать это пришлось, т.к. функция умеет отрисовывать изображения через интерфейсы QT, GTK и Windows, которых, само собой, в конфиге для STM32 точно не будет. На самом деле, QT тоже можно запустить на STM32F7Discovery, но об этом будет рассказано уже в другой статье :)

После недолгого выяснения, в каком именно формате хранится результат работы детектора границ, получаем изображение.

Оригинальная картинка

Результат

Подробное описание

Работа с платой поддерживается в интегрированной среде разработки компаний IAR, Keil, Atollic.

Установленный микроконтроллер в 64-выводном корпусе LQFP работает на частоте 24 МГц. Плата имеет коннектор расширения, который позволяет подключать плату к другим отладочным платформам для более глубокого анализа работы периферии микроконтроллера или к макетным платам для прототипирования.

Для внутрисхемного программирования и отладки на плате предусмотрен отладчик/программатор ST-Link, который может использоваться и как отдельное устройство.

Отличительные особенности:

  • установлен микроконтроллер STM32F100RBT6B:
    • 32-битное ядро Cortex-M3, рабочая частота 24 МГц;
    • Flash-память программ 128 КБайт;
    • RAM 8 КБайт;
    • таймер с расширенными функциями;
    • шесть таймеров общего назначения;
    • коммуникационные интерфейсы:
    • 2×SPI, 2×I2C, 3×USART;
    • 16-канальный 12-битный АЦП;
    • двухканальный 12-битный ЦАП;
    • напряжение питания 2.0 В – 3.6 В;
  • на плате имеется внутрисхемный отладчик/программатор ST-Link:
    • интерфейс USB;
    • переключатель для использования платы в качестве отдельного устройства ST-Link;
  • питание возможно от USB интерфейса или от внешнего источника;
  • два светодиода индикации состояния;
  • два пользовательских светодиода, пользовательская кнопка, кнопка «Сброс»;
  • коннектор расширения – доступны все линии ввода/вывода микроконтроллера, может использоваться для подключения к макетной плате или другой отладочной системе.

Основные параметры:

Параметр

Значение

Интерфейс подключения

USB

Ядро базового компонента

Cortex-M3

Разрядность, бит

32

Базовый компонент

STM32F100RBT6B

Вспомогательный компонет

STM32F103C8T6

Целевое напряжение, В

3.3

Напряжение питания, В

5.0 / 3.3

Источник питания

USB / внешний

Комплектация:

  1. Отладочная плата STM32 Discovery Kit

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Discovery Kit STMicroelectronics STM32VLDISCOVERY

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.

Публикации по теме

  • Новости STMicroelectronics выпускает многофункциональный отладочный набор для быстрой разработки устройств Интернета вещей — B-L475E-IOT01A1, B-L475E-IOT01A2
  • Новости Компания STMicroelectronics сообщила о полномасштабном производстве микроконтроллеров серии STM32 F3 и представила отладочный набор STM32 F3 Discovery Kit — STM32F3 Discovery Kit
  • Новости STMicroelectronics выпускает отладочный набор для разработки беспроводных IoT приложений по технологии LoRa — P-NUCLEO-LRWAN1
  • Новости STMicroelectronics выпускает отладочный набор STM32 Discovery Kit
  • Новости Отладочный набор упрощает разработку проектов технологии CapSense

Программирование STM32VLDiscovery через Keil.

Подключаем нашу платку к USB, и ждем пока она определится как внешний носитель. Если Windows не увидел вашу плату (как было у меня), то советую проверить в первую очередь кабель и разъем для него на плате. У меня, например, отошел контакт на Discovery и я очень долго пытался понять, почему же плата не работает

Но чаще всего подключение проходит без проблем, так что двигаемся дальше. Идем в папку с Keil’ом и находим драйвер для USB. Он лежит вот тут:

ARM\STLink\USBDriver (это в папке, куда установлен Keil)

Запускаем ST-Link_V2_USBdriver.exe и устанавливаем его. Возвращаемся чуть назад – в папку C:\Keil\ARM\STLink и видим там файл STLinkUSBDriver.dll размером около 65 кб. Его надо заменить на файл – STLinkUSBDriver.dll (подменять файл следует только в том случае, если ST-LINK завести не удается (!) ).

Первый этап позади!

Запускаем Keil и открываем там проект, который будем заливать в железку. Открываем меню Flash-Configure Flash Tools. Во вкладке Debug выбираем Use ST-Link Debugger и ставим галочку Run to main():

Теперь открываем вкладку Utilities и тоже выбираем ST-Link Debugger.

Думаете все? А вот нет, танцы с бубном только начинаются! Нажимаем кнопку Settings и в появившемся окне нужно добавить Programming algorithm для нашего девайса:

В этом же окне открываем вкладку Debug, находим поле Port и вместо JTAG ставим SW:

С настройкой закончили, но и это еще не все. Открываем файл stm32f10x.h и находим в районе 45-55 строк такой текст:

#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) 
	/* #define STM32F10X_LD */            /* STM32F10X_LD: STM32 Low density devices */
	/* #define STM32F10X_LD_VL */         /* STM32F10X_LD_VL: STM32 Low density Value Line devices */  
	/* #define STM32F10X_MD */            /* STM32F10X_MD: STM32 Medium density devices */
	/* #define STM32F10X_MD_VL */         /* STM32F10X_MD_VL: STM32 Medium density Value Line devices */  
	/* #define STM32F10X_HD */            /* STM32F10X_HD: STM32 High density devices */
	#define STM32F10X_XL                  /* STM32F10X_XL: STM32 XL-density devices */
	/* #define STM32F10X_CL */            /* STM32F10X_CL: STM32 Connectivity line devices */
#endif

Надо чтобы тут обязательно была раскомментирована строка #define STM32F10X_MD_VL и закомментированы все остальные, иначе программа зашьется, но не заведется.

Не забываем в настройках проекта попросить компилятор генерировать hex:

Собираем проект и нажимаем кнопку Load. В случае удачной прошивки видим строки:

Если все-таки почему-то у вас не вышло прошить плату через Keil, то есть второй способ.

Оцените статью:
Оставить комментарий