microchip

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

 

Часто разработчики малогабаритных электронных устройств сталкиваются с проблемой выбора микроконтроллера под свою задачу. С одной стороны, критичен размер корпуса контроллера, с другой – требуется наличие большого числа различных интерфейсов. Современные микроконтроллеры с корпусами 18-28 выводов, как правило, имеют большое количество встроенных периферийных модулей, однако малое количество выводов может ограничить одновременное использование требуемой периферии. Эта проблема может возникнуть и при использовании контроллеров с количеством выводов 40-64, так как не всегда удается задействовать все периферийные модули, приходится реализовывать, например, UART или SPI программно.
Peripheral Pin Select, или PPS – это технология, разработанная компанией Microchip, благодаря которой разработчик может ставить в соответствие вывод микроконтроллера и выход или вход его встроенных периферийных модулей. Другими словами, можно выбирать на каких выводах будут находиться нужные периферийные модули. Разрабатывая первые микроконтроллеры с PPS, а конкретно ­- серию PPS микроконтроллеров PIC24FJ64GA004, компания Microchip оставила всю периферию, что и в ранее выпущенных микроконтроллерах PIC24F, снизив количество выводов до 44 и меньше.
В результате, разработчик может выбрать более дешевый контроллер с нужным набором функций и в меньшем корпусе. Но есть одно ограничение: аналоговые функции и модули их использующие фиксированы, поскольку PPS является цифровым мультиплексором, помещенным между выходами внутренней периферии и выводами контроллера. Также, из-за особенностей аппаратной реализации, фиксированы выводы модулей I2C и параллельного порта.

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

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

Входы и выходы периферийных модулей контроллеров PIC24FJ64GA004, доступные для переопределения:
- Все функции SPI и UART.
- Входы таймеров и входы внешних прерываний.
- Входы модулей захвата, выходы модулей сравнения и входы ошибок модуля сравнения
- Выходы аналоговых компараторов.
- Входы интерфейса квадратурного энкодера.
- CAN.
Недоступные для переопределения функции:
- 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, PIC24FJ64GA004, то незадействованными останутся только три вывода (см. рис. 2). Отсутствуют конфликты, поскольку модуль SPI1 переопределен на другие выводы. Также упростилась реализация задачи – нет необходимости реализовывать программный SPI. И, наконец, полученное изделие будет дешевле, так как используется контроллер в меньшем корпусе и с меньшим количеством выводов.


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

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

Для управления PPS используется два набора регистров специального назначения. Для их защиты от несанкционированного изменения реализовано несколько механизмов:
- Перед изменением регистров управления необходимо выполнить ряд действий для разблокировки и затем для блокировки управления.
- Есть режим без динамического изменения распределения выводов. То есть произвести запись в регистры, отвечающие за функции PPS можно только один раз после сброса контроллера.
- Все регистры управления выводами имеют теневые копии. При случайном изменении (вследствие, например, электростатического разряда или электромагнитных наводок) происходит сброс контроллера.
При изменении конфигурации выводов необходимо сначала разблокировать управление регистрами, а затем заблокировать. Для этого нужно записать 46h в OSCCON<7:0>, затем 57h в OSCCON<7:0> и установить или сбросить бит IOLOCK (OSCCON<6>). При отсутствии необходимости изменять конфигурацию более одного раза, можно использовать блокировку - бит IOL1WAY в слове конфигурации контроллера (CW2<4>).
Управление входами любого периферийного модуля производится с помощью 16-и разрядного регистра (один на каждый вход всех модулей), устанавливающего соответствие между выводами RP и входами модулей. Для управления выходами на каждые два вывода RP существует по 16-и разрядному регистру, в который записывается номер выхода модуля (уникальный для любого выхода).

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


Рисунок 3: Повышение выходного тока выходов.


Рисунок 4: Подключение одного сигнала к нескольким модулям.


Рисунок 5: Замыкание на себя коммуникационных портов (loopback).


Рисунок 6: Использование одного модуля UART с несколькими устройствами.

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


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

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


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

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

 

©2007 Гамма-Санкт-Петербург