Введение в разработку проекта с помощью atmel sam4s xplained pro

Введение в разработку проекта с помощью atmel sam4s xplained pro
Введение в разработку проекта с помощью atmel sam4s xplained pro
Anonim

Введение в разработку проекта с помощью Atmel SAM4S Xplained Pro

Узнайте о базовых процедурах и методах создания собственных проектов с платформой разработки SAM4S Xplained Pro от Atmel.

Требуемое оборудование / программное обеспечение

  • Стартовый комплект SAM4S Xplained Pro или комплект для оценки SAM4S Xplained Pro плюс плата расширения OLED1 Xplained Pro
  • Студия Atmel

Совет по развитию и таможня

Существует огромная пропасть, которая отделяет покупку комплекта разработки от проектирования и сборки собственной печатной платы. С первым вы просто размещаете заказ, и через несколько дней у вас есть опытно разработанный, тщательно протестированный, профессионально собранный блок, готовый для вашего последнего приложения. В последнем случае у вас есть часы тщательного схематического проектирования и компоновки печатных плат, за которыми следует дорогостоящая или трудоемкая сборка печатных плат, и, конечно, всегда существует нависшая вероятность того, что готовая доска будет частично или даже неэффективной. Тем не менее, мне нравится создавать свои собственные печатные платы, одна из причин заключается в том, что я могу использовать более широкий спектр функций. Из этого следует, что я был бы особенно доволен платой разработки, которая предоставляет обычные преимущества, предлагая менее ограниченный набор возможностей, которые можно удобно оценить. Если вы чувствуете то же самое, я думаю, вам понравится платформа Atplel Xplained Pro.

Стартовый комплект

В этом проекте мы будем использовать плату SAM4S Xplained Pro. Плата процессора (он же «комплект оценки») не настолько впечатляет; впечатляющей частью являются многочисленные модули расширения Xplained Pro (ака «add-on»), которые вы можете подключить к одному из разъемов расширения на плате процессора. Вы можете перейти сюда для получения списка комплектов для оценки Xplained Pro и модулей расширения. Если вы купите стартовый комплект SAM4S Xplained Pro, вы получите плату разработки для микроконтроллера ATSAM4SD32C вместе с тремя модулями расширения: один с OLED-дисплеем вместе с некоторыми светодиодами и кнопками; один (среди прочего) датчик освещенности, датчик температуры, фильтр нижних частот и разъем для карт microSD, нагруженный картой microSD емкостью 2 ГБ (этот модуль называется «плата ввода / вывода»); и один с довольно-крупномасштабной прототипирующей областью сквозного отверстия, сопровождаемой удобным помеченным сигнальным заголовком.

Image
Image

Для этого проекта требуется только модуль расширения OLED, хотя помеченный заголовок в модуле прототипирования удобен, если вы хотите исследовать сигнал.

A - S - F

Для таких людей, как я, которые начали свою профессиональную карьеру, программируя 8051, используя что-то, называемое языком ассемблера, Atmel Software Framework (ASF) представляет собой обширно обширную библиотеку программного обеспечения, которая делает разработку проектов микроконтроллеров почти абсурдно легкой. Тем не менее, вся эта предварительно упакованная микропрограммная система с микропроцессором имеет свои недостатки и трудности, поэтому подходите с осторожностью. Кроме того, вы, вероятно, заметили, что инженерия никогда не становится проще, поскольку требования к системе развиваются пропорционально сложности и эффективности наших инструментов. Конечно, когда-то мне приходилось использовать небольшой ассемблерный код, но тогда никто не ожидал увидеть видео на YouTube на наручных часах.

Так или иначе, важный шаг в разработке проектов с устройствами Atmel - это знакомство с ASF. В конце этой статьи вам должно быть понятно, что такое ASF и как его использовать; пока я просто упомянул несколько важных моментов:

  • Функциональность ASF охватывает не только сами микроконтроллеры, но также платы разработки и внешние сторонние устройства, такие как OLED-дисплей на плате OLED и датчик температуры на плате ввода-вывода (а также длинный список других, не включенных в этот стартовый комплект-Ethernet-приемопередатчик, ЖК-дисплей, 640 × 480 CMOS-датчик изображения, пироэлектрический инфракрасный датчик …)
  • ASF интегрирован (довольно гладко, я бы сказал) в Atmel Studio (который вы можете скачать бесплатно). Таким образом, включение функций ASF в ваш проект не требует дополнительной загрузки или отдельной конфигурации ASF-программы, разработки кода, компиляции и отладки, все это происходит в Atmel Studio.
  • Процитировать Atmel: «Цель ASF - предоставить богатый набор проверенных драйверов и модулей кода, разработанных экспертами Atmel, чтобы сократить время разработки клиента». «ASF … предназначен для использования в процессах оценки, прототипирования, проектирования и производства». Дело здесь в том, что Atmel считает ASF довольно солидным - на что можно положиться на этапе прототипирования и уверенно включать даже в производственный код.

