Работа с жк индикатором на отладочной плате 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 / внешний |
Комплектация:
- Отладочная плата 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, то есть второй способ.