Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2005 №4

Первый среди равных. Микроконтроллер eCOG1 Cyan Technology. Часть 2

Ракович Николай


Все статьи цикла:

Сам по себе микроконтроллер eCOG1 — «вещь в себе», и не более того. Только работа с периферией позволяет выявить все его характеристики, и чем больше возможностей для подключения внешних устройств, тем более востребован микроконтроллер.

Последовательный интерфейс I 2C – двунаправленный многоабонентский двухпроводной интерфейс для подключения к микроконтроллеру внешних устройств (память, интерфейсные ИС), выполняющий последовательную передачу данных со скоростью 100 кбит/с (стандартный), 400 кбит/с (скоростной) и 3,4 Мбит/с (высокоскоростной режим передачи данных).

Протокол I 2C микроконтроллера eCOG1 поддерживает:

  • команды старта, останова, перезапуска;
  • совпадение адресов и арбитраж;
  • режимы – со многими ведущими и ведущий/ведомый;
  • автоматическую генерацию подтверждения;
  • 10-разрядную и широковещательную адресацию.

Управление шиной I 2C выполняется через DUSART (обрабатываются все сигналы низкого уровня и упорядочивается поток данных). На рис. 6 показана реализация интерфейса I 2C в составе DUSART: I 2C конфигурируется для каждого USART канала, обмен управляющими сигналами и данными осуществляется через банк регистров.

Реализация интерфейса I2C в составе DUSART
Рис. 6. Реализация интерфейса I2C в составе DUSART

Специально для I 2C прерывания не предусмотрены, они формируются программно на основе прерываний DUSART.

В eCOG1 контроллер I 2C работает в двух режимах: ведущий или ведомый. Ведущий обращается к ведомому, задает синхронизацию и инициирует передачу. Наличие двух пар портов, доступных через DUSART, позволяет одновременно передавать данные в режимах ведущего и ведомого.

Последовательный периферийный интерфейс (SPI) также поддерживается модулем DUSART, что позволяет микроконтроллеру eCOG1 работать ведущим или ведомым с возможностью поддержки нескольких ведомых в режиме ведущего (рис. 7). Передача данных определяется ведущим, который обеспечивает и синхронизацию (SCK). Ведомый должен использовать SCK при передаче данных. Полярность импульсов синхронизации от ведущего задается с помощью CPOL, а фаза – через CPHA (соответствующие clk_pol и clk_pha в регистре duasrt.spi_tx_cfg). Чтобы различать направление передачи данных от каждого контроллера (ведущего и ведомого), в состав eCOG1 введена дополнительная логика. Эта же логика обеспечивает управление «на лету» при связи портов с функциями кадрирования данных.

Последовательный периферийный интерфейс (SPI) в составе модуля DUSART
Рис. 7. Последовательный периферийный интерфейс (SPI) в составе модуля DUSART

Модуль интерфейса смарт-карт (Smart Card Interface – SCI) содержит полную логику, необходимую для оконечной части (терминала) этого интерфейса. Последовательности действий при запуске и дезактивации реализованы с различной степенью автоматизации. Поддерживается протокол типа Т=0 (части 1-10 стандарта Smart Card ISO 7816). Следует отметить, что хотя все основные последовательности действий по установке карт, их активации и дезактивации реализованы аппаратно, встроенной поддержки переключения уровня напряжения, определения подделки или защиты от короткого замыкания в нагрузке нет (обычно вероятность наиболее высока при вставке и извлечении смарт-карты). Поэтому необходимо, чтобы между микроконтроллером и терминалом смарт-карты была включена внешняя схема интерфейса. Тактирование смарт-карты выполняется через модуль таймера (TIM). Помимо управления внешним источником тактовых сигналов, модуль SCI может использоваться для управления ШИМ-выходом PWM1. Частота тактового генератора SCI программируется с помощью регистра TIМ.

Структура модуля смарт-карт приведена на рис. 8. SCI использует любой из портов USART (какой свободен в данный момент).


Рис. 8. Структура модуля смарт-карт

Модуль инфракрасного интерфейса (IRF) предназначен для передачи и приема данных по ИК-каналу. Входные сигналы должны быть демодулированы до поступления в микроконтроллер для декодирования. Данные на выходе могут быть как в модулированном виде (для этого используется выход PWM2), так и немодулированные. Модуль разрабатывался для расширения возможностей при использовании различных пользовательских протоколов (RC-5, ASK, PPM и стандарта IRDA), а также для перспективных ИК-протоколов на основе программируемых регистров. Важно отметить, что этот модуль обеспечивает программирование команд и параметров для работы инфракрасного канала с помощью соответствующих регистров и программного обеспечения пользователя (которое, естественно, должно соответствовать данному протоколу).

Последовательный порт пользователя (User Serial Port — USP) является расширением DUSART, обеспечивающим прямой доступ к USART А или к USART В, и может использоваться как дополнительный асинхронный порт. Таким образом, в микроконтроллере eCOG1 можно сконфигурировать и применять четыре отдельных асинхронных порта: два порта из специальной секции UART, асинхронный порт и последовательный порт пользователя из секции DUSART.

Основное назначение порта пользователя – обеспечение гибкого последовательного порта ввода-вывода с параллельным доступом шириной в слово, автоматической вставкой, проверкой по четности и минимизацией требуемого для программ места. Последовательные протоколы, заданные пользователем, могут быть адаптированы простой реконфигурацией банка регистров USP. Кроме стандартных возможностей USART, реализована возможность «полуавтоматической» настройки порта, которая может быть при необходимости отключена.

Интерфейс внешней памяти (External Memory Interface — EMI) позволяет подключать внешнюю память с помощью менеджера памяти как со стороны команд, так и со стороны данных центрального процессора. EMI поддерживает два формата: формат интерфейса шины (Bus Interface Format) – независимый 25-разрядный адрес и 8-разрядные данные или мультиплексированные 24-разрядный адрес и 16-разрядные данные. Этот интерфейс работает с Flash-памятью, SRAM, ПЗУ или периферией на основе памяти. Формат интерфейса SDRAM реализует прямое подключение к SDRAM для передачи данных без каких-либо дополнительных внешних элементов.

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

Интерфейс внешнего хоста (External Host Interface – EHI) позволяет микроконтроллеру eCOG1 и внешнему процессору использовать внутреннее ОЗУ eCOG1 для прямого доступа как со стороны процессора микроконтроллера, так и со стороны внешнего устройства ( рис. 9). Запись и чтение данных в ОЗУ процессор микроконтроллера выполняет через блок управления памятью MMU, в то время как внешнее устройство – с помощью EHI. Прямой доступ к памяти микроконтроллера внешний процессор получает в одном из двух режимов: первый — eCOG1 представляется как периферийное устройство с распределением памяти (ММР), в котором оперативная память отображается в карте памяти внешнего устройства; второй – режим прямого доступа к памяти DMА, когда внешнее устройство обращается к памяти микроконтроллера eCOG1 с использованием функций DMА. Режим ММР предназначен для передачи небольших произвольных объемов данных, а DMА – для больших блоков данных. Интерфейс EHI дает в руки разработчику средство чередования доступа к большим и малым массивам данных.

Блок-схема интерфейса внешнего хоста (EHI)
Рис. 9. Блок-схема интерфейса внешнего хоста (EHI)

Встроенная Flash-память на 64 кбайта с организацией 32 Кслов х 16 бит ( рис. 10) предназначена для хранения программ и данных (энергонезависимость этой памяти очень кстати). Работа и программирование Flash-памяти от напряжения 3,3 В (напряжение питания eCOG1) позволяет забыть о внешнем источнике высокого напряжения.

Струтктура встроенной FLASH-памяти
Рис. 10. Струтктура встроенной FLASH-памяти

Блок управления памятью MMU содержит два преобразователя адреса для Flash-памяти: один - для доступа к программам, второй – для доступа к данным, которые конфигурируются в MMU. Доступ к программам конфигурируется с использованием регистров mmu.flash_code_log, mmu.flash_code_phy и mmu.flash_code_size, а доступ к данным – через регистры mmu.flash_data_log, mmu.flash_data_phy и mmu.flash_data_size. Как дополнение к основной памяти программ и данных в отдельной области памяти (блок информации) имеются 64 16-разрядных слова. Эти ячейки памяти недоступны при прямом чтении или записи памяти, но к ним можно получить доступ посредством косвенной адресации через регистры flash.prg_adr, flash.prg_data, flash.inf_rd_adr и flash.inf_rd_data.

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

И заканчивая описание Flash-памяти, скажем несколько слов о параметрах этой памяти:

  • полное программирование основного блока Flash-памяти – 660 мс;
  • полное программирование блока информации – 1,32 мс;
  • программирование одного слова – 42 мкс;
  • удаление данных из всего массива памяти – 210 мс;
  • удаление данных одной страницы – 10 мс;
  • гарантированное число циклов записи-стирания – 20000.

Аналого-цифровой преобразователь (АЦП) представляет собой 12-разрядный сигма-дельта преобразователь с частотой выборки 8 кГц (блок-схема АЦП и входных мультиплексторов представлена на рис. 11). АЦП может работать с четырьмя различными внешними аналоговыми сигналами, а также с сигналами от встроенных датчиков напряжения питания и температуры. Возможна работа в дифференциальном режиме с двумя внешними аналоговыми сигналами. Дифференциальный режим можно также использовать для подавления синфазных помех.

Блок-схема АЦП и входных мультиплексоров
Рис. 11. Блок-схема АЦП и входных мультиплексоров

Измерение напряжения на выводах ANA0x3 с применением АЦП выполняется в одном из четырех режимов.

  • Режим А – измерение сигнала на одном из четырех входов относительно встроенного источника опорного напряжения.
  • Режим В аналогичен режиму А за исключением того, что внутреннее опорное напряжение подается на вывод ANA3, которой не может использоваться для измерения внешнего сигнала.
  • Режим С предназначен для дифференциального измерения, при котором один из выводов ANA0x2 выбирается как положительный вход, а ANA3 – как отрицательный. Таким образом, измеренное напряжение есть разность между выбранным выводом ANA0x2 и выводом ANA3.
  • В режиме D выводы ANA0x3 конфигурируются как две дифференциальные пары ANA0 и ANA1, ANA2 и ANA3. АЦП может выбрать (с помощью разработчика, конечно), какая из этих пар будет использоваться для измерения.

Встроенный температурный датчик позволяет измерять температуру кристалла (совместно с АЦП). Режим измерения задается установкой битов adc.cfg.temp_sel и adc.cfg.temp_en, причем установкой бита adc.cfg.temp_sel запрещается работа АЦП с другими сигналами. Если датчик не используется, то с целью снижения потребления его можно отключить, очистив бит adc.cfg.temp_en. Результат измерения температуры появляется через два периода АЦП (250 мкс).

Для получения точных результатов измерения необходимо провести калибровку датчика: измерить известную температуру (например, комнатную) и вычислить калибровочный коэффициент по формуле

CAL = Тcal - ((ADC — 2048) * 0,061 / 2),

где ADC – содержимое adc.sts.data, а Тcal – абсолютная температура (К), при которой выполнялась калибровка.

Измеренная температура определяется выражением (тоже по шкале Кельвина):

Temp = CAL + ((ADC — 2048) * 0,061 / 2).

С помощью встроенного датчика напряжения питания, который, как и температурный датчик, может использоваться совместно с АЦП, измеряется напряжение между выводами Vdd и Vss микроконтроллера. Это позволяет контролировать состояние батареи питания или другого источника электроэнергии, используемого для работы микроконтроллера eCOG1.

Запуск датчика задается установкой бита adc.cfg.vsens_en, а выбор для передачи в АЦП – битом adc.cfg.vsens_sel. Бит adc.cfg.temp_sel должен быть сброшен, поскольку иначе АЦП будет считывать данные температурного датчика.

Если датчик не используется, то его можно отключить, очистив бит adc.cfg.vsens_en и заодно понизив потребление. Результат измерения напряжения, как и для температуры, появляется через два периода АЦП (250 мкс).

К такому «железу» идет и соответствующее программное обеспечение и отладочный комплект (Development Kit).

В качестве программного обеспечения пользователь бесплатно получает программу моделирования ecogsim и эмулятор ecogemu. Эти программы имеют общий пользовательский интерфейс и команды, различие заключается в том, как они выполняются. Программа моделирования имеет eCOG1 интерпретатор для выполнения команд, а эмулятор работает через интерфейс eICE , подключенный к плате с микроконтроллером.

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

Для эмулятора подключение пользовательских модулей обеспечивает внутрисхемное программирование внешней Flash-памяти. Инсталляция этих модулей позволяет загружать и отлаживать пользовательские программы обычным способом. Эмулятор программирует внутреннюю Flash-память микроконтроллера eCOG1 через интерфейс ICE.

Основные «плюсы» программ ecogsim и ecogemu:

  • дистанционное управление программами через TCP/IP;
  • мощный синтаксический анализатор, позволяющий вводить сложные выражения;
  • оператор разыменования, позволяющий создавать ссылки на ячейки памяти в выражениях;
  • поддержка временных точек в ecogsim;
  • справка в формате HTML;
  • динамически загружаемые пользовательские модули;
  • команды оболочки;
  • многопоточные приложения;
  • 32-разрядные приложения для Windows 95/98 and NT4/2000.

C-компилятор, состоящий из ECOGCL и ECOGNCC, поддерживает полную версию языка С в соответствии с ANSI/ISO, включая операции с плавающей запятой. Компилятор полностью интегрирован для большинства средств поддержки eCOG, что позволяет совместить программирование на С и ассемблере, а также отладку на уровне исходного кода с использованием программы моделирования и эмулятора. Компилятор формирует удобочитаемый код ассемблера, который сохраняет имена и структуру исходного кода на С. Это позволяет «захватить» имеющиеся программы на С для последующей модификации на ассемблере в случае необходимости, кроме того, позволяет пользователю проверить и отладить программу на ассемблере (на уровне исходника).

Операционная система реального времени PicOS, разработанная для установки и работы с отладочной платой eCOG1 и входящая в комплект поставки, позволяет создать многозадачную систему на основе микроконтроллера.

В заключение два слова об отладочной плате из комплекта Development Kit ( рис. 12). В ее состав входит микроконтроллер eCOG1, интерфейс Fast Ethernet, память SDRAM 2М?16 бит, ЖК-дисплей (2 строки по 16 символов), два последовательных порта пользователя, параллельный отладочный интерфейс, последовательный интерфейс, динамик, 4 светодиода, интерфейс внешней памяти и хоста, стек TCP/IP, зона для макетирования и порты ввода-вывода.

Внешний вид отладочной платы из комплекта Development Kit
Рис. 12. Внешний вид отладочной платы из комплекта Development Kit

Таким образом, микроконтроллер eCOG1 представляет собой многофункциональную ИС, позволяющую создавать на ее основе устройства различного назначения – от средств связи до охранных систем, от Интернет-устройств до сложной бытовой техники (рис. 13). Наличие отладочного комплекта и бесплатного ПО разработки и отладки позволяет сократить сроки и стоимость разработки.

Примеры применения eCOG1
Рис. 13. Примеры применения eCOG1

Дополнительную информацию можно найти на сайте www.cyantechnology.com.

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке