Karma-SAM3S. Осваиваем ARM Cortex-M3

19/03/2014 - 15:13 Pavel Bobkov

Введение

В индийской философии существует понятие кармы. Это причинно-следственный закон, согласно которому действия человека определяют его дальнейшую судьбу. Если применить это понятие к текущей ситуации в мире микроконтроллеров, то наша карма - это переход к использованию 32-х разрядных микроконтроллеров. Поэтому когда я решил наконец взяться за изучение ARM`ов и сделать на подобном микроконтроллере демо-плату, я выбрал для нее именно такое название - KARMA. Дополнительно к основному смыслу, получилась игра слов: карма - к ARM`у. Демо-плата, как первый шаг к освоению ARM`а.

Ну это так, лирика. А если по существу, то в этом посте я хочу рассказать вам про демо-плату, которую сделал для изучения микроконтроллера AT91SAM3S4B. Это 32-х разрядный микроконтроллер фирмы Atmel на ядре ARM Cortex-M3. Он имеет 256 кБ флэш памяти, 48 кБ оперативной памяти и тактовую частоту до 64 МГц. В составе микроконтроллера богатый набор периферии - таймеры-счетчики, SPI, TWI, UART, USB, PWM, ADC, DAC модули и т.д, а наличие встроенного загрузчика позволяет прошивать его без программатора. Микроконтроллеры SAM3 поддерживаются бесплатной фирменной средой разработки Atmel Studio 6, которая содержит большое количество готовых библиотек, драйверов и примеров. При наличии JTAG отладчика , Atmel Studio 6 позволяет отлаживать программу микроконтроллера по шагам.

Описание 

Karma-SAM3S представляет собой квадратную плату размером 84x84 мм. На ней установлен микроконтроллер AT91SAM3S4B фирмы Atmel и вся необходимая для него "обвязка" - стабилизаторы напряжения, кварцевый резонатор, JTAG разъем и т.д. Также на плате есть несколько компонентов для начального знакомства с периферией микроконтроллера - две пользовательские кнопки, два светодиода, потенциометр подключенный к АЦП, бузер, источник опорного напряжения, USB-UART преобразователь, разъем для microSD карт. 


Помимо этого на плате есть разъемы для подключения модулей - это UEXT разъем фирмы Olimex и MicroBus разъем фирмы Microelectronika. На этих разъемы выведены все широко используемые интерфейсы - I2C, SPI, UART. 


Для обоих разъемов существует широкая номенклатура модулей, начиная от простых интерфейсных модулей (RS-485, CAN и т.д.) и заканчивая GPS, GSM модулями. Это позволяет расширять возможности платы, быстро осваивать работу с различной периферией, а также собирать макеты устройств. 

Список модулей для MicroBus разъема можно посмотреть на сайте Microelectronika.



Список модулей для UEXT разъема можно посмотреть на сайта Olimex.



Пользовательские выводы микроконтроллера AT91SAM3S4B сгруппированы на 10-и контактные разъемы типа IDC. Посадочные места под разъемы оставлены пустыми, чтобы пользователь мог запаять то, что ему необходимо - штыри или гнезда. 


9 и 10 выводы каждого разъема подключен к цепям питания. С помощью запаиваемого джампера 9-ый вывод разъемов можно подключить либо к 3.3 В, либо к 5В. Под такую конфигурацию разъемов у фирмы Microelectronika тоже существуют различные периферийные модули. 

Все интерфейсные разъемы расположены таким образом, чтобы попадать контактами в сетку c шагом 2.54 мм. Это позволяет размещать над или под платой Karma-SAM3S так называемый шилд (макетное поле).

Например так.


Или так. 



Питание 

На плате организованы две шины питания - 3.3 В и 5 В. Напряжение 3.3 В необходимо для работы микроконтроллера, 5 В используется для USB-UART преобразователя. Также оба этих напряжения подаются на разъемы модулей (MicroBus, UEXT) и разъемы портов ввода-вывода. 

Питание на плату можно подавать несколькими способами:

- через разъем адаптера, 
- через клеммник, 
- через USB разъемы. 

 

При питании платы через адаптер или клеммник входное напряжение должно быть около 7 - 9 В. Если 5-и вольтовое напряжение на плате не используется, напряжение питания можно понизить до 5 В. Полярность входного напряжения не играет роли, потому что перед стабилизаторами установлен диодный мост.

Напряжение с USB разъемов подается на стабилизаторы через перемычки. Поэтому для работы от USB они должны быть установлены. 

При питании от USB 5-и вольтовая шина будет иметь напряжение ~4.5 В. Это связано с тем, что источники напряжения подключены к шинам питания платы через диоды, на которых падает часть входного напряжения. 

Для включения или выключения платы используется движковый переключатель, а для индикации наличия напряжения - два светодиода. 

Прошивка

Микроконтроллер на плате можно прошивать двумя способами:

- с помощью встроенного загрузчика (бутлоадера), 
- с помощью JTAG отладчика. 

 

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

Загрузчик хранится в постоянной памяти микроконтроллера и его нельзя стереть. Однако для того, чтобы его активировать, нужно подать на плату KARMA-SAM3 питание, предварительно зажав кнопку ERASE. Микроконтроллер сбросит специальный бит, который определяет источник загрузки, и при следующем запуске передаст управление загрузчику.

Для выполнения самого процесса записи можно использовать одну из программ - SAM-BA или BOSSA. 

При наличии JTAG отладчика удобство программирования, конечно повышается. Кроме того у нас появляется возможность в прямом смысле видеть все содержимое микроконтроллера и отлаживать программу по шагам. В качестве JTAG отладчика можно использовать фирменный, но дорогой SAM-ICE.


Или его бюджетный китайский аналог - J-Link. 


Подробнее о процессе программирования я расскажу в следующих постах.

Среда разработки 

Для написания программ можно использовать бесплатную фирменную среду Atmel Studio 6. В составе Atmel Studio 6 есть большое количество библиотек и драйверов для микроконтроллера SAM3S. Это существенно облегчает начальное знакомство с ARM микроконтроллером. 

При наличии аппаратного JTAG отладчика студия позволяет отлаживать код по шагам и видеть содержимое памяти и регистров микроконтроллера. 


Для любителей хардкора есть IAR ARM. Эта платная среда разработки, но существует бесплатная версия с ограничением по коду. Для начального знакомство с ARM микроконтроллером этого вполне достаточно. 

Заказ

Если вас заинтересовала плата Karma-SAM3S, вы можете сделать заказ через форму обратной связи.

Стоимость платы составляет 1550 рублей без учета доставки. 
В комплектацию входит - собранная плата, джамперы, 4 стойки с гайками и антистатическая упаковка. 

Шилд (макетное поле) стоит 150 рублей. 

Плата делается под заказ, поэтому время выполнения заявки 1-2 недели.

Оплата наличными на руки или с помощью электронных платежей (Яндекс. Деньги, WebMoney, PayPal).

Доставка от 200 рублей. По Москве курьером, в другой город почтой.  

Заключение

По мере изучения этого микроконтроллера я буду выкладывать на сайт учебные материалы. В ближайшее время появится документация, материал о прошиве и написании первой программы.


Comments   

# Виктор 2014-03-19 19:36
Интересно!
Повсюду растет ажиотаж вокруг АРМов, в особенности STM32. Я, буквально на днях, задавал себе вопрос можно ли будет вскоре найти материал по Атмелу. И вот оно!
Единственное хотелось бы задать пару вопросов:
1.Почему не ST кторый стоит копейки
2.Ваша плата стоит около 50 уе, а например Discovery 20-30. причем на борту присутсвуют всевозможные датчики, гироскопы и т.п. плюс эта плата может выступать в качестве программатора
Хотел только что сравнить цены, так нигде не нашел такой контроллер. Странно....
Кстати а название прикольное )))
# Pashgan 2014-03-19 20:23
1) STM32 с аналогичными характеристикам и (ядро, флэш память, ОЗУ, тактовая частота, количество выводов) имеет примерно такую же цену, что и AT91SAM3S4B. В этом можно убедиться, полистав каталог фирмы Terraelectronic a.

Плюс, мне нравится продукция фирмы Atmel и я хочу заниматься микроконтроллер ами только этой фирмы. У них хорошая документация и средства разработки.

2) Штучное и мелкосерийное производство всегда дороже массового. Отдельно взятый инженер не может тягаться с такой крупной фирмой как STMicroelectron ics. Они используют собственную элементную базу, автоматизирован ные сборочные линии и могут позволить себе продавать демо-платы даже в убыток, преследуя рекламные цели.

Цена на самом деле сопоставима с аналогичными платами, например платами фирмы Olimex. В качестве дополнительного бонуса будут выступать мои учебные материалы. Ведь демо-плат полно, а демо-плат с учебными материалами почти нет. Разве что у Ди Халта.
# vovanxp 2014-03-20 08:28
Ну наконец то STM32. Будем ждать интересных публикаций.Ужа многие перешли на STM32.
# vovanxp 2014-03-20 08:32
Не верное дорогой идете товарищи.
Discovery намного популярнее, доступнее и дешевле. Также как и ST.
А из среды разработки KEIL.
# Pashgan 2014-03-20 09:15
У каждого свой пусть и пока он не пройден, нельзя однозначно утверждать верный он или нет.
# demiurg 2014-03-20 16:54
Гы, Задорного наслушался? "Включатель" :)
# Pashgan 2014-03-20 17:24
Нет) Опечатка.
# Виктор 2014-03-21 06:48
В любом случае, товарищ делает полезное дело. Я тоже отношусь к любителям Атмел. Будет возможность реально сравнит с другими фирмами. Конкуренция, для нас конечных потребителей, это только плюс. Будем внимательно следить за дальнейшим развитием.
# Виктор 2014-03-23 13:09
К стати, почитываю книженцию Редькин МК архитектуры AVR32.
Цитирую : по оценкам экспертов ядро AVR32 выигрывает по производительно сти и энергопотреблен ию у ARM7,9,11 примерно на треть. Код компактнее и т.д. и т.п.
# Pashgan 2014-03-23 16:09
Может быть. Я почти ничего не знаю про эти микроконтроллер ы. AVR DRAGON позволяет их программировать , но насчет отладки не знаю.
# vovanxp 2014-03-24 09:59
Quoting Виктор:
К стати, почитываю книженцию Редькин МК архитектуры AVR32.
Цитирую : по оценкам экспертов ядро AVR32 выигрывает по производительности и энергопотреблению у ARM7,9,11 примерно на треть. Код компактнее и т.д. и т.п.

Из минусов жлобская политика ATMEL
# JoJo 2014-03-24 11:09
В чем это проявляется?
# Kodex 2014-04-26 14:28
Pashgan, что про xmega скажешь?
# Pashgan 2014-04-26 17:32
Мало что могу сказать про них. Ни одной работы на них не делал. Производительны е 8-и разрядные микроконтроллер ы. Частота 32 МГц, богатый набор периферии, наличие DMA и Event System. SPI, I2C и UART есть в каждом порту. Цены сравнимые с atmega. Есть микроконтроллер ы с USB. По сложности освоения сравнимы с atmega.
# fsdfgs 2014-11-19 19:03
ну и....?
Видать Вас самого данные девайсы не впечатлили)
Мне на халяву досталась SAM3U - EK с AT91SAM3U4E на борту, но с атмеловским сопровождением я уже почти отчаялся заставить ее хотя бы ледом поморгать))
# fsdfgs 2014-11-19 19:06
при том что на STM32 первый проект поднял сразу...
Эх... Жирные и вкусные но не популярные камни...
# Илья 2015-10-25 01:31
я начинающий в Си. с мк работал на асме, даже железку сделал - контроллер нештатных ситуаций в системах отопления, за асму больше не сяду)) пробовал начать заниматься с stm, но бросил, так как не обнаружил у них родной IDE, кто чего говорит - кто кокос хвалит, кто кеил, кто иар, но последние две платные, а кокос не родной как я понял. решил остановится на атмеле, так как есть студия7, есть jlink, есть плата. и всё это прекрасно работает вместе
# Павел 2017-08-19 10:28
Здравствуйте Павел!!!
У меня такого рода вопрос....
Вы не писали проект для SAM3S в ARM GCC?
Меня этот вопрос интересует потому, что я пишу проекты в Programmer's Notepad с использованием различных GCC тулчейнов ( одна IDE на все :) ). Хотелось бы попробовать Атмеловские АРМ-ы. Не слишком сложные. Поскольку считаю что Cortex-M3 вполне удовлетворит моим потребностям как в плане моей работы так и для личного использования. Сейчас я остановился на Xmega-х. Это довольно не плохие контроллеры но они 8-битные при всем к ним уважении :) А в интернете полно примеров для STM32. А вот для SAM3S да еще и для GCC, я ни чего не нашел.
# Александр 2018-05-22 09:47
Здравствуйте.
Скажите, пожалуйста, вы ещё занимаетесь выпуском/продаж ей данных плат.

У вас недостаточно прав для комментирования.