В конце прошлой недели, самым неожиданным образом, курьер принёс мне домой очередную посылку от Texas Instruments с предзаказанной платой Stellaris Lm4F120 Launchpad.
Пару месяцев назад эту отладочную плату можно было заказать всего за $4.99 (включая доставку!)
Однако, теперь она стоит уже $12.99.
Курьер приносит бандероль в которой упакована ровно такая же коробочка, как и с LaunchPad MSP-EXP430G2:
В заветной коробочке находятся:
* сама плата Stellaris Lm4F120 Launchpad, запаянная в антистатическом пакетике,
* короткий и очень удобный шнурок c micro-USB,
* коротенькая брошюрка:
Милое пожелание счастливого кодинга внутри коробки:
Сама плата Stellaris Lm4F120 Launchpad по форм-фактору схожа с LaunchPad MSP-EXP430G2:
— у неё тоже нет никаких крепёжных отверстий. По фотографии платы видно, что плата имеет «папы» сверху, а снизу расположены «мамы», на которых плата довольно устойчиво стоит на столе.
Как и у большинства подобных отладочных плат, она разделена на часть программатора/отладчика, который в данном случае реализован на том же самом контроллере(!) и собственно плату контроллера LM4F120H5QR с минимальным набором обвязки и выведенными пинами.
В качестве дополнительных элементов, на плату установлены две кнопки и RGB-светодиод .
Выглядит всё очень вкусно и круто! Восемь уартов, CAN, 80 МГц!
и всего за 5 баксов :)
Программирование Stellaris Lm4F120 LaunchPad
Плата поставляется с демонстрационной-прошивкой, которая ШИМ-ит RGB-диод и даёт простенькую консоль (UART эмулируется ICDI-отладчиком) + демонстрируется спящий режим с пробуждением от нажатия кнопки.
Разрабатывать своё ПО, для Stellaris Lm4F120 LaunchPad можно с помощью нескольких сред профессиональной разработки:
* Keil,
* Sourcery CodeBench,
* IAR Tools
* CodeComposer Studio.
TI любезно предлагает скачать бесплатные варианты этих сред со своего сайта: 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-светодиода.
// 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);
}
}
Читал на буржуйском форуме, что по 5 баксов отдавали платы с чипом ревизии A1 и A3.
А за 12 баксов — идёт уже ревизия B0, в которой пофиксена куча гадких багов.
Правда — не правда, не знаю.
Тока что прибыли две платки, через курьера DHL, из Нидерландов :-)
Самое интересное — на плате написано «EK-LM4F120XL REV B»
То есть ревизия Б! В нете навалом фоток ревизии А.
Комментарии (10)
RSS свернуть / развернутьSinauRus
А за 12 баксов — идёт уже ревизия B0, в которой пофиксена куча гадких багов.
Правда — не правда, не знаю.
vasiliok
на моей плате написано: EK-LM4F120XL REV A
а на МК — LX4F120H 5QRFIGA3 28APEFW G4
noonv
undefined first referenced
symbol in file
— — GPIOPinTypeGPIOOutput ./hello.obj
GPIOPinWrite ./hello.obj
SysCtlClockSet ./hello.obj
SysCtlDelay ./hello.obj
SysCtlPeripheralEnable ./hello.obj
Очевидно подцеплять нужно еще и .C файл с этими функциями только хз как.
trawen
noonv
trawen
Самое интересное — на плате написано «EK-LM4F120XL REV B»
То есть ревизия Б! В нете навалом фоток ревизии А.
Будем изучать.
(2013 01 03)
vasiliok
timer23
timer23
timer23
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.