Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРСОВОЙ ПРОЕКТ ПО МИКРОПРОЦЕССОРНЫМ УСТРОЙСТВА....doc
Скачиваний:
26
Добавлен:
24.12.2018
Размер:
596.99 Кб
Скачать

4.4Коммуникационные последовательные интерфейсы

Для обмена данными с внешними устройствами в микроконтроллере предусмотрено 6 различных интерфейсов (рис.4)

Синхронный последовательный интерфейс (SSC)

Скорость до 12,7Мбит/сек

Поддержка FS

2 интерфейса USART

Режимы Синхр./Асинхр.

Скорость до 30Мбит/сек(Синхр.)

Работа в низкоскоростных режимах для IrDA и ISO7816

Линии квитирования

Двойная стрелка вверх/вниз 22Двойная стрелка вверх/вниз 23Двойная стрелка вверх/вниз 24Двойная стрелка вверх/вниз 25Двойная стрелка вверх/вниз 26Двойная стрелка вверх/вниз 27

Откладочный интерфейс DBGU UART

Дополнительный UART

(асинхронный режим, без линий квитирования)

Высокоскоростной интерфейс SPI

Режимы Master/Slave

Работа с 4-мя slave’ами

Скорость до 300 Мбит/сек

I2C совместимый интерфейс TWI

Скорость до 400Кб/сек

Режим Master

Интерфейс USB 2.0

Full Speed

Скорость до 12Мб/сек

Atmel

AT91SAM7S

Рис.4 Функциональные блоки микроконтроллеров AT91SAM7S

  1. 32-разрядные микроконтроллеры AT91SAM7S

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

Аппаратное обеспечение: стартовый набор AT91SAM7S-EK

В качестве базового стартового набора корпорацией Atmel предлагается набор AT91SAM7S-EK, построенный на базе микроконтроллера AT91SAM7S256. Тем не менее, данный набор был спроектирован в качестве универсального: он поддерживает все микросхемы данной линейки, в том числе AT91SAM7S32, выпускаемый в корпусе TQFP48.

В состав набора входит базовая плата (рис.1), кабель USB A-B, а также диск с документацией и программным обеспечением. Вопреки сложившемуся стереотипу, что средства разработки для 32-разрядных микроконтроллеров недоступны по цене, розничная цена этого набора на российском рынке составляет 160 - 200$.

Рис. 1. Базовая плата набора AT91SAM7S-EK

AT91SAM7S-EK предназначен для оценки возможностей ядра микроконтроллера SmartARM и его основных периферийных узлов. Для этого на базовой плате реализованы следующие цепи (пронумерованы на рис.1):

1)Распаянный микроконтроллер AT91SAM7S256. При необходимости, его можно демонтировать и установить любой другой микроконтроллер серии AT91SAM7S. Для кристалла AT91SAM7S32, который опрессован в корпус TQFP48, предусмотрена посадочная площадка, которая в данный момент скрыта под уже распаянной на плате микросхемой. Для повышения помехоустойчивости каждая линия питания микроконтроллера (VDDIO, VDDANA, VDDIN, VDDCORE, VDDFLASH, VDDPLL) снабжена блокировочными конденсаторами. Резистор R15 и конденсаторы С23, С24 образуют фильтр второго порядка для блока ФАПЧ.

2)Для формирования стабильной тактовой частоты генератор микроконтроллера снабжен внешним кварцем на частоту 18,432 МГц. Это значение выбрано для обеспечения работы программ, демонстрирующих работу интерфейсов USART и DBGU микроконтроллера. Во всех примерах программ (о них будет сказано ниже) код инициализации микроконтроллера низкого уровня написан именно для этого значения частоты кварцевого резонатора. Для удобства пользователя на плате также предусмотрена возможность установки кварца в корпусном исполнении для поверхностного монтажа и монтажа в отверстия.

3)Все цифровые и аналоговые линии ввода/вывода микроконтроллера, которые могут потребоваться для подключения внешней периферии, выведены на отдельный разъем. Каждый вывод разъема пронумерован в соответствии с его функциональным наименованием, а не в соответствии с номером вывода микроконтроллера. Например, вывод разъема с номером "21" соответствует выводу микроконтроллера с наименованием "PA21".

4)Макетная площадка, предназначенная для монтажа внешней периферии, требуемой для обеспечения разработки конечного устройства. Площадка имеет 22х8 изолированных друг от друга контактных площадок. Для питания монтируемых на эту площадку элементов предусмотрена линейка контактных площадок питания 3.3В (сверху) и общего провода (снизу).

5)Для вариаций с питанием микроконтроллера на плате предусмотрена возможность установки джамперов вместо короткозамкнутых перемычек JP13 (VDDFlash), JP14 (VDDIO), JP20 (ADVREF), JP21 (VDDPLL), JP22 (VDDIN), JP23 (VDDCORE). Такая функциональность может быть полезна, например, при подключении внешнего стабилизированного источника питания либо при включении в цепь амперметра для измерения энергопотребления отдельных блоков микроконтроллера.

6)При установке джампера JP28 на выводе ERASE микроконтроллера выставляется сигнал логической "1", что инициирует полную очистку Flash-памяти и битов защиты (Lock и Security) Flash-памяти микроконтроллера. В целевом устройстве этот вывод может быть использован для защиты интеллектуальной собственности разработчика, а на данной плате - для сброса битов защиты с целью дальнейшего перепрограммирования Flash-памяти.

7)В микросхемах AT91SAM7S предусмотрена возможность внутрисхемного программирования Flash-памяти по интерфейсам USB или DBGU без использования внешних программаторов. Функционально это реализовано следующим образом: в ROM-памяти всех микроконтроллеров AT91SAM7S содержится микрокод загрузчика SAM-BA, который должен быть загружен во Flash-память. После того, как загрузчик в микроконтроллере активирован, на верхнем уровне (ПК) запускается одноименная программа, которая устанавливает связь с загрузчиком и программирует Flash-память. На плате стартового набора активация загрузчика инициируется установкой джампера JP5, который выставляет на выводе TST микросхемы сигнал логической "1". Сигнал должен быть удержан при включенном питании не менее 10 секунд, после чего при повторном включении питания происходит запуск загрузчика из Flash-памяти. О программе верхнего уровня будет написано ниже. 8)Питание платы может осуществляться от внешнего источника питания напряжением от 7 до 14 Вольт либо по интерфейсу USB. Независимо от того, что используется в качестве источника, стабилизированное напряжение 3.3В формируется на выходе стабилизатора напряжения, реализованного на плате (область 8). Стабилизатор имеет на входе выпрямительный мост, что позволяет не заботиться о полярности при подключении внешнего блока питания.

9)Для подключения внутрисхемного эмулятора на плате предусмотрен стандартный для ARM-контроллеров 20-контактный JTAG разъем. Перемычка JP19 определяет, в каком из режимов будет использоваться JTAG-интерфейс [4]:

-в режиме граничного сканирования (Boundary Scan) - перемычка замкнута, высокий уровень на входе JTAGSEL;

-аппаратной внутрисхемной отладки (ICE) - перемычка разомкнута, используется внутренний pull-down резистор входа JTAGSEL.

10)Два разъема DB9 предназначены для подключения микроконтроллера к компьютеру по интерфейсам USART и DBGU. Для согласования логических уровней RS-232 <-> КМОП на плате предусмотрены соответствующие микросхемы. Если на этапе отладки потребуется подключить сигналы USART или DBGU к устройствам с логическими уровнями, отличными от RS-232, то можно отсоединить преобразователь уровней от микроконтроллера при помощи короткозамкнутых перемычек JP6-JP9 и JP11, JP12. При этом можно воспользоваться образовавшимися свободными выводами для соединения с целевым устройством.

11)Интерфейс USB со всеми требуемыми элементами обвязки и цепями защиты насчитывает порядка 20 элементов. Сюда входят фильтрующие, стабилизирующие и защитные цепи, а также 2 ключа, выполненные на MOSFET-транзисторах TR1 и TR2. Ключи позволяют программно подключать и отключать подтягивающий резистор 1.5кОм на линии D+ интерфейса USB, эмулируя тем самым отключение USB-устройства от хост-контроллера [5]. Если эмуляция не нужна, то необходимо разорвать короткозамкнутые перемычки JP1 и JP2, чтобы освободить управляющие линии PA13 и PA16 микроконтроллера. В качестве интерфейса пользователя предусмотрено 4 кнопки, подключенные к линиям PA14, PA15, PA19 и PA20. Каждая кнопка осуществляет замыкание соответствующей линии на общий провод.

12)Для ввода аналогового сигнала входы J7-J10 через буферный повторитель подключены к аналоговым входам AD4, AD5 и к мультиплексированным аналого-цифровым линиям PA17, PA19 микроконтроллера. На выходах буферного повторителя предусмотрены короткозамкнутые перемычки JP24-27, позволяющие отключить цепи аналогового ввода либо включить какие-либо дополнительные цепи в разрыв связи с микроконтроллером.

13)В качестве устройств индикации на плате предусмотрено 4 светодиода DS1-DS4, подключенные к линиям PA0-PA3, которые в микроконтроллерах AT91SAM7S имеют удвоенную нагрузочную способность. Светодиоды, аналогично многим описанным выше цепям, могут быть отключены разрывом короткозамкнутых перемычек JP24-JP27.

14)В качестве устройства внешней памяти, предназначенного для хранения данных, на плате размещена микросхема последовательной EEPROM класса CryptoMemory объемом 256кбит, подключенная к микроконтроллеру по интерфейсу TWI / I2C. Следует помнить, что энергонезависимое хранение данных можно реализовать и во Flash-памяти микроконтроллера, которая в AT91SAM7S поддерживает функцию самопрограммирования.

Аппаратное обеспечение: внутрисхемный эмулятор AT91SAM-ICE

Недорогой внутрисхемный эмулятор AT91SAM-ICE (рис.2) был выпущен корпорацией Atmel совсем недавно. Он построен на базе популярного во всем мире эмулятора J-Link фирмы Segger. Ввиду этой "родственной" связи, для AT91SAM-ICE подходят все программные средства, выпускаемые для J-Link. Единственное отличие этих аппаратных устройств состоит в том, что эмулятор AT91SAM-ICE поддерживает только ARM-микроконтроллеры производства Atmel.

Рис. 2. Внутрисхемный эмулятор AT91SAM-ICE

Данный эмулятор может быть использован для двух задач:

  1. Внутрисхемная отладка на этапе разработки.

Эмулятор может работать с любой целевой платой на базе микроконтроллера AT91SAM7S. Тем не менее, для разработчиков, не знакомых с данной платформой, рекомендуется использовать эмулятор в паре со стартовым набором AT91SAM7S-EK. RDI-Драйвер [6], поддерживающий AT91SAM-ICE, расширяет базовые возможности RDI-совместимых отладчиков:

  • поддержка неограниченного числа программных точек останова;

  • поддержка точек останова при отладке программы из Flash-памяти;

  • поддержка AT91SAM-ICE в отладчиках, изначально его не поддерживающих.

  • Внутрисхемное программирование Flash-памяти микроконтроллера при серийном производстве.

    Ориентированная на эту задачу программа J-Flash [6] поддерживает одновременное программирование нескольких устройств, соединенных по JTAG в "дейзи"-цепочку. Поддерживаются бинарный и Intel-HEX форматы файлов.

    Описанные выше аппаратные устройства составляют необходимый "минимум" для комфортной работы с испытуемым кристаллом.

    ПРИМЕР ПРОСТЕНЬКОЙ ПРОГРАММЫ ДЛЯ AT91SAM7S256

    Платка AT91SAM7S256 представлена на сайте www.olimex.com/dev/sam7-h256.html

    #include <intrinsics.h>

    #include "AT91SAM7S256.h"

    #include "system.h"

    #include "adc.h"

    #define LONG 5000000

    #define SHORT 1000000

    //#define LONG 900000

    //#define SHORT 100000

    //MAIN POINTER

    AT91PS_PIO m_pPio = AT91C_BASE_PIOA;

    AT91PS_PMC m_pPMC = AT91C_BASE_PMC;

    AT91PS_USART m_pUSART = AT91C_BASE_US0;

    AT91PS_PDC m_pPDC = AT91C_BASE_PDC_US0;

    AT91PS_MC m_pMC = AT91C_BASE_MC;

    AT91PS_AIC m_pAic = AT91C_BASE_AIC;

    AT91PS_SYS m_pSys = AT91C_BASE_SYS;

    AT91PS_ADC m_pADC = AT91C_BASE_ADC;

    AT91PS_RSTC m_pRSTC = AT91C_BASE_RSTC;

    //it's a simple delay

    void Delay (unsigned long a) { while (--a!=0); }

    unsigned int i = 0;

    int main()

    {

    __disable_interrupt();

    // System init

    //InitFrec();

    // Init perifery

    InitPeriphery();

    //Enable RESET

    m_pRSTC->RSTC_RCR = 0xA5000008;

    m_pRSTC->RSTC_RMR = 0xA5000001;

    //enable the clock of the PIO

    m_pPMC->PMC_PCER = 1 << AT91C_ID_PIOA;

    Delay(100000);

    // Configure led

    m_pPio->PIO_SODR = BIT8; // Set PA8 to HIGH -> led off

    m_pPio->PIO_OER = BIT8; // Configure PA8 as output

    while(1)

    {

    m_pPio->PIO_CODR = BIT8; // Set PA8 to LOW -> led on

    Delay(800000);

    m_pPio->PIO_SODR = BIT8; // Set PA8 to HIGH -> led off

    Delay(800000);

    }

    }