Шаг за шагом

Без дальнейших церемоний, давайте тщательно рассмотрим процесс создания нового приложения SAM4S Xplained Pro. Целью здесь является простая «видеоигра», которая использует два компонента на доске расширения OLED, а именно OLED-дисплей и кнопку 2. Мы рассмотрим начальную процедуру в этой статье, а затем разработаем остальную часть функциональных возможностей в части 2,

  1. Откройте Atmel Studio.
  2. Прикрепите плату расширения OLED к заголовку EXT3 на плате SAM4S, затем подключите USB-кабель от разъема «DEBUG USB» на плате SAM4S к одному из USB-портов ПК. Вы увидите следующий экран, когда Atmel Studio узнает комплект оценки.
Image
Image
  1. Откройте Файл → Новый → Проект.
  2. Выберите «GCC C ASF Board Project».
Image
Image

Введите название проекта и нажмите «ОК».

Image
Image

Выберите «Выбрать по форуму» и прокрутите страницу вниз до «SAM4S Xplained Pro - ATSAM4SD32C». Как показано темно-серым прямоугольником в полосе прокрутки, он немного на полпути вниз. Нажмите «ОК».

Image
Image
  1. Когда Atmel Studio закончит создание проекта, посмотрите на крайнее право, и вы увидите новый проект, указанный в панели «Solution Explorer».
  2. Следующее изображение показывает папки и файлы, включенные в каталог «src». Вы заметите, что большинство файлов имеют темно-серый квадрат в правом нижнем углу. Это означает, что файл еще не был изменен. После изменения файла квадрат становится красным.
Image
Image
  1. Взгляните на файл «main.c». У этого уже есть некоторые информационные комментарии и минимальная структура кода, чтобы вы начали. Вы можете продолжить и удалить все в функции main ().
  2. Теперь перейдите в Project → ASF Wizard. В левом верхнем углу выберите новый проект (в данном случае OLEDTargetPractice). Панель «Выбор модулей» показывает, какие модули ASF уже включены в проект. Это модули, которые Atmel Studio включил по умолчанию. Поскольку мы будем использовать OLED-дисплей, нам нужно добавить модуль ASF для интерфейса OLED.
Image
Image

Прокрутите вниз и выберите модуль SSD1306 OLED (компонент). В нижней части окна нажмите «Добавить >>», затем «Применить»; появится диалоговое окно, в котором вы получите «сводку операций для выбранных параметров». Нажмите «ОК». Atmel Studio автоматически изменяет файлы проекта, чтобы гарантировать, что этот модуль ASF правильно включен в проект. Нам не нужно добавлять дополнительные модули для этого проекта, поэтому вы можете закрыть окно «Мастер ASF».

Image
Image

Наконец, мы готовы написать код

В следующем фрагменте кода показана функция main () для этой части проекта. Скопируйте и вставьте, чтобы ваша функция main () была такой же, как моя. Подробнее см. Комментарии в коде.


