Меню сайта
Календарь
|
STM32L-DISKOVERY.Начало работыЗахотелось посмотреть на новое, для меня, семейство МК - STM32. Для начала прикупил в "сети" отладочную плату STM32L-DISKOVERY. На плате установлен 32-битный ARM-микроконтроллер STM32L152RBT6 семейства Cortex-M3 (128 KБ Flash, 16 KБ RAM и 4 KБ EEPROM) Интерфейсы USB 2.0 FS, 3xUSART, 2xSPI, 2xI2C, 8 таймеров плюс:
Вообще первое впечетление от платы - вещь конечно мощная, но все немного сложнее AVR.Кроме того ,информации именно по этой плате маловато, в основном все материалы идут по STM32F .Но кое-чего я все-таки "нарыл".Поначалу "покурил" мануал, очень понравилась ,вот эта диаграма, все предельно просто расписано: Сначала среду розработки выбрал для себя CooCox,поскольку являюсь сторонником бесплатного софта.Об установке почитал здесь .Для програматора-отладчика установил, вот этот драйвер - st-link_v2_usbdriver. Итак,с чего-же начать? Конечно-же с банального мигания светодиодами,благо на плате их есть 2 ,синий(PB7) и зеленый(PB6). Пример 1 - http://chipspace.ru/stm32-project-iar-ewarm-porty-1/ Светодиоды поочередно мигают.Хоть в даной ссылке проект для IAR EWARM, у меня он скомпилировался и в CoIDe. Пример 2 - http://php.ua/blog/2012-10-22/stm32l-discovery-...167 Используется прерывания от таймера, чтобы когда он переполнится, сработало прерывание и светодиоды сменили свое состояние.По даной ссылке имеется проект для Keil,хотя у меня тот-же код скомпилировался и в CoIDe. Далее,по аналогии , как я делал с AVR - подключение LCD.Сразу на ум попадает LCD 1602 с контроллером HD44780.Но на плате STM32L discovery имеется свой LCD ,подробней можно почитать здесь : http://chipspace.ru/stm32l-discovery-lcd/ .
Вполне не плохо , но как оказалось , при всей "многоногости"(64) STM32L152RBT6, после подключения LCD - оставалось не так уж много свободных пинов , давайте проанализируем их. На сам LCD задействовано 28 пинов. Кроме того 6 пинов (по 2 на порты A,B,C) задействованы на "linear touch sensor" (Емкостной аналоговый датчик прикосновений в виде полосы, который так же можно использовать как 4 сенсорные кнопки),причем эти пины даже не выведены на торцы платы. Еще 2 пина PB6,PB7 - подключены светодиоды (LED) и PA0 - кнопка (BUTTON)
Далее: PB2 - задействован на boot1; PC14,PC15 - osc32 (подключен часовой кварц 32 кГц); PH0,PH1 - osc предназначены для подключения внешнего кварца для STM32L152RBT6; PA13,PA14 - интерфейс SWD; PA4,PC13 - интерфейс измерения; Согласно мануала UM1079, таблица Extension connectors ,свободных от "board function" пинов (Free I/O) - 5 шт (PA5,PA11,PA12,PC13,PD2) ,причем PA11,PA12 аппаратный USB.Как видите "не густо"... Cледующий шаг - вывод переменной на LCD.Для этого нужна библиотека поддерживающая встроеный дисплей.Я попробовал этот пример - http://chipspace.ru/stm32l-discovery-lcd-2/. На этом же ресурсе есть статья "STM32L-DYSCOVERY. АЦ-преобразование и вывод на дисплей" - http://chipspace.ru/stm32l-discovery-adc-lcd/ ,взяв ее за основу.Пересобрал проект под CoIDE, но вот незадача, программа работала не совсем коректно,происходила "засветка" некоторых сегментов 5 и 6 цифры дисплея.Хотя при прошивке HEX-ом из статьи все работало нормально. И тут попалась на глаза еще одна бесплатная IDE - Em::Blocks 2.20. Пересобрал проект в ней ,и все заработало коректно.К сожелению Em::Blocks 2.20 с оф-сайта скачать невозможно,сайт стоит,поэтому вылаживаю здесь - https://yadi.sk/d/UKt31o3pbr2nW (Em::Blocks 2.20). И напоследок,на базе вышеизложеного проекта - просто пример вывод переменной на LCD.В цикле while к переменной а постоянно добавляется единица, естественно это все удовольствие выводится на экран LCD. #include "stm32l1xx.h" uint16_t a; //Переменная для хранения результата преобразования void convert_into_char(uint32_t number, uint16_t *p_tab); convert_into_char(a, strDisp); strDisp[0] = ' '; //Первое знакоместо дисплея оставляем пустым void assert_failed(uint8_t* file, uint32_t line) #endif units = (((number%10000)%1000)%100)%10; *(p_tab+4) = units + 0x30; Архив проекта для Em::Blocks 2.20 - здесь . |
Архив записей
Друзья сайта
Статистика
Онлайн всього: 1 Гостей: 1 Користувачів: 0 |