В конце прошлой недели, самым неожиданным образом, курьер принёс мне домой очередную посылку от Texas Instruments с предзаказанной платой Stellaris Lm4F120 Launchpad.
Пару месяцев назад эту отладочную плату можно было заказать всего за $4.99 (включая доставку!)
цена очень напоминает LaunchPad MSP-EXP430G2, правда? 🙂
Однако, теперь она стоит уже $12.99.
Курьер приносит бандероль в которой упакована ровно такая же коробочка, как и с LaunchPad MSP-EXP430G2:
В заветной коробочке находятся:
* сама плата Stellaris Lm4F120 Launchpad, запаянная в антистатическом пакетике,
* короткий и очень удобный шнурок c micro-USB,
* коротенькая брошюрка:
Милое пожелание счастливого кодинга внутри коробки:
Сама плата Stellaris Lm4F120 Launchpad по форм-фактору схожа с LaunchPad MSP-EXP430G2:
— у неё тоже нет никаких крепёжных отверстий. По фотографии платы видно, что плата имеет «папы» сверху, а снизу расположены «мамы», на которых плата довольно устойчиво стоит на столе.
Как и у большинства подобных отладочных плат, она разделена на часть программатора/отладчика, который в данном случае реализован на том же самом контроллере(!) и собственно плату контроллера LM4F120H5QR с минимальным набором обвязки и выведенными пинами.
В качестве дополнительных элементов, на плату установлены две кнопки и RGB-светодиод .
Характеристики Stellaris Lm4F120 LaunchPad
На плате LM4F120 LaunchPad установлены:
— МК LM4F120H5QR
— коннектор USB Micro-B (2 шт.)
— встроенный Stellaris® In-Circuit Debug Interface (ICDI)
— кнопка сброса
— RGB-светодиод
— 2 пользовательские кнопки
— пины ввода/вывода
Характеристики LM4F120H5QR
Микропроцессор LM4F120H5QR:
CPU: ARM Cortex M4F,
частота: 80 МГц,
корпус: 64LQFP,
Flash: 256 Кб,
SRAM: 32 Кб,
АЦП: 12 каналов (12 бит),
UART: 8,
I2C: 4,
SPI: 4,
CAN: 1,
GPIO: 43 (все 5-V Tolerant).
поддержка интерфейса USB 2.0
Выглядит всё очень вкусно и круто! Восемь уартов, CAN, 80 МГц!
и всего за 5 баксов 🙂
Программирование Stellaris Lm4F120 LaunchPad
Плата поставляется с демонстрационной-прошивкой, которая ШИМ-ит RGB-диод и даёт простенькую консоль (UART эмулируется ICDI-отладчиком) + демонстрируется спящий режим с пробуждением от нажатия кнопки.
Разрабатывать своё ПО, для Stellaris Lm4F120 LaunchPad можно с помощью нескольких сред профессиональной разработки:
* Keil,
* Sourcery CodeBench,
* IAR Tools
* CodeComposer Studio.
TI любезно предлагает скачать бесплатные варианты этих сред со своего сайта:
http://www.ti.com/tool/sw-ek-lm4f120xl
Разумеется, что компания TI, больше ориентируется на корпоративных клиентов и поэтому, чтобы скачать софт — придётся зарегистрироваться и заполнить небольшую анкету — нужно указать, что планируете делать и заверить TI, что не собираетесь использовать этот софт для написания программ для боевых человекоподобных роботов.
zip-архив с «бесплатным» Code Composer Studio, весит 1.4 GB и содержит:
* документацию по плате, контроллеру и началу работы
* драйвер для ICDI
* утилиту LMFlashProgrammer для загрузки прошивок в МК
* StellarisWare — библиотека и примеры работы с LM4F120H5QR
* собственно сам Code Composer Studio
Code Composer Studio — интегрированная среда разработки для программирования DSP, ARM процессоров семейства TMS320, и других процессоров, таких как MSP430, выпускаемых Texas Instruments, созданная на базе Eclipse IDE
Первое приложение для Stellaris Lm4F120 LaunchPad
После установки драйверов из EK-LM4F120XL-CCS-733\Software\ICDI
, установки Code Composer Studio и StellarisWare можно сразу написать первое приложение.
Для этого нужно выполнить следующие простые шаги:
1. В CCS нужно создать новый проект (File -> New -> CCS Project), которому нужно дать какое-нибудь имя. Выбрать семейство (family) “ARM” и вариант(variant) “Stellaris LM4F120H5QR”, указать “Stellaris In-Circuit Debug Interface” в качестве соединения.
Выбрать “Empty Project (with main.c)” (под “Empty Projects”), нажать Finish.
2. Теперь нужно подключить заголовочный файл, в котором указаны имена портов ввода-вывода нашего МК. Для этого, идём в Project -> Properties, а там в Build -> Arm Compiler – >Include Options. Жмём на плюс под “Add dir to #include search path,” выбираем “File System,” и находим директорию “inc” в папке, куда вы установили StellarisWare. Жмём OK, чтобы добавить директорию.
Напишем код, который просто включает все три светодиода, что даст нам белое свечение RGB-светодиода.
Для определения пинов, можно заглянуть в Stellaris® LM4F120 LaunchPad Evaluation
Board User’s Manual
// processor definitions #include "lm4f120h5qr.h" #define LED_RED 0x2 #define LED_BLUE 0x4 #define LED_GREEN 0x8 void main(void) { // enable PORT F GPIO peripheral SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF; // set LED PORT F pins as outputs GPIO_PORTF_DIR_R = LED_RED|LED_BLUE|LED_GREEN; // enable digital for LED PORT F pins GPIO_PORTF_DEN_R = LED_RED|LED_BLUE|LED_GREEN; // clear all PORT F pins GPIO_PORTF_DATA_R = 0; // set LED PORT F pins high GPIO_PORTF_DATA_R |= LED_RED|LED_BLUE|LED_GREEN; // loop forever for(;;); }
Заменяем этим кодом, заглушку в main.c. Жмём отладку: Run -> Debug. Этим мы соберём проект и прошьем МК. Для запуска программы, нужно нажать: Run -> Resume. RGB-светодиод должен загореться белым:
а чтобы сделать что-то вроде Blink-а можно использовать следующий код:
#include "inc/hw_gpio.h" #include "inc/hw_memmap.h" #include "inc/hw_sysctl.h" #include "inc/hw_types.h" #include "driverlib/gpio.h" #include "driverlib/sysctl.h" #define LED_RED GPIO_PIN_1 #define LED_BLUE GPIO_PIN_2 #define LED_GREEN GPIO_PIN_3 void main(void) { // configure system clock to run at 50 MHz // use external crystal (16 MHz) and PLL SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ| SYSCTL_OSC_MAIN); // Enable PORT F GPIO SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); // set LED pins as outputs GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN); // loop forever for (;;) { // set the red LED pin high, others low GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN, LED_RED); // delay SysCtlDelay(2000000); // set the green LED pin high, others low GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN, LED_GREEN); // delay SysCtlDelay(2000000); } }
пример работы с кнопками:
#include "inc/hw_gpio.h" #include "inc/hw_memmap.h" #include "inc/hw_sysctl.h" #include "inc/hw_types.h" #include "driverlib/gpio.h" #include "driverlib/sysctl.h" #define LED_RED GPIO_PIN_1 #define LED_BLUE GPIO_PIN_2 #define LED_GREEN GPIO_PIN_3 #define BUTTON_1 GPIO_PIN_0 #define BUTTON_2 GPIO_PIN_4 void main(void) { int light; // configure system clock to run at 50 MHz // use external crystal (16 MHz) and PLL SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ| SYSCTL_OSC_MAIN); // Enable PORT F GPIO SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); // set LED pins as outputs GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN); // SEE COMMENTS IN THE POST // set user switches as inputs GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, BUTTON_1|BUTTON_2); // turn weak pull-ups on GPIOPadConfigSet(GPIO_PORTF_BASE, BUTTON_1|BUTTON_2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); // loop forever for (;;) { light = 0; if(!GPIOPinRead(GPIO_PORTF_BASE, BUTTON_1)) light |= LED_RED; if(!GPIOPinRead(GPIO_PORTF_BASE, BUTTON_2)) light |= LED_BLUE; GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_BLUE|LED_GREEN, light); SysCtlDelay(500000); } }
далее: Stellaris Lm4F120 Launchpad — измерение температуры термодатчиком
Ссылки
http://www.ti.com/stellaris-launchpad
http://www.ti.com/product/lm4f120h5qr
https://estore.ti.com/Stellaris-LaunchPad.aspx
Getting Started with the Stellaris EK-LM4F120XL LaunchPad Workshop
http://processors.wiki.ti.com/index.php/Stellaris_LM4F120_LaunchPad_Blink_the_RGB
http://processors.wiki.ti.com/index.php/Getting_Started_with_the_Stellaris_EK-LM4F120XL_LaunchPad_Workshop
Getting Started with the Stellaris Launchpad
Stellaris Launchpad PWM Tutorial
Programming the Stellaris Launchpad with GNU/Linux
По теме
LaunchPad MSP-EXP430G2 от Texas Instruments — альтернатива Arduino?
0 комментариев на «“Stellaris Lm4F120 Launchpad — отладочная плата на ARM Cortex M4 от Texas Instruments”»
Приятно что с каждым годом выбор ардуино-подобных плат всё больше и больше! 🙂
Читал на буржуйском форуме, что по 5 баксов отдавали платы с чипом ревизии A1 и A3.
А за 12 баксов — идёт уже ревизия B0, в которой пофиксена куча гадких багов.
Правда — не правда, не знаю.
Похоже на правду — тожегде-то находил подобное упоминание 🙂
на моей плате написано: EK-LM4F120XL REV A
а на МК — LX4F120H 5QRFIGA3 28APEFW G4
Работает только первый пример. Остальные два выдают ошибки:
undefined first referenced
symbol in file
— — GPIOPinTypeGPIOOutput ./hello.obj
GPIOPinWrite ./hello.obj
SysCtlClockSet ./hello.obj
SysCtlDelay ./hello.obj
SysCtlPeripheralEnable ./hello.obj
Очевидно подцеплять нужно еще и .C файл с этими функциями только хз как.
нужно прописать путь до библиотеки StellarisWare
инклуды прописаны по инстукции но этого мало
Тока что прибыли две платки, через курьера DHL, из Нидерландов 🙂
Самое интересное — на плате написано «EK-LM4F120XL REV B»
То есть ревизия Б! В нете навалом фоток ревизии А.
Будем изучать.
(2013 01 03)
А как собственно загружать прошивку в плату?
И можно ли как то связать с Arduino IDE эту платку?))
сам спросил — сам ответил ))energia.nu/