CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Stellaris Lm4F120 Launchpad - отладочная плата на ARM Cortex M4 от Texas Instruments


В конце прошлой недели, самым неожиданным образом, курьер принёс мне домой очередную посылку от 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 любезно предлагает скачать бесплатные варианты этих сред со своего сайта:
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 — измерение температуры термодатчиком

Ссылки:
www.ti.com/stellaris-launchpad
www.ti.com/product/lm4f120h5qr
https://estore.ti.com/Stellaris-LaunchPad.aspx
Getting Started with the Stellaris EK-LM4F120XL LaunchPad Workshop
processors.wiki.ti.com/index.php/Stellaris_LM4F120_LaunchPad_Blink_the_RGB
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
  • 26 ноября 2012, 08:31
  • noonv

Комментарии (10)

RSS свернуть / развернуть
+
0
Приятно что с каждым годом выбор ардуино-подобных плат всё больше и больше! :)
avatar

SinauRus

  • 26 ноября 2012, 16:22
+
0
Читал на буржуйском форуме, что по 5 баксов отдавали платы с чипом ревизии A1 и A3.
А за 12 баксов — идёт уже ревизия B0, в которой пофиксена куча гадких багов.
Правда — не правда, не знаю.
avatar

vasiliok

  • 6 декабря 2012, 23:51
+
0
Похоже на правду — тоже где-то находил подобное упоминание :)
на моей плате написано: EK-LM4F120XL REV A
а на МК — LX4F120H 5QRFIGA3 28APEFW G4
avatar

noonv

  • 7 декабря 2012, 07:00
+
0
Работает только первый пример. Остальные два выдают ошибки:

undefined first referenced
symbol in file
— — GPIOPinTypeGPIOOutput ./hello.obj
GPIOPinWrite ./hello.obj
SysCtlClockSet ./hello.obj
SysCtlDelay ./hello.obj
SysCtlPeripheralEnable ./hello.obj

Очевидно подцеплять нужно еще и .C файл с этими функциями только хз как.
avatar

trawen

  • 17 декабря 2012, 01:58
+
0
нужно прописать путь до библиотеки StellarisWare
avatar

noonv

  • 17 декабря 2012, 07:10
+
0
инклуды прописаны по инстукции но этого мало
avatar

trawen

  • 17 декабря 2012, 07:19
+
0
Тока что прибыли две платки, через курьера DHL, из Нидерландов :-)
Самое интересное — на плате написано «EK-LM4F120XL REV B»
То есть ревизия Б! В нете навалом фоток ревизии А.

Будем изучать.
(2013 01 03)
avatar

vasiliok

  • 3 января 2013, 18:22
+
0
А как собственно загружать прошивку в плату?
avatar

timer23

  • 10 августа 2015, 23:25
+
0
И можно ли как то связать с Arduino IDE эту платку?))
avatar

timer23

  • 10 августа 2015, 23:28
+
0
сам спросил — сам ответил )) energia.nu/
avatar

timer23

  • 10 августа 2015, 23:31

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.