int main (void) { char DisplayString() = "This is an OLED test."; char DisplayChar(2); uint8_t DisplayString_Length = 21; uint8_t n; //clock configuration and initialization sysclk_init(); /*Disable the watchdog timer and configure/initialize port pins connected to various components incorporated into the SAM4S Xplained development platform, eg, the NAND flash, the OLED interface, the LEDs, the SW0 pushbutton.*/ board_init(); //initialize SPI and the OLED controller ssd1306_init(); /*The second character in this two-character array must be zero so that the ssd1306_write_text() function correctly interprets the array as a one-character string.*/ DisplayChar(1) = 0; while (1) { /*Clear the OLED screen, then set the cursor to the top-left character position.*/ ssd1306_clear(); ssd1306_set_page_address(0); ssd1306_set_column_address(0); for (n = 0; n < DisplayString_Length; n+) { /*Copy the current character of DisplayString to the one-character array DisplayChar.*/ DisplayChar(0) = DisplayString(n); //display the single character ssd1306_write_text(DisplayChar); //the ASF includes handy delay functions delay_ms(400); } } }

Что касается конфигурации оборудования "" src = "// www.allaboutcircuits.com/uploads/articles/OLEDT1_capture8.jpg" />

Функции ASF просматривают информацию в этих файлах, чтобы определить, как именно настроить аппаратное обеспечение. Например, файл «conf_clock.h» содержит список определений препроцессора, связанных с источником системных часов, предикатором системных часов и настройками PLL (фазовой автоподстройки частоты). Вы «настраиваете» это оборудование часов, комментируя / раскомментируя определенные определения препроцессора или изменяя определения. Затем все, что вам нужно сделать, это вызвать функцию sysclk_init (), которая будет любезно включать ваши настройки, поскольку она заботится обо всех деталях конфигурации часов.

Давайте продолжим и изменим конфигурационные файлы, и после этого мы действительно сможем отобразить текст на OLED.

В «conf_board.h»: добавьте определения «Включить экран OLED».


#ifndef CONF_BOARD_H #define CONF_BOARD_H // Enable the OLED screen #define CONF_BOARD_SPI #define CONF_BOARD_SPI_NPCS1 #define CONF_BOARD_SPI_NPCS2 #define CONF_BOARD_OLED_UG_2832HSWEG04 #endif /* CONF_BOARD_H */

В «conf_clock.h»: прокомментируйте определения «PLL1 (B)» и определения «USB Clock Source». Этот проект не использует PLL1 или USB.


#ifndef CONF_CLOCK_H_INCLUDED #define CONF_CLOCK_H_INCLUDED // ===== System Clock (MCK) Source Options //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_RC //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_XTAL //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_SLCK_BYPASS //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_4M_RC //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_8M_RC //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_12M_RC //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_XTAL //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_MAINCK_BYPASS #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLACK //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLLBCK // ===== System Clock (MCK) Prescaler Options (Fmck = Fsys / (SYSCLK_PRES)) //#define CONFIG_SYSCLK_PRES SYSCLK_PRES_1 #define CONFIG_SYSCLK_PRES SYSCLK_PRES_2 //#define CONFIG_SYSCLK_PRES SYSCLK_PRES_4 //#define CONFIG_SYSCLK_PRES SYSCLK_PRES_8 //#define CONFIG_SYSCLK_PRES SYSCLK_PRES_16 //#define CONFIG_SYSCLK_PRES SYSCLK_PRES_32 //#define CONFIG_SYSCLK_PRES SYSCLK_PRES_64 //#define CONFIG_SYSCLK_PRES SYSCLK_PRES_3 // ===== PLL0 (A) Options (Fpll = (Fclk * PLL_mul) / PLL_div) // Use mul and div effective values here. #define CONFIG_PLL0_SOURCE PLL_SRC_MAINCK_XTAL #define CONFIG_PLL0_MUL 20 #define CONFIG_PLL0_DIV 1 // ===== PLL1 (B) Options (Fpll = (Fclk * PLL_mul) / PLL_div) // Use mul and div effective values here. //#define CONFIG_PLL1_SOURCE PLL_SRC_MAINCK_XTAL //#define CONFIG_PLL1_MUL 16 //#define CONFIG_PLL1_DIV 2 // ===== USB Clock Source Options (Fusb = FpllX / USB_div) // Use div effective value here. //#define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL0 //#define CONFIG_USBCLK_SOURCE USBCLK_SRC_PLL1 //#define CONFIG_USBCLK_DIV 2

  • В «conf_spi_master.h»: никаких изменений не требуется.
  • В «conf_ssd1306.h»: удалить все в разделе «Поддержка и часто задаваемые вопросы …». комментарий и вместо этого используйте следующее, взятое из примера кода Атмела:

/* * Support and FAQ: visit Atmel Support */ #ifndef CONF_SSD1306_H_INCLUDED #define CONF_SSD1306_H_INCLUDED // Interface configuration for SAM4S Xplained Pro #define SSD1306_SPI_INTERFACE #define SSD1306_SPI SPI #define SSD1306_DC_PIN UG_2832HSWEG04_DATA_CMD_GPIO #define SSD1306_RES_PIN UG_2832HSWEG04_RESET_GPIO #define SSD1306_CS_PIN UG_2832HSWEG04_SS /* Minimum clock period is.(JavaScript must be enabled to view this email address) -> max frequency is 20MHz */ #define SSD1306_CLOCK_SPEED UG_2832HSWEG04_BAUDRATE #define SSD1306_DISPLAY_CONTRAST_MAX 40 #define SSD1306_DISPLAY_CONTRAST_MIN 30 #endif /* CONF_SSD1306_H_INCLUDED */

Вы можете использовать следующую ссылку для загрузки всех файлов, связанных с этим проектом.

Файлы источника и проекта

На этом этапе мы готовы выполнить нашу полностью волнующую программу отображения текста. Нажмите кнопку «Начать без отладки» (т. Е. Не заполненный зеленый треугольник рядом с заполненным зеленым треугольником), и если все будет хорошо, функциональность будет такой же, как и то, что вы видите на видео в конце этой статьи.

Вывод

Теперь вы знакомы с основными шагами, необходимыми для создания собственного проекта с помощью Atmel Studio, а не более или менее слепо изменяя один из примеров проектов. В следующей статье мы закончим нашу очень примитивную видеоигру, и в этом процессе мы узнаем о взаимодействии с модулем дисплея и кнопками на доске расширения OLED.

Следующая статья в серии: Как создать игровую систему с Atmel SAM4S Xplained Pro

Попробуйте этот проект сами! Получить спецификацию.