16-битные микроконтроллеры Microchip. Часть 2
Все статьи цикла:
- Новые 16-разрядные семейства микроконтроллеров Microchip. Часть 1
- 16-битные микроконтроллеры Microchip. Часть 2
- 16-битные микроконтроллеры Microchip. Часть 3
Служебные модули
Система тактирования
Как и в 8-битных контроллерах Microchip, в семействе dsPIC30 команда выполняется за 4 такта генератора, следовательно, для достижения максимальной производительности 30 MIPS тактовая частота должна быть равна 120 МГц.
Семейства PIC24F/H и dsPIC33 имеют переработанную схему конвейера — это первые контроллеры Microchip, в которых команда выполняется за 2 (!) такта. Максимальная производительность PIC24F составляет 16 MIPS (тактовая частота 32 МГц), PIC24H/dsPIC33 — 40 MIPS (тактовая частота 80 MГц). Значительное увеличение производительности по сравнению с dsPIC30 связано с использованием более «тонкого» техпроцесса изготовления кристаллов — 0,25 мкм.
16-битные семейства имеют три различных типа схемы тактирования:
- a) dsPIC30. Схема тактирования имеет четыре источника — первичный кварцевый генератор (4–10 МГц), вторичный кварцевый генератор (32 кГц), внутренний RC-генератор 8 МГц и внутренний низкочастотный RC-генератор 512 кГц. Первичный генератор может тактировать схему умножения частоты с ФАПЧ (PLL), коэффициент умножения (4, 8, 16) выбирается в конфигурационном слове и не может быть изменен в ходе выполнения программы. PLL-умножитель не может быть подключен к внутренним RC-генераторам или ко вторичному кварцевому генератору.
- б) PIC24F. Схема тактирования почти полностью повторяет dsPIC30. Так как максимальная частота тактирования этого семейства составляет 32 МГц, внутренний PLL-умножитель имеет только один коэффициент умножения на 4. Внутренний прецизионный RC-генератор 8 МГц может использовать PLL для умножения частоты (в отличие от dsPIC30), следовательно, можно получить максимальную производительность 16 MIPS, используя для тактирования внутренний генератор. Умножитель можно отключить программно.
- в) PIC24H/dsPIC33. Схема тактирования аналогична PIC24F, однако в ней полностью переработан PLL-умножитель. Опуская детали, можно сказать, что коэффициент умножения является дробным и настраивается программно. Таким образом, если контроллер тактируется от кварцевого резонатора 4 МГц, с помощью PLL можно получить сетку частот тактирования от 12,5 до 80 МГц с шагом 0,25 МГц.
Микроконтроллер может тактироваться от внешнего источника частоты (0–40 МГц). Система тактирования содержит детекторы стабильности тактовой частоты, что позволяет производить автоматическое переключение на вторичный источник при сбое первичного.
Схема тактирования dsPIC30 содержит делитель тактовой частоты, подаваемой на ядро и периферию. Делитель имеет коэффициенты 1, 4, 16 и 64, коэффициент может быть изменен программно.
Важной особенностью является разделение линий тактирования ядра и периферии. Сигнал тактирования на ядро подается через программно управляемый делитель. Это предоставляет уникальную возможность уменьшения частоты тактирования ядра (что сокращает потребление энергии) при сохранении частоты тактирования периферии (важно, например, для быстрых коммуникационных интерфейсов — SPI, UART и т. п.).
Внутренний высокочастотный RC-генератор в отличие от dsPIC30/PIC24F имеет частоту 7,37 МГц. Следует отметить, что во всех семействах частота внутреннего генератора может программно корректироваться в пределах ±12% c шагом в десятые доли процента.
Система сброса
Система сброса всех 16-битных микроконтроллеров Microchip идентична, за исключением того, что в 3-вольтовых семействах dsPIC33 и PIC24F/H отсутствует сброс по снижению напряжения питания (BOR — Brown Out Reset). Это связано с тем, что максимальная частота тактирования базового семейства dsPIC30 зависит от напряжения питания — детектор снижения необходим, чтобы предотвратить некорректную работу системы. Контроллеры dsPIC33 и PIC24F/H обеспечивают максимальную производительность во всем диапазоне питающих напряжений, поэтому необходимость в детекторе BOR отсутствует. Источник сброса BOR заменен на сброс по снижению напряжения на выходе встроенного стабилизатора питания ядра.
Все семейства имеют следующие источники сброса:
- программный сброс — инструкция RESET;
- внешний сброс по входу MCLR;
- сброс по переполнению сторожевого таймера;
- сброс по включению напряжения питания;
- сброс при конфликте исключений;
- сброс при неверном операционном коде инструкции (например, если программный счетчик указывает на область констант);
- сброс при использовании неинициализированных рабочих (Wx) регистров;
- сброс при неверном формате конфигурационного слова (только для PIC24F/H, dsPIC33).
При любом виде сброса все служебные регистры устанавливаются в определенное состояние, одинаковое для всех видов сброса. Исключения — регистр RCON (в котором находятся флаги системы сброса) и регистр управления схемой тактирования OSCCON.
Сторожевой таймер
Сторожевой таймер (WDT), как правило, используется для сброса контроллера в случае нарушения нормальной работы системы — сброс происходит при переполнении WDT. Сторожевой таймер тактируется от встроенного RC-генератора, поэтому при правильном использовании WDT сброс произойдет даже в случае остановки всех источников тактирования.
В контроллерах dsPIC30 сторожевой таймер имеет два предделителя, позволяющих установить период таймера от 2 мс до 16 с. Работа таймера может быть разрешена программно.
В контроллерах PIC24F/H и dsPIC33 сторожевой таймер имеет предделитель и постделитель, позволяющие установить период от 1 мс до 131 с; работа таймера может быть разрешена программно. Возможна работа WDT в оконном режиме — обнуление таймера необходимо производить в течение последней четверти его периода, в противном случае генерируется сброс контроллера.
Энергосберегающие режимы работы
Все 16-битные микроконтроллеры Microchip имеют два основных энергосберегающих режима:
- SLEEP. В этом режиме останавливается источник тактирования (низкочастотный генератор, которым тактируется сторожевой таймер, продолжает работу), отключается ядро контроллера, отключаются все периферийные модули (кроме портов ввода/вывода, модулей внешнего прерывания и периферийных модулей, использующих внешнюю тактовую частоту) — это режим работы с самым низким потреблением. Вход в режим SLEEP осуществляется программно. Выход из режима — по внешнему прерыванию, событию сброса или по переполнению WDT.
- IDLE. В этом режиме прекращается выполнение программы (изменение командного счетчика), но тактовый генератор и периферийные модули продолжают нормальное функционирование. Все периферийные модули имеют бит разрешения работы в режиме IDLE — возможно дополнительное снижение потребления путем отключения неиспользуемой периферии. Вход в режим осуществляется программно, выход — при возникновении любого немаскированного прерывания, сбросе контроллера или переполнении WDT.
Контроллеры семейств dsPIC33 и PIC24F/H имеют дополнительные функции, позволяющие значительно снизить потребление — режим DOZE и полное отключение периферийных модулей.
Суть режима DOZE — в уменьшении тактовой частоты, подаваемой на ядро контроллера, при неизменяемой частоте тактирования периферии. Делитель блока DOZE имеет коэффициенты деления от 1 до 1/128. Режим DOZE позволяет использовать полную пропускную способность коммуникационных интерфейсов или модулей генерации ШИМ при относительно низком общем потреблении кристалла.
Кроме того, часть периферийных модулей можно полностью отключить — все источники тактирования аппаратно отключаются, а служебные регистры модуля становятся недоступны. При этом периферийный модуль потребляет минимально возможный ток.
Система защиты кода CodeGuard
Как и большинство присутствующих на рынке микроконтроллеров, 16-битные семейства Microchip имеют схемы защиты кода от несанкционированного доступа (чтения или изменения). В 2006 году компания Micropchip анонсировала новую систему защиты кода CodeGuard, которая используется во всех микроконтроллерах dsPIC33 и PIC24H.
В семействах PIC24F и в большинстве dsPIC30 используется стандартная схема — уровень защиты определяется двумя битами в слове конфигурации. Один из них запрещает чтение программной памяти через внешний интерфейс программирования, другой — запрещает запись в программную память. Последнее необходимо для защиты контроллера от записи заплатки, которая может, используя инструкции табличного чтения, передать код по последовательному интерфейсу.
Стандартная схема защиты ограничивает применение внутрисхемных загрузчиков, модулей дистанционного обновления прошивки и т. д. Тем не менее, стандартная схема является одним из слоев защиты по спецификации CodeGuard.
Система CodeGuard основана на следующих основных положениях:
- Три уровня реализации: основной (Basic), аналогичный схеме защиты кода в PIC24F; промежуточный (Intermediate); передовой (Advanced).
- Flash-память условно разбита на три сегмента:
- загрузочная область (Boot), в которой может храниться код загрузчика с поддержкой шифрования, ключи шифрования, данные идентификации прошивки, функции дешифровки и т. п.;
- защищенный сегмент (Secure), в котором могут храниться функции, определяющие интеллектуальную ценность устройства, таблицы, защищенные обработчики прерываний и т. п.;
- основной сегмент (General), — в котором могут храниться драйверы периферии, большие таблицы данных, исполняемый код пользователя OEM-продукции и т. п.
- Каждый уровень реализации CodeGuard подразумевает разбивку Flash-памяти на сегменты и их защиту. Для основного уровня CodeGuard имеется только основной сегмент программной памяти, который может быть защищен. Для промежуточного уровня CodeGuard используются основной и загрузочный сегменты. Для продвинутого уровня CodeGuard необходимы все три сегмента.
- Размеры сегментов Flash конфигурируются.
- В контроллерах dsPIC30, в которых реализована схема CodeGuard (dsPIC30F5011/13, dsPIC30F601xA, dsPIC30F6015, dsPIC30F1010, dsPIC30F202x), интегрированная память EEPROM также может быть разбита на три сегмента, аналогично Flash-памяти. При этом каждый сегмент Flash может использовать только соответствующий сегмент EEPROM.
- Для каждого сегмента Flash доступно два уровня защиты:
- высокий (High) — программный доступ (инструкции вызова и перехода) возможен только в первые 32 слова сегмента (эта область называется Segment Access Area);
- стандартный (Standard) — программный доступ возможен ко всему диапазону адресов сегмента.
- Защищенный и основной сегменты имеют ограниченный доступ к загрузочному сегменту.
- Основной сегмент имеет ограниченный доступ к защищенному сегменту.
- Память данных разбита на три сегмента с конфигурируемым объемом. Спецификацией определены права доступа к каждому сегменту ОЗУ из соответствующего сегмента программной памяти.
Гибкая система защиты интеллектуальной собственности CodeGuard позволяет не только разрабатывать устройства, защищенные от кражи ПО, но и разрешать сторонним производителям использование прошитых программных модулей, предоставив соответствующие права доступа.
Периферийные модули
Все периферийные модули 16-битных семейств Microchip значительно переработаны по сравнению с аналогичными в 8-битных семействах. Единственный модуль, который полностью перенесен из предыдущей архитектуры — это модуль CAN в микроконтроллерах dsPIC30 (полный аналог модуля CAN семейства PIC18F458).
Порты ввода/вывода
Все порты ввода/вывода общего назначения семейства dsPIC30 имеют три управляющих регистра: TRISx — направление порта (комплементарный драйвер — выход, третье состояние — вход), PORTx — чтение регистра возвращает логический уровень непосредственно на выходе, запись осуществляется в регистр-защелку порта, LATx — чтение возвращает значение регистра-защелки порта, запись также осуществляется в регистр-защелку.
Часть выводов контроллера (в dsPIC30 до 24 выводов в 80-выводном корпусе) имеют функцию генерирования прерывания по изменению состояния. Вектор прерывания для этого события один.
Все порты ввода/вывода имеют на входе триггер Шмитта, а также защитные диоды на линии питания и земли.
Структура портов ввода/вывода семейств dsPIC33 и PIC24F/H аналогична dsPIC30. Все цифровые выводы толерантны к +5 В. Каждый вывод может быть индивидуально сконфигурирован как выход с открытым стоком.
Контроллеры семейств dsPIC33 и PIC24F/H полностью совместимы по выводам. Они также частично совместимы с семейством dsPIC30 (за исключением одного вывода). Контроллеры PIC24F/dsPIC30 допускают величину тока портов ввода/вывода 25 мА, семейства PIC24H/dsPIC33 — 4 мА.
Таймеры
Микроконтроллеры dsPIC30/PIC24F содержат пять 16-битных таймеров, четыре из которых могут объединяться в два 32-битных. Основные особенности таймеров:
- все таймеры имеют регистр периода, при совпадении с которым таймер сбрасывается, устанавливается флаг и, если разрешено, генерируется прерывание;
- все таймеры имеют предделитель с коэффициентами 1/1, 1/8, 1/64 и 1/256;
- один из таймеров может тактироваться от встроенного низкочастотного (32 кГц) кварцевого генератора и работать в асинхронном счетном режиме;
- четыре таймера могут работать в счетном режиме и в режиме разрешения счета (таймер инкрементируется только тогда, когда на его выводе присутствует разрешающий логический уровень).
- два таймера могут генерировать строб запуска АЦП.
Семейства dsPIC33/PIC24H имеют полностью аналогичные таймеры, а их количество увеличено до 9 (восемь из них могут объединяться в четыре 32-битных таймера).
Модули захвата
В отличие от 8-битных семейств, в которых модули захвата-сравнения ШИМ физически представляют собой один модуль CCP, режим работы которого выбирается программно, модули захвата, сравнения и генерации ШИМ в 16-битных семействах физически независимы. Модули захвата всех 16-битных семейств идентичны.
Модуль захвата, как правило, применяется для вычисления длительности внешних процессов, например периода входного сигнала, длительности одиночного импульса и т. п. При возникновении ожидаемого внешнего события (передний фронт, задний фронт) в 16-битный регистр модуля захвата заносится значение связанного с ним таймера, если разрешено — генерируется прерывание.
Модули захвата контроллеров dsPIC30/33 и PIC24F/H имеют следующие особенности:
- захват значения таймера при каждом событии, при каждом 4-м событии, при каждом 16-м событии, захват значения таймера при каждом фронте;
- 4-уровневый буфер FIFO. Прерывание может генерироваться модулем захвата при заполнении буфера на выбираемую пользователем величину уровней. Доступен флаг, сигнализирующий о переполнении FIFO.
Контроллеры dsPIC30 имеют от 1 до 8 модулей захвата, PIC24F — 5 модулей захвата, PIC24H/dsPIC33 — 8 модулей захвата.
Модули сравнения
Модуль сравнения используется для генерации на выводе контроллера определенной последовательности логических уровней. При совпадении значения связанного таймера с 16-битным регистром модуля на выводе формируется заданный логический уровень или инвертируется предыдущий. Если разрешено, генерируется прерывание.
Модули сравнения семейств PIC24F/H и dsPIC30/33 имеют следующие особенности.
- Два регистра сравнения позволяют генерировать два фронта на выходе при одном инкременте таймера. Возможна генерация центральносмещенного ШИМ-сигнала.
- Функция аппаратного отключения позволяет прекращать генерацию сигнала на выходе при аппаратной неисправности (например, при перегрузке мощных ключей).
- Возможность генерации набора ШИМ-сигналов для управления двигателями и источниками питания. Поддерживается управление полумостовой и мостовой схемой с учетом паузы для исключения сквозных токов через мощные ключи.
Если модули сравнения используются для генерации ШИМ сигнала, разрядность ШИМ зависит от частоты. Так, при максимальной производительности 40 MIPS и частоте генерации 39 кГц разрядность ШИМ будет равна 10. Минимальная частота генерации — 2,38 Гц (при производительности 40 MIPS).
Контроллеры dsPIC30 имеют от 1 до 8 модулей сравнения, PIC24F — 5 модулей сравнения, PIC24H/dsPIC33 — 8 модулей сравнения.
Модули генерации ШИМ-сигнала для специальных приложений
ШИМ-сигнал используется во многих специальных приложениях: это управление двигателями постоянного и переменного тока, управление осветительными приборами, источники питания и др. Большинство этих задач требует реализации дополнительных функций, таких как обеспечение аппаратного отключения генератора ШИМ, а также реализации паузы между переключением силовых ключей и генерации симметричного сигнала на раздельных выводах.
Некоторые 16-битные микроконтроллеры Microchip имеют модули генерации ШИМ сигнала, функциональность которых значительно расширена по сравнению со стандартным модулем сравнения. Сводные характеристики ШИМ-модулей приведены в таблице 3.
Модуль управления двигателями и источниками питания
Модуль управления двигателями присутствует только в контроллерах с DSP-ядром — dsPIC30/33. Для реализации управления двигателями и источниками питания в PIC24F/H могут использоваться модули сравнения.
Основные особенности модуля управления двигателями и источниками питания:
- От 6 до 8 каналов, комплементарный или независимый режим работы пары каналов.
- Аппаратная генерация задержки переключения мощных ключевых элементов (в контроллерах с 6 каналами — один генератор задержки, в контроллерах с 8 каналами — два генератора задержки).
- Программная конфигурация активного уровня на каждом выходе модуля.
- Генерация центральносмещенного ШИМ-сигнала.
- Возможность установки на каждом выводе фиксированного логического уровня.
- Один или два входа аппаратного аварийного отключения модуля.
- Настраиваемая генерация строба запуска АЦП.
Модуль может использоваться для управления асинхронными двигателями, двигателями постоянного тока, бесколлекторными двигателями постоянного тока, а также для построения эффективных источников питания.
Модуль генерации ШИМ для источников питания
В июле 2006 года компания Microchip анонсировала три новых микроконтроллера семейства dsPIC30: dsPIC30F1010, dsPIC30F2020 и dsPIC30F2023. Эти микроконтроллеры содержат два уникальных модуля — модуль генерации ШИМ для управления источниками питания (Power Supply PWM — PSPWM) и модуль универсального компаратора (SMPSC — Switch Mode Power Supply Comparator).
Эти контроллеры позиционируются для разработки корректоров коэффициента мощности, импульсных (в том числе регулируемых) источников питания, построенных по всем возможным схемам.
Структура модуля PSPWM похожа на структуру модуля управления двигателями. Отличие состоит в большей гибкости настроек и измененном методе тактирования. В системах электропитания модуль PSPWM может работать совместно с модулем SMPSC, который в данном случае предназначен для организации обратной связи.
Основные характеристики «связки» PSPWM + SMPSC:
- Четыре генератора ШИМ. Каждый имеет два выхода (всего восемь), которые могут работать в противофазе. Каждый генератор имеет независимую временнэю базу, что позволяет реализовать следующие режимы работы:
- стандартный ШИМ;
- комплементарный ШИМ;
- противофазный ШИМ;
- многофазная система ШИМ-сигналов;
- ШИМ с регулируемой фазой.
- Все четыре ШИМ-генератора позволяют изменять в реальном времени частоту сигнала, коэффициент заполнения, сдвиг фазы.
- Поддержка паузы переключения для защиты мощных ключей от сквозного тока.
- Генераторы обладают уникальной разрешающей способностью по времени (при 30 MIPS): разрешающая способность коэффициента заполнения — 1,1 нс, разрешающая способность схемы задержки на переключение — 4,2 нс, разрешающая способность сдвига фазы — 4,2 нс, разрешающая способность установки периода ШИМ— 8,4 нс. Такие параметры позволяют на выходе модуля получить ШИМ-сигнал с частотой 937 кГц и диапазоном регулировки скважности 10 бит.
- Независимые входы аварий — общий и перегрузки по току.
- Каждый ШИМ-генератор имеет схему сравнения для запуска АЦП.
- Универсальный компаратор имеет 16 входов и 10-битный ЦАП для установки опорного напряжения.
- В качестве опорного ЦАП может использоваться внешнее напряжение, 50% напряжения питания, внутренний стабильный (1%) источник опорного напряжения 1,2 В.
- Компаратор может запускать любой из 4 ШИМ-генераторов, вызывать прерывание. Схема строба прерываний подключена к компаратору через настраиваемый НЧ фильтр.
Сегодня модули PSPWM и SMPSC доступны только в трех указанных контроллерах семейства dsPIC30.
Модуль интерфейса квадратурного энкодера
Системы управления двигателями, как правило, подразумевают наличие обратной связи по положению, которая может быть реализована с помощью датчиков Холла, оптических датчиков, квадратурного энкодера. В последнем случае совместно с модулем управления двигателями может использоваться аппаратный модуль интерфейса квадратурного энкодера. Модуль присутствует только в контроллерах dsPIC30/33.
Основные особенности модуля:
- 16-битный счетчик импульсов (с возможностью инкремента и декремента) и флаг направления вращения;
- предделитель счетчика импульсов, регистр периода (при равенстве регистру периода счетчик сбрасывается, и, если разрешено, генерируется прерывание);
- возможность использования модуля в качестве таймера-счетчика общего назначения;
- три входа: два для квадратурно смещенных импульсов и один индексный, который может использоваться для сброса счетчика;
- программируемый цифровой фильтр на каждом входе (позволяет использовать даже дешевые механические энкодеры с большим временем дребезга контактов).
Компараторы
Два аналоговых компаратора присутствуют только в микроконтроллерах PIC24F. Основные особенности компараторов:
- Все выводы компараторов могут быть скоммутированы на порты микроконтроллера. Доступны программные флаги логических уровней на выходах компараторов.
- Гибкая настройка подключения выводов компараторов.
- Аппаратная инверсия выходного сигнала компаратора.
- Наличие конфигурируемого источника опорного напряжения.
- Физические параметры компараторов соответствуют параметрам аналогичных модулей в 8-битных микроконтроллерах Microchip.
Модули АЦП
Модули АЦП 16-битных семейств Microchip можно разделить на четыре вида, каждый из которых обладает специфическими функциями.
10-битный АЦП dsPIC30 последовательного приближения осуществляет оцифровку сигнала со скоростью до 500 тыс. выборок в секунду. АЦП имеет 4 схемы выборки-хранения с дифференциальным входом (что позволяет проводить одновременную выборку по 4 дифференциальным каналам), от 6 до 16 каналов, гибкий мультиплексор каналов.
Интересной особенностью этого модуля является наличие программируемого сэмплера, позволяющего производить выборку, а затем квантование по заданному алгоритму переключения каналов.
АЦП имеет 16-уровневый буфер и схему форматирования результата — результат может быть представлен в виде знакового, беззнакового, целого, числа с фиксированной точкой. Схема форматирования осуществляет заданное выравнивание результата внутри 16-битного слова буфера. Использование сэмплера позволяет размещать результаты преобразования в буфере по заданной схеме и генерировать прерывание после произвольного числа преобразований от 1 до 16.
В качестве опорного напряжения для квантования используются либо шины питания, либо внешние опорные напряжения Vref– и Vref+. Типовые значения интегральной и дифференциальной нелинейности АЦП составляют ±0,5 МРЗ.
12-битный АЦП dsPIC30 последовательного приближения осуществляет оцифровку сигнала со скоростью 100 тыс. выборок в секунду. АЦП имеет одну схему выборки хранения с дифференциальным входом и от 8 до 16 каналов.
Так же как и в 10-битном АЦП, здесь имеется сэмплер преобразования, 16-уровневый буфер, схема формирования результата. Преобразование может запускаться программно, от строба модуля управления двигателями, при переполнении таймера или от внешнего прерывания.
Типовые значения интегральной и дифференциальной погрешности не превышают ±1 МРЗ.
10-битный АЦП PIC24F является аналогом 10-битного АЦП dsPIC30, но содержит одну дифференциальную схему выборки-хранения. Схема мультиплексирования позволяет подать на прямой и инверсный входы схемы ВР сигнал любого аналогового канала. Точностные характеристики соответствуют 10-битному АЦП dsPIC30. Все микроконтроллеры семейства PIC24F имеют один модуль АЦП (16 каналов).
АЦП PIC24H/dsPIC33 c конфигурируемой разрядностью. Основной особенностью этого модуля АЦП является возможность программной конфигурации количества уровней квантования. Один бит в управляющем регистре позволяет настроить модуль как 10-битный АЦП с 4 дифференциальными схемами ВХ, либо как 12-битный АЦП с 1 дифференциальной схемой ВХ.
Значительно увеличена скорость преобразования — для 10-битного режима она составляет 1,1 млн выборок в секунду, для 12-битного — 500 тыс. выборок в секунду. Контроллеры PIC24H/dsPIC33 могут иметь до двух модулей АЦП (до 32 каналов), что предоставляет уникальную возможность — удвоить скорость преобразования, используя оба модуля параллельно.
В остальном функциональность модуля аналогична 10-битному или 12-битному АЦП dsPIC30 в зависимости от выбранного режима работы (разрядности).
Модуль АЦП PIC24H/dsPIC33 имеет возможность генерирования адреса для контроллера DMA, что позволяет размещать результаты преобразований по разным каналам в разных секторах буфера DMA.
Коммуникационные интерфейсы
UART. Модули UART 16-битных семейств PIC24F/H и dsPIC30/33 существенно переработаны по сравнению с аналогичными интерфейсами в 8-битных семействах. Основные особенности модулей UART:
- полнодуплексный 8- и 9-битный обмен, альтернативные выводы;
- возможность передачи и приема бита четности при 8-битном обмене;
- один или два стоповых бита;
- собственный генератор с 16-битным предделителем (для dsPIC30 при 30 MIPS — от 29 бод до 1,875 Мбод, для PIC24F при 16 MIPS — от 15 бод до 1 Мбод, для PIC24H/dsPIC33 при 40 MIPS — от 38 бод до 2,5 Мбод);
- 4-уровневый буфер FIFO приемника и 4-уровневый буфер FIFO передатчика;
- детектирование ошибок четности, переполнения буфера и ошибки формата кадра;
- поддержка 9-битного обмена с функцией детектирования адреса;
- диагностический режим «эхо» (loopback);
- аппаратная поддержка автоподстройки скорости обмена (для dsPIC30 возможно перенаправление входа RX на вход модуля захвата, для PIC24F/H и dsPIC33 автоподстройка осуществляется логикой самого модуля);
- поддержка спецификации LIN 2.0: генерирование поля Synk, поля Break (для dsPIC30 — только программно, для PIC24F/H, dsPIC33 — полная аппаратная поддержка), вывод контроллера из энергосберегающего режима по фронту на входе RX;
- раздельные векторы прерываний для всех ошибок модуля UART (только для PIC24F/H, dsPIC33);
- возможность аппаратного управления потоком — сигналы CTS и RTS (только для PIC24F/H, dsPIC33);
- поддержка физического уровня спецификации IrDA (только для PIC24F/H, dsPIC33).
Контроллеры dsPIC30 имеют от одного до двух модулей UART, все контроллеры семейств PIC24F/H и dsPIC33 имеют два модуля UART. Следует заметить, что в отличие от аналогичного модуля 8-битных семейств, модуль UART 16-разрядных контроллеров не поддерживает режим синхронного обмена. Для реализации этой функции рекомендуется использовать модуль SPI.
SPI. В 8-битных семействах Microchip модуль SPI был объединен с интерфейсом I2C в модуль MSSP, который мог работать только в одном, выбранном программно режиме. Это накладывало некоторые ограничения на функциональность системы. В 16-битных семействах модули SPI и I2C являются физически независимыми и могут функционировать параллельно. Все 16-битные семейства имеют модули SPI со следующими характеристиками:
- 8- и 16-битный режимы обмена;
- режимы работы «ведомый» и «ведущий»;
- выбор активного уровня на линии тактирования, выбор уровня на линии тактирования в режиме ожидания;
- 8-уровневый буфер FIFO (только для PIC24F);
- генератор линии тактирования с двумя предделителями (максимальная частота 10 МГц);
- фреймовый режим обмена — позволяет подключать к модулю современные АЦП и голосовые кодеки.
Микроконтроллеры dsPIC30 имеют от одного до двух модулей SPI, семейства PIC24F/H и dsPIC33 — два модуля SPI.
I2C. Все 16-битные семейства имеют модули I2C со следующими характеристиками:
- полная поддержка следующих режимов: «ведомый», «ведущий с одним мастером на шине», «ведущий с несколькими мастерами на шине, с возможностью детектирования коллизий и арбитражем»;
- поддержка 8- и 10-битной адресации;
- поддержка сообщения общего вызова спецификации I2C, поддержка зарезервированных протоколом адресов;
- работа в режиме повторителя — прием всех сообщений вне зависимости от значения поля адреса;
- опция удержания тактового сигнала, управление длительностью фронта;
- уровни спецификаций I2C и SMBus;
- прерывание при совпадении принятого адреса с заданной 10-битный маской (может использоваться для вывода контроллера из режима пониженного потребления IDLE);
- генератор тактирования (шина SCL);
- поддержка спецификаций 100 кГц, 400 кГц и 1 МГц.
Модуль I2C 16-битных семейств имеет расширенный набор флагов, позволяющий сократить размер и время выполнения кода обработчика прерывания по сравнению с 8-битными семействами.
Микроконтроллеры dsPIC30 имеют 1 модуль I2C, PIC24F — 2 модуля I2C, dsPIC33/PIC24H — от одного до двух модулей I2C.
DCI (Data Converter Interface). Высокая производительность и наличие DSP-ядра позволяют использовать микроконтроллеры dsPIC30/33 в задачах цифровой обработки звуковых сигналов, в частности, для реализации голосовых вокодеров и систем распознавания речи.
Модуль DCI предназначен для обмена данными с микросхемами голосовых кодеков. Поддерживаются следующие режимы работы:
- Последовательный интерфейс с фреймовой синхронизацией — используется большинством современных кодеков. Позволяет в одном фрейме передавать как звуковые данные по нескольким каналам, так и управляющую информацию.
- Интерфейс I2S (Inter-IC Sound) — устаревший интерфейс, до сих пор используемый, однако, в высококачественных звуковых кодеках (Wolfson, AKM и т. д.).
- Режим, совместимый со спецификацией AC’97.
Модуль DCI имеет собственный генератор частоты обмена, два 4-уровневых буфера приемника и передатчика, поддерживает до 16 временных слотов, разрядность звуковых данных 8–16 бит.
Модуль DCI присутствует только в контроллерах с DSP-ядром (dsPIC30/33).
CAN. Модуль CAN-контроллера dsPIC30 полностью идентичен аналогичному модулю 8-битного семейства PIC18F458 (спецификация CAN 2.0A/B). Модуль E(nchanced) CAN PIC24H/dsPIC33 значительно расширен по сравнению с CAN dsPIC30. Основные особенности CAN/ECAN модулей семейств dsPIC30/33 и PIC24H:
- поддержка спецификаций CAN 1.2, CAN 2.0A и CAN2.0B;
- прием и передача фреймов данных стандартного и расширенного формата;
- длина фрейма данных — 0–8 байт;
- программируемая скорость обмена до 1 Мбод;
- два буфера приемника с выбираемым приоритетом (CAN), до 32 8-байтных буферов приемника с выбираемым приоритетом (ECAN);
- 6 фильтров сообщений (CAN), 16 фильтров сообщений (ECAN);
- 2 маски фильтров сообщений (CAN), 3 маски фильтров сообщений (ECAN);
- поддержка адресации DeviceNet (ECAN);
- три буфера передатчика с выбираемым приоритетом (CAN), 8 8-байтных буферов передатчика с выбираемым приоритетом (ECAN);
- программируемая функция вывода из энергосберегающего режима;
- перенаправление событий приемника на вход модуля захвата (только ECAN — ведение логов, сетевая синхронизация).
Контроллеры dsPIC30 имеют от одного до двух модулей CAN, PIC24H/dsPIC33 — от одного до двух модулей ECAN.
Параллельный порт. Параллельный адресуемый мастер-порт (PMP) присутствует только в контроллерах семейства PIC24F. Он позволяет организовать обмен данными с различными устройствами — ЖК-индикаторами, внешними микросхемами памяти Flash и SRAM, картами памяти CompactFlash, жесткими дисками и т. п.
Параллельный мастер-порт имеет следующие характеристики:
- Две линии выбора кристалла (CS), управляющие линии (ByteEn, RD, WR, индивидуальные или совмещенные стробы записи–чтения). Активный логический уровень всех управляющих сигналов может быть настроен программно.
- 16-битная конфигурируемая шина адреса (любая линия может быть включена или отключена). Возможность автоматического инкремента или декремента адреса.
- 8-битная или 16-битная (только для контроллеров в 100-выводных корпусах) шина данных.
- Возможность работы в мультиплексном режиме шины данных и шины адреса.
- Программируемые временные параметры.
- 4-уровневый буфер данных.
- Выбор пороговых уровней (TTL, триггер Шмитта).
- Поддержка режима «ведомый» — функциональность, аналогичная модулю PSP в 8-битных семействах.
Параллельный порт доступен только в семействе PIC24F. В микроконтроллерах с количеством выводов 64 и 80 PMP имеет 8-битную шину данных, в микроконтроллерах с количеством выводов 100 — 16-битную шину данных.
Модуль CRC
Модуль CRC (Cyclic Redundancy Check) предназначен для аппаратного вычисления циклической избыточной суммы, которая используется в коммуникационных протоколах для проверки целостности пакета.
Модуль может использоваться для вычисления циклического кода с произвольным полиномом длиной от 1 до 16 бит. Модуль имеет буфер данных объемом 8 слов при длине полинома от 7 до 16 бит и объемом 16 слов при длине полинома менее 7 бит. По завершению вычисления может генерироваться прерывание.
Модуль вычисления CRC доступен только в семействе PIC24F.
Модуль часов реального времени и календаря (RTCC)
Модуль доступен только в контроллерах PIC24F. Модуль тактируется от внутреннего низкочастотного (32 кГц) кварцевого генератора (необходимо использование внешнего резонатора) и осуществляет аппаратный подсчет времени, смену календарных дней. RTTC имеет следующие характеристики:
- Подсчет секунд, минут и часов, 24-часовой формат.
- Календарь: день недели, дата, месяц, год. Диапазон: 2000–2009 годы, учет високосных годов.
- Формат представления данных BCD.
- Программная и аппаратная калибровка: ±2,64 с в месяц.
- Гибкая система тревог, выход импульса тревоги.
Модуль RTCC не поддерживает автоматический переход на летнее и зимнее время — эту функцию необходимо реализовывать программно.
Интерфейс JTAG
Интерфейс JTAG предназначен для граничного сканирования (проверки целостности системы) и внутрисхемного программирования и отладки микроконтроллеров. Впервые этот интерфейс стал доступен в новых 16-битных семействах PIC24F/H и dsPIC33. На сайте компании опубликованы ВSDL-файлы для всех микроконтроллеров с интерфейсом JTAG [3], а спецификация программирования Flash-памяти будет доступна в ближайшее время.
Окончание следует
Литература
- DS39747C: PIC24FJ128GA Family Data Sheet.
- DS70165D: dsPIC33F Family Data Sheet.
- www.microchip.com/stellent/groups/dspic_sg/documents/devicedoc/en027621.zip
- www.microchip.com/mplab
- www.iar.com
- www.piklab.sourceforge.net
- www.microchip.com/c30
- www.htsoft.com/products/dspicccompiler.php
- www.iar.com
- www.mikroe.com/en/compilers/mikroc/dspic
- www.microchip.com/tcpip
- www.cmx.com/microchip/index.htm
- www.jacos.narod.ru
- www.pumpkininc.com
- www.micrium.com/microchip/index.html
- www.benchmarks.caxapa.ru/?test=13
- www.benchmarks.caxapa.ru/?test=23
- www.techtrain.microchip.com/webseminars/Main.aspx
- www.forum.microchip.com