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 любезно предлагает скачать бесплатные варианты этих сред со своего сайта:
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”»

  1. Читал на буржуйском форуме, что по 5 баксов отдавали платы с чипом ревизии A1 и A3.
    А за 12 баксов — идёт уже ревизия B0, в которой пофиксена куча гадких багов.
    Правда — не правда, не знаю.

    • Похоже на правду — тоже где-то находил подобное упоминание 🙂
      на моей плате написано: EK-LM4F120XL REV A
      а на МК — LX4F120H 5QRFIGA3 28APEFW G4

  2. Работает только первый пример. Остальные два выдают ошибки:

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

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

    • нужно прописать путь до библиотеки StellarisWare

  3. Тока что прибыли две платки, через курьера DHL, из Нидерландов 🙂
    Самое интересное — на плате написано «EK-LM4F120XL REV B»
    То есть ревизия Б! В нете навалом фоток ревизии А.

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

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение