Новые 16-разрядные семейства
микроконтроллеров Microchip
Александр БОРИСОВ
16-разрядные микроконтроллеры Microchip PIC24
• Выполнение команды за 2 такта генератора.
• Гарантированное время отклика на прерывание — 5 командных тактов.
• Доступ к памяти (в том числе инструкции чтения-модификации-записи) за 1 командный такт.
• Аппаратный умножитель.
• Аппаратная поддержка деления 32/16 и 16/16 чисел (18 командных тактов).
• Диапазон питающих напряжений 2,0-3,6 В.
• Внутрисхемное и самопрограммирование.
• Встроенный генератор с PLL.
• Расширенная периферия.
• Ток портов ввода-вывода общего назначения — 18 мА.
• Порты толерантны к устройствам с 5-воль-товым питанием.
Первым семейством с 16-разрядной архитектурой, выпущенным Microchip на рынок, стала линейка dsPIC30F. Это семейство удачно сочетает 16-разрядное ядро, большой набор внутренней периферии и функции цифровой обработки сигналов, такие как специфические методы адресации, MAC-инструкции и т. п.
Тем не менее, опыт продаж dsPIC30F показал, что большое количество пользователей применяют его как обычный многофункциональный 16-разрядный микроконтроллер, не используя при этом возможности встроенного DSP-ядра. В связи с этим компания Microchip приняла решение о начале производства новых 16-разрядных семейств PIC24F и PIC24H.
Следует заметить, что 16-разрядное ядро семейств dsPIC30F и PIC24 не имеет ничего общего с популярными 8-разрядными семей-
Растущие требования к производительности и функциональности электронных устройств приводят к появлению все более совершенных моделей микроконтроллеров. Ведущие производители электронных компонентов сконцентрировались на разработке новых 16-разрядных и 32-разрядных моделей микроконтроллеров, стоимость которых уже сопоставима с ценой лучших представителей популярных 8-разрядных архитектур. Разумеется, компания Microchip не осталась в стороне и выпустила на рынок два новых семейства 16-разрядных микроконтроллеров PIC24F и PIC24H и новое семейство цифровых сигнальных контроллеров (DSC) dsPIC33.
ствами PIC16/PIC18. Ядро PIC24 основано на модифицированной гарвардской архитектуре с расширенным набором инструкций, имеет 16 ортогональных регистров общего назначения, векторную приоритетную систему прерываний и другие особенности (методы адресации, аппаратные циклы), которых нет в 8-разрядных контроллерах Microchip.
В производство запущено две модификации— PIC24F и PIC24H, которые отличаются технологией изготовления программной Flash-памяти. Это определяет диапазон питающих напряжений: для PIC24F — 2,0-3,6 В, для PIC24H — 3,0-3,6 В. Оба варианта не имеют встроенной памяти EEPROM, но наличие возможности самопрограммирования позволяет хранить константы в памяти программ.
Первое семейство (PIC24F) производится по технологическим нормам 0,25 мкм и работает с максимальной производительностью ядра 16 MIPS (32 МГц). Второе семейство (PIC24H) производится с использованием более сложного техпроцесса, что позволяет добиться большей скорости работы — 40 MIPS (80 МГц). Оба семейства поддерживают внутрисхемное программирование (ICSP) а также самопрограммирование (RTSP). За счет изменения структуры Flash-памяти скорость программирования значительно увеличена (менее 1 секунды для контроллеров с 64 кбайт программной памяти).
Следует заметить, что номинальное количество циклов перепрограммирования Flash-памяти для семейств PIC24F и PIC24H составляет 1000 циклов, что связано с удешевлением технологии изготовления кристаллов. С одной стороны, это несколько ограничивает круг приложений, которые можно реа-
лизовать на одном кристалле (без использования внешней микросхемы EEPROM). С другой — в семействе PIC24 реализован побайтный механизм чтения-записи Flash-памяти, поэтому, например, запись констант калибровки прибора не требует использования специальных алгоритмов эмуляции EEPROM.
Высокая производительность достигается за счет переработанной системы тактирования. В отличие от предыдущих 8-и 16-разрядных семейств микроконтроллеров Microchip, одна команда выполняется не за 4, а за 2 такта генератора. Это позволило существенно поднять производительность микроконтроллеров и при этом значительно снизить энергопотребление по сравнению с dsPIC30F.
Новое ядро имеет 16-разрядную шину данных, линейную память программ (поддерживается до 8 Мбайт) и линейную память данных (до 64 кбайт). Важной особенностью является возможность отображения части памяти программ в память данных, что позволяет эффективно работать с таблицами констант, не используя для этого инструкции табличного чтения-записи. При этом доступ к отображенной памяти программ (только чтение) осуществляется за 2 командных такта.
Расширенная система команд позволяет получать эффективный код при использовании компиляторов языков высокого уровня. Поддерживается большое количество методов адресации (прямая, косвенная, преинкрементная и постинкрементная, со смещением и т. п.), трехоперандные инструкции (типа C = A + B), инструкции сдвига на произвольное количество бит, инструкции знакового
и беззнакового умножения и деления. Используется программный стек (в отличие от аппаратного у 8-разрядных семейств) с контролем переполнения. Для передачи параметров в функции существует возможность выделять фрейм в стеке с помощью регистра LINK.
В отличие от dsPIC30F в рассматриваемых семействах отсутствует DSP-ядро и соответствующие инструкции и методы адресации (по модулю и бит-реверсивная адресация).
Система прерываний семейств PIC24 является векторной — каждое прерывание имеет свой вектор в памяти программ. Кроме того, каждому прерыванию может быть присвоен приоритет от 0 до 7. Аппаратные исключения (ошибка АЛУ, сбой генератора, переполнение стека и т. п.) также имеют свои адреса в таблице векторов прерываний. Следует заметить, что семейства PIC24 имеют две таблицы векторов прерываний, из которых активная выбирается программно.
По сравнению с 8-разрядными контроллерами Microchip здесь значительно переработаны и расширены периферийные модули.
Порты ввода-вывода. Каждый порт, кроме привычных регистров TRIS, PORT и LAT, имеет регистр ODC, конфигурирующий вывод как выход с открытым стоком. Это позволит работать с внешними устройствами с напряжением питания 5 В, для которых логическая единица на выводе контроллера попадает в зону неопределенного состояния (например с устройствами с триггером Шмитта на входе). Выводы контроллера, настроенные на вход, толерантны к устройствам с 5-воль-товым питанием.
Таймеры. Контроллеры семейства PIC24F имеют пять 16-разрядных таймеров, из которых четыре (TIMER2 и TIMER3, TIMER4 и TIMER5) могут объединяться в два 32-разрядных. Все таймеры имеют регистры периода и векторы прерывания по совпадению, а также могут работать в синхронном и асинхронном режимах.
TIMER1 имеет генератор для низкочастотного кварцевого резонатора, от которого тактируется модуль часов реального времени.
Также от этого генератора может тактироваться ядро микроконтроллера.
Контроллеры семейства PIC24H имеют до девяти 16-разрядных таймеров, из которых восемь могут объединяться в четыре 32-разрядных.
Модули захвата. Контроллеры семейства PIC24F имеют 5 идентичных независимых модулей захвата, формирующих прерывания и сохраняющих мгновенное значение таймера при возникновении внешнего события (передний или задний фронт импульса на выводе контроллера). Модули захвата имеют настраиваемый 4-уровневый буфер FIFO, который позволяет реже обрабатывать прерывания при высокой частоте событий.
Контроллеры семейства PIC24H имеют до 8 аналогичных модулей захвата.
Модули сравнения (генерации ШИМ). Контроллеры семейства PIC24F имеют до пяти независимых модулей сравнения, устанавливающих определенное логическое состояние на выводе контроллера при совпадении значения выбранного таймера с регистром модуля. Модули сравнения позволяют генерировать на выводе контроллера одиночный импульс, серию и непрерывную последовательность импульсов. Кроме того, этот модуль может быть использован для генерации сигнала ШИМ с учетом задержек на переключение мощных MOSFET-транзисторов (deadtime). Два регистра сравнения у каждого модуля позволяют генерировать центрально-смещенный сигнал ШИМ.
Контроллеры семейства PIC24H имеют до 8 модулей сравнения (генерации ШИМ).
Модуль SPI. Контроллеры семейств PIC24F и PIC24H имеют до двух 16-разрядных модулей SPI с 8-уровневым буфером FIFO и скоростью обмена до 16 Мбит/с (PIC24F), либо до 10 Мбит/с (PIC24H). Модули могут работать в режимах «ведущий», «ведомый», «ведущий с кадровой синхронизацией». Последний режим позволяет подключать к контроллеру современные голосовые кодеки.
Модуль I2C. Контроллеры семейств PIC24F и PIC24H имеют до 2 модулей I2C, поддерживающих режимы «ведомый» и «ведущий»
с возможностью арбитража и 8- и 10-разрядной адресации. Имеется возможность прерывания (в том числе и с выводом контроллера из энергосберегающего режима) по совпадению адреса с задаваемой маской.
Модуль USART. Контроллеры семейств PIC24F и PIC24H имеют до двух модулей UART с возможностью 8- и 9-разрядного обмена. Эти модули имеют линии аппаратного управления потоком (CTS и RTS), 4-уровневый буфер FIFO на приемнике и на передатчике, а также кодер и декодер физического уровня спецификации IrDA. Тактовый генератор модуля имеет 16-разрядный преддели-тель, который обеспечивает установку скорости обмена от 15 бит/с до 1 Мбит/с при тактовой частоте 32 МГц.
Параллельный порт. Модуль параллельного 8-разрядного порта поддерживает 16-разрядную адресацию и может быть использован для коммуникации с внешней памятью, ЖК-индикаторами и другими устройствами с параллельной шиной. Модуль имеет 2 вывода CS (chip-select), возможность конфигурации активных уровней управляющих линий, автоинкремент и автодекремент адреса, выбор активных уровней шин данных и адреса, конфигурацию задержек. Модуль может работать как в режиме ведущего, так и в режиме ведомого. Параллельный порт присутствует только в контроллерах семейства PIC24F.
Модуль часов реального времени с календарем. Модуль тактируется от генератора таймера TIMER1 и имеет возможность аппаратной калибровки. Данные в регистрах хранятся в формате BCD. Существует возможность гибкой настройки системы тревог. Учет високосных годов и перевод времени на зимнее и летнее должен осуществляться программно. Модуль присутствует только в контроллерах семейства PIC24F.
Модуль вычисления CRC. Модуль предназначен для вычисления избыточного циклического кода с произвольным полиномом. Модуль имеет 16-уровневый буфер FIFO данных и прерывание по завершению вычисления. Модуль доступен только в контроллерах семейства PIC24F.
10/12-разрядный АЦП. Контроллеры семейства PIC24F имеют один 10-разрядный АЦП последовательного приближения (до 16 каналов) с частотой преобразования 500 тыс. выборок в секунду. Формирователь напряжения для схемы выборки хранения имеет дифференциальный вход, что позволяет оцифровывать сигнал с дифференциальных датчиков без использования промежуточного формирователя. Частота преобразования может быть увеличена, при этом происходит потеря младших разрядов результата.
АЦП имеет буфер на 16 слов, заполнение буфера происходит по заданной последовательности — возможно автоматическое по-
Таблица 1. Основные характеристики контроллеров семейств PIC24F и PIC24H
М
х 3 ь го ног/с го ног/с рт
/ р а яы яы по
Количество выводов Flash-память программ, кбайт ОЗУ данных, кбайт Таймеры Модули захвата ни е X ав р ли ду о М нд е л а к / ы ас у р в 0 О Z s s Ч С « *£ К р в 0 О -рты ™ © S 5* Ч С « *£ К UART/SPI/ I2C CAN ы н ь л е л л а р а с
PIC24F — 1б MIPS, низкая цена
PIC24FJ64GA006 64 64 + 16 Нет 2/2/2 - + +
PIC24FJ64GA008 80 64 + 16 Нет 2/2/2 - + +
PIC24FJ64GA010 100 64 + 16 Нет 2/2/2 - + +
PIC24FJ96GA006 64 96 + 16 Нет 2/2/2 - + +
PIC24FJ96GA008 80 96 + 16 Нет 2/2/2 - + +
PIC24FJ96GA010 100 96 + 16 Нет 2/2/2 - + +
PIC24FJ128GA006 64 128 + 16 Нет 2/2/2 - + +
PIC24FJ128GA008 80 128 + 16 Нет 2/2/2 - + +
PIC24FJ128GA010 100 128 + 16 Нет 2/2/2 - + +
PIC24H — 40 MIPS, высокая производительность
PIC24HJ64GP206 64 64 8 - * 18 2/2/1 - - +
PIC24HJ64GP210 100 64 8 - * 32 2/2/2 - - +
PIC24HJ64GP506 64 64 8 - * 18 2/2/2 1 - +
PIC24HJ64GP510 100 64 8 - * 32 2/2/2 1 - +
PIC24HJ128GP206 64 128 8 - * 18 2/2/2 - - +
PIC24HJ128GP210 100 128 8 - * 32 2/2/2 - - +
PIC24HJ128GP306 64 128 16 - * 18 2/2/2 - - +
PIC24HJ128GP310 100 128 16 - * 32 2/2/2 - - +
PIC24HJ128GP506 64 128 8 - * 18 2/2/2 1 - +
PIC24HJ128GP510 100 128 8 - * 32 2/2/2 1 - +
PIC24HJ256GP206 64 256 16 - * 18 2/2/2 - - +
PIC24HJ256GP210 100 256 16 - * 32 2/2/2 - - +
PIC24HJ256GP610 100 256 16 - * 2*32 2/2/2 2 - +
* Разрядность АЦП определяется пользователем
очередное сканирование выбранных каналов. Прерывание возникает при заполнении буфера на заданное количество уровней. Результаты преобразования могут быть представлены как дробные или целые числа, знаковые или беззнаковые.
Контроллеры семейства РІС24Н имеют до двух АЦП с расширенной функциональностью (4 устройства выборки-хранения с дифференциальными формирователями, что позволяет проводить одновременное измерение по четырем дифференциальным каналам). Разрядность АЦП определяется пользователем — возможно использование АЦП как 12-разрядного при частоте преобразования 500 тыс. выборок в секунду, либо как 10-разрядного при частоте преобразования 1,1 млн выборок в секунду. Каждый модуль АЦП может иметь до 32 каналов. Возможна синхронная работа преобразователей, при этом эквивалентная частота преобразования удваивается.
Компараторы. Контроллеры семейства РІС24Б имеют два компаратора с генератором опорного напряжения. Характеристики и функциональность компараторов анало-
гичны модулям в 8-разрядном семействе PIC18. Микроконтроллеры семейства PIC24H компараторов не имеют.
Модуль DMA. Модуль DMA (прямой доступ к памяти) присутствует только в контроллерах семейства PIC24H. Он позволяет эффективно передавать данные между периферией (SPI, UART, АЦП, CAN и т. д.) и ОЗУ без использования программных ресурсов. Для этого в семействе PIC24H 2 кбайта ОЗУ реализовано в виде двухпортовой памяти. Модуль DMA имеет восемь идентичных каналов, каждый из которых может быть гибко настроен для приема и передачи блока данных, слова (16 бит), байта. При этом используется косвенная адресация с постинкрементом, либо адресация ping-P°ng.
Модуль CAN. Модуль CAN присутствует только в контроллерах семейства PIC24H. Он существенно отличается от такого же модуля в контроллерах PIC18 и имеет 16 фильтров на прием, 3 маски на прием, буферы FIFO на прием и на передачу.
Следует отметить, что впервые в практике Microchip контроллеры семейств PIC24F
и Р1С24Н (табл. 1) имеют 1ТАО-интерфейс, позволяющий проводить граничное сканирование устройства, программировать ИазЬ-память программ и проводить внутрисхемную отладку. Стандартный интерфейс 1С8Р также присутствует в каждом контроллере Р1С24, что позволит использовать привычные средства разработки (ICD2, PROMATE3 и т. п.).
Новые 16-разрядные микроконтроллеры dsPIC33F с ядром ЦОС
Следующее поколение 16-разрядных микроконтроллеров с ядром ЦОС является развитием удачного семейства dsPIC30F. Если о PIC24F можно говорить, как об усеченном доработанном варианте dsPIC30F (без ядра ЦОС, с трехвольтовым питанием и переработанным конвейером), то PIC24H — это усеченный вариант dsPIC33F. Хотя в данном сравнении нарушены причинно-следственные связи, технически оно верно.
Ядро dsPIC33F полностью аналогично ядру dsPIC30F, за одним исключением —
Таблица 2. Основные характеристики контроллеров семейства dsPIC33 (общего назначения)
1— о ч о о “ VO ¡J * Ф IS о s s а & ог & A re s а Js ОЗУ данных, кбаайт Таймеры 16 бит Модули захвата М X 3 Интерфейсы кодеков ов л а н а к \ X еа >( с < UART/SPI/I2C CAN I/O порты О A T
dsPIC33 общего назначения |
dsPIC33FJ64GP206 64 64 8 8 8 + 1/18 2/2/1 0 53 +
dsPIC33FJ64GP306 100 64 16 8 8 + 1/18 2/2/2 0 53 +
dsPIC33FJ64GP310 64 64 16 8 8 + 1/32 2/2/2 0 85 +
dsPIC33FJ64GP706 100 64 16 8 + 2/18 2/2/2 2 53 +
dsPIC33FJ64GP708 64 64 16 8 8 + 2/24 2/2/2 2 69 +
dsPIC33FJ64GP710 100 64 16 8 8 + 2/32 2/2/2 2 85 +
dsPIC33FJ128GP206 64 128 8 8 8 + 1/18 2/2/1 0 53 +
dsPIC33FJ128GP306 100 128 16 8 + 1/18 2/2/2 0 53 +
dsPIC33FJ128GP310 64 128 16 8 8 + 1/32 2/2/2 0 85 +
dsPIC33FJ128GP706 100 128 16 8 8 + 2/18 2/2/2 2 53 +
dsPIC33FJ128GP708 64 128 16 8 + 2/24 2/2/2 2 69 +
dsPIC33FJ128GP710 100 128 16 8 + 2/32 2/2/2 2 85 +
dsPIC33FJ256GP506 64 256 16 9 8 8 + 1/18 2/2/2 1 53 +
dsPIC33FJ256GP510 100 256 16 9 8 8 + 1/32 2/2/2 1 85 +
dsPIC33FJ256GP710 100 256 30 9 8 8 + 2/32 2/2/2 2 85 +
в dsPIC33F команда выполняется за два такта генератора. Семейства полностью совместимы по набору инструкций, программной модели и способам адресации, что позволяет использовать библиотеки и исходные коды программ, написанные для dsPIC30F. Следует заметить, что новые 16-разрядные контроллеры Microchip имеют расширенную по сравнению с dsPIC30F таблицу векторов прерываний, однако это решается путем замены скрипта линкера.
Контроллеры dsPIC33F и PIC24H изготовлены по одной технологии, что определяет схожесть характеристик: диапазон напряжений питания — 3,0-3,6 В, максимальная производительность 40 MIPS при тактовой частоте 80 МГц. Количество циклов перепрограммирования программной Flash-памяти ~1000 раз.
Контроллеры семейства dsPIC33 (табл. 2,3)
могут включать следующие периферийные
модули:
• до девяти 16-разрядных таймеров общего назначения (аналогично PIC24H);
• до восьми модулей захвата (аналогично PIC24H);
• до восьми 16-разрядных модулей сравнения (генерации ШИМ); модули ШИМ в семействе dsPIC33F, предназначенном для управления двигателями с гибкой настройкой параметра dead-time и аппаратным детектором аварии.
• модуль квадратурного энкодера со входом для импульса полного оборота;
• до двух интерфейсов SPI (аналогично PIC24H);
• до двух модулей I2C (аналогично PIC24H);
• до двух модулей UART с поддержкой аппаратного управления потоком;
• до двух расширенных модулей CAN (аналогично PIC24H);
• стандартный модуль CAN (аналогичный 8-разрядному семейству);
• модуль DMA (аналогично PIC24H);
• модуль DCI, предназначенный для коммуникации с аудиокодеками (аналогично dsPIC30F);
• до двух АЦП с конфигурируемой разрядностью (аналогично PIC24H).
Особо следует отметить переработанную по сравнению с dsPIC30F систему тактирования. dsPIC33F, как и семейство PIC24H, имеет PLL с дробным коэффициентом умножения (конфигурируемым программно), что позволяет получить сетку частот от 12,5 до 0 МГц с шагом 0,25 МГц при использовании кварцевого резонатора 4 МГц.
Кроме того, контроллеры dsPIC33F и PIC24H имеют два внутренних высокостабильных RC-генератора с частотами 7,3728 МГц и 32,768 кГц.
Отдельный делитель тактовой частоты ядра (модуль DOZE) присутствует во всех новых 16-разрядных семействах. Он позволяет уменьшить тактовую частоту, подаваемую на ядро независимо от тактовой частоты периферийных модулей, что необходимо для уменьшения энергопотребления в приложениях.
Контроллеры с ядром ЦОС dsPIC33F совместимы по выводам с предыдущим семейством dsPIC30F (за исключением одного вывода), что не потребует модификации существующих аппаратных решений. Модифицированный конвейер, переработанная схема тактирования, а также новые энергосберегающие функции позволят использовать новое семейство в приложениях, для которых требуется меньшее потребление тока, чем у предыдущего семейства DSP-контроллеров dsPIC30F.
Компания Microchip предоставляет все средства, необходимые для начала работы с новыми 16-разрядными семействами. Доступна новая отладочная плата Explorer 16, бесплатная студенческая версия Си-компилятора (полностью работоспособная в течение 60 дней, после истечения срока отключается возможность оптимизации кода), бесплатная интегрированная среда разработки MPLAB IDE, большое количество библиотек (работа с периферийными модулями, цифровая обработка сигналов, сжатие и распознавание речи, шифрование и т. п.).
Снижение технологических норм при производстве новых 16-разрядных семейств (0,25 мкм) позволило существенно снизить стоимость контроллеров PIC24 и dsPIC33F по сравнению не только с dsPIC30, но даже с 8-разрядными контроллерами PIC18, а преемственность средств разработки и отладки позволит быстро освоить новые контроллеры. ■
Таблица 3. Основные характеристики контроллеров семейства dsPIC33 (для управления двигателями)
Ти Количество выводов, кбайт м м а р ог р л ят м а Js ОЗУ данных, кбаайт Таймеры 16 бит Модули захвата М И 3 Интерфейсы кодеков ов л а н а к / X еа с < UART/SPI/I2C CAN I/O порты О A T
1 dsPIC33 - семейство для управления двигателями |
dsPIC33FJ64MC506 64 64 8 9 8 8 1 1/16 2/2/2 1 53 +
dsPIC33FJ64MC508 80 64 8 9 8 8 1 1/18 2/2/2 1 53 +
dsPIC33FJ64MC510 100 64 8 9 8 8 1 1/24 2/2/2 1 85 +
dsPIC33FJ64MC706 64 64 16 9 8 8 1 2/16 2/2/2 1 53 +
dsPIC33FJ64MC710 100 64 16 9 8 8 1 2/24 2/2/2 2 69 +
dsPIC33FJ128MC506 64 128 8 9 8 8 1 1/16 2/2/2 1 85 +
dsPIC33FJ128MC510 100 128 8 9 8 8 1 1/24 2/2/2 1 53 +
dsPIC33FJ128MC706 64 128 16 9 8 8 1 2/16 2/2/2 1 53 +
dsPIC33FJ128MC708 80 128 16 9 8 8 1 2/18 2/2/2 2 85 +
dsPIC33FJ128MC710 100 128 16 9 8 8 1 2/24 2/2/2 2 53 +
dsPIC33FJ256MC510 100 256 16 9 8 8 1 1/24 2/2/2 1 69 +
dsPIC33FJ256MC510 100 256 30 9 8 8 1 2/24 2/2/2 2 85 +