Что такое Peripheral Pin Select в новых 16-и разрядных контроллерах PIC24?

№ 9’2007
PDF версия
Часто разработчики малогабаритных электронных устройств сталкиваются с проблемой выбора микроконтроллера под свою задачу. С одной стороны, важен размер корпуса контроллера, с другой — требуется наличие большого числа различных интерфейсов. Современные микроконтроллеры с корпусами 18–28 выводов, как правило, имеют большое количество встроенных периферийных модулей, но малое количество выводов может ограничить одновременное использование требуемой периферии.

Часто разработчики малогабаритных электронных устройств сталкиваются с проблемой выбора микроконтроллера под свою задачу. С одной стороны, важен размер корпуса контроллера, с другой — требуется наличие большого числа различных интерфейсов. Современные микроконтроллеры с корпусами 18–28 выводов, как правило, имеют большое количество встроенных периферийных модулей, но малое количество выводов может ограничить одновременное использование требуемой периферии.

Peripheral Pin Select, или PPS — это технология, разработанная компанией Microchip, благодаря которой разработчик может ставить в соответствие вывод микроконтроллера и выход или вход его встроенных периферийных модулей. Другими словами, можно выбирать, на каких выводах будут находиться нужные периферийные модули. Разрабатывая первые микроконтроллеры с PPS, а конкретно серию PPS-микроконтроллеров PIC24FJ64GA004, компания Microchip оставила всю периферию, что и в ранее выпущенных микроконтроллерах PIC24F, сократив количество выводов до 44 и меньше.

В результате разработчик может выбрать более дешевый контроллер с нужным набором функций и в меньшем корпусе. Но есть одно ограничение: аналоговые функции и модули, их использующие, фиксированы, поскольку PPS является цифровым мультиплексором, помещенным между выходами внутренней периферии и выводами контроллера. Кроме того, из-за особенностей аппаратной реализации фиксированы выводы модулей I2C и параллельного порта.

Преимущества PPS:

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

Первая серия контроллеров Microchip с функцией PPS — PIC24FJ64GA004. Эта серия представлена версиями контроллеров с Flash-памятью программ объемом от 16 до 64 кбит в корпусах с 28 и 44 выводами, из которых можно переопределить 16 и 28 выводов соответственно. При небольшом размере корпуса микроконтроллеры этой серии обеспечивают все функции более крупных представителей в 64–100-выводных корпусах, за исключением меньшего количества каналов АЦП (10 и 13 вместо 16).

Входы и выходы периферийных модулей контроллеров PIC24FJ64GA004, доступные для переопределения:

  • Все функции SPI и UART.
  • Входы таймеров и входы внешних прерываний.
  • Входы модулей захвата, выходы модулей сравнения и входы ошибок модуля сравнения.
  • Выходы аналоговых компараторов.
  • Входы интерфейса квадратурного энкодера.

Недоступные для переопределения функции:

  • I2C.
  • АЦП.
  • PMP — параллельный адресуемый порт.
  • Выход часов реального времени и календаря.
  • Входы прерывания по изменению состояния (CNn).

В документации выводы с PPS называются Remappable Port, или RP. На все такие выводы можно переопределить любой из перечисленных модулей. В случае переопределения модуль получает приоритет над остальными, закрепленными по умолчанию за выводом, вне зависимости от его типа. Это правило не действует только для аналоговых модулей.

Для иллюстрации одной из областей применения этой технологии можно привести пример приложения. Пусть в устройстве необходимо задействовать 2 канала АЦП с внешним опорным напряжением, 2 компаратора, 2 UART, I2C, 2 SPI и 4 цифровых входа/выхода общего назначения. Для этих целей подойдет микроконтроллер PIC24FJ64GA006, имеющий 64 вывода.

В этом случае модули UART1/SPI1 и Comparator2/SPI1 находятся на одних выводах (на рис. 1 отмечены красным), еще 25 не задействованы (белые). Чтобы избежать конфликта, необходимо выбирать еще больший корпус (удорожание изделия и увеличение количества незадействованных выводов), или работать с внешними SPI-устройствами программно (более сложная программная реализация, меньшая скорость).

Использование выводов МК без PPS
Рис. 1. Использование выводов МК без PPS

Если же выбрать МК с теми же параметрами, но c возможностью PPS (PIC24FJ64GA004), то незадействованными останутся только три вывода (рис. 2). Отсутствуют конфликты, поскольку модуль SPI1 переопределен на другие выводы. Также упростилась реализация задачи — нет необходимости реализовывать программный SPI. И, наконец, полученное изделие будет дешевле, так как используется контроллер в меньшем корпусе и с меньшим количеством выводов.

Использование выводов МК с использованием PPS
Рис. 2. Использование выводов МК с использованием PPS

Для управления PPS используется два набора регистров специального назначения. Для их защиты от несанкционированного изменения реализовано несколько механизмов:

  • Перед изменением регистров управления необходимо выполнить ряд действий для разблокировки и затем для блокировки управления.
  • Есть режим без динамического изменения распределения выводов. То есть произвести запись в регистры, отвечающие за функции PPS, можно только один раз после сброса контроллера.
  • Все регистры управления выводами имеют теневые копии. При случайном изменении (вследствие, например, электростатического разряда или электромагнитных наводок) происходит сброс контроллера.

При изменении конфигурации выводов необходимо сначала разблокировать управление регистрами, а затем заблокировать. Для этого нужно записать 46h в OSCCON, затем 57h в OSCCON и установить или сбросить бит IOLOCK (OSCCON). При отсутствии необходимости изменять конфигурацию более одного раза можно использовать блокировку — бит IOL1WAY в слове конфигурации контроллера (CW2<4>).

Управление входами любого периферийного модуля производится с помощью 16-разрядного регистра (один на каждый вход всех модулей), устанавливающего соответствие между выводами RP и входами модулей. Для управления выходами на каждые два вывода RP существует по 16-разрядному регистру, в который записывается номер выхода модуля (уникальный для любого выхода).

Из этого следует, что PPS позволяет переопределить:

  • На один вывод вход и выход разных периферийных модулей.
  • На один вывод входы двух разных периферийных модулей.
  • На один выход модуля подключить несколько выводов.

Можно перечислить несколько интересных применений этой технологии. Если необходима повышенная нагрузочная способность периферийного выхода, можно назначить один выход на несколько физических выводов и соединить их на печатной плате (рис. 3). Возможно подключение одного сигнала к нескольким входам (рис. 4). Также, в целях отладки, можно подключить выход коммуникационного порта на его вход (рис. 5). Переопределяя назначение выводов в ходе выполнения программы можно использовать один модуль UART с несколькими внешними устройствами (рис. 6).

Повышение выходного тока выходов
Рис. 3. Повышение выходного тока выходов
Подключение одного сигнала к нескольким модулям
Рис. 4. Подключение одного сигнала к нескольким модулям
Замыкание «на себя» коммуникационных портов (loopback)
Рис. 5. Замыкание «на себя» коммуникационных портов (loopback)
Использование одного модуля UART с несколькими устройствами
Рис. 6. Использование одного модуля UART с несколькими устройствами

Новое семейство PIC24FJ поддерживается интегрированной средой разработки MPLAB IDE. Для удобного представления, управления и настройки выводов и модулей в среду MPLAB (вызывается из меню Tools) встроено мощное средство Visual Device Initializer (рис. 7). Он имеет графический интерфейс и с его помощью можно легко и быстро сгенерировать код для конфигурации контроллера и всей периферии. Использовать Visual Device Initializer можно не только при разработке программного обеспечения для контроллеров с технологией PPS, он работает почти со всеми контроллерами Microchip, начиная с линейки PIC18F.

Общий вид окна Visual Device Initializer
Рис. 7. Общий вид окна Visual Device Initializer

Слева в окне Visual Device Initializer находится список функций и периферийных модулей, справа — выбранный контроллер (белые выводы не переопределяемые, но настраиваемые, желтые переопределяемые и настраиваемые, черные ненастраиваемые, зеленые — уже назначенные, красные — конфликтующие). Посередине изображения контроллера находятся иконки выбранных функций и модулей. Для настройки модуля их необходимо добавить из списка функций мышью (методом drag&drop). Затем щелчком на них открывается окно настройки (рис. 8). Выбрав в меню Visual Initializer -> Code Generation, можно получить готовый код для инициализации контроллера в соответствии с настройками всех модулей и вставить его в проект.

Пример настройки порта в Visual Device Initializer
Рис. 8. Пример настройки порта в Visual Device Initializer

Компания Microchip планирует внедрение технологии PPS не только в маловыводные 16-разрядные контроллеры PIC24F, но и в микроконтроллеры PIC18F, цифровые сигнальные контроллеры dsPIC33, контроллеры в корпусах с 64–80 выводами. Использование МК с переназначаемой периферией позволит значительно упростить этап начальной разработки системы, топологию печатной платы. Использование технологии PPS также позволит выбрать дешевый микроконтроллер в меньшем корпусе, что снизит себестоимость устройства.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *