Периферийные модули контроллеров цифровой обработки сигналов dsPIC30F
Компания Microchip начинает выпуск нового семейства 16-разрядных Flash-микроконтроллеров с поддержкой команд цифровой обработки сигналов dsPIC30F. Высокое быстродействие в 30 MIPS (миллион операций в секунду) и эффективная система команд позволяет использовать контроллеры в сложных системах реального времени. Ядро dsPIC30F построено по 16-разрядной модифицированной гарвардской архитектуре с расширеной системой команд, включающей команды поддержки цифровой обработки сигналов (DSP). Процессорное ядро имеет 24-разрядные команды, которые выполняются за один машинный цикл (4 периода тактовой частоты), за исключением команд деления, переходов, команд пресылки данных из регистра в регистр и табличных команд. Программный счетчик позволяет адресовать до 4Мбайт программной памяти (4 М×24 бит).
Система команд ядра dsPIC30F имеет два класса команд: микроконтроллерные инструкции и команды цифровой обработки сигналов. Оба этих класса равноправно интегрированы в архитектуру контроллера и обрабатываются одним ядром.
В контроллерах dsPIC поддерживаются различные типы адресации, а система команд оптимизирована для получения максимальной эффективности при программировании на языке высокого уровня С.
Память данных контроллеров dsPIC может адресоваться как 32 кслов (64 кбайт) и разбита на два блока, обозначаемых как X и Y память данных. Каждый блок памяти данных имеет свой собственный независимый модуль генерации адресов (Address Generation Unit — AGU). Х-AGU поддерживает бит-реверсивную адресацию для упрощения ввода или переупорядочения выходных данных для построения алгоритмов быстрого преобразования Фурье (FFT).
Ядро DSP контроллера имеет 40-разрядное АЛУ и поддерживает команды умножения 17×17 за один цикл, имеет два 40-разрядных аккумулятора и 40-битный сдвиговый регистр (позволяет сдвигать данные до 15 бит вправо и до 16 бит влево за один цикл).
Микроконтроллеры dsPIC30F делятся на три семейства: контроллеры общего назначения, контроллеры для систем управления приводом и контроллеры для обработки сигналов датчиков. Основные параметры контроллеров этих трех семейств приведены в таблицах 1, 2 и 3.
Широкая гамма периферийных модулей позволяет получать информацию и управлять внешними устройствами. В зависимости от семейства контроллеры имеют такие модули, как таймеры, модули захвата/сравнения/ШИМ, специализированные модули ШИМ для управления электроприводом, интерфейс квадратурного энкодера, 10- и 12-разрядный АЦП, интерфейсы USART, SPI, I2C, DCI, CAN.
Многие модули или их отдельные функции впервые представлены в контроллерах компании Microchip. Рассмотрим более подробно назначение и особенности функционирования отдельных периферийных устройств.
Все микроконтроллеры dsPIC30F имеют несколько 16-разрядных таймеров, число которых может быть разным в зависимости от типа контроллера. Эти таймеры имеют обозначения Timer1, Timer2, Timer3 и т. д. Некоторые из таймеров могут работать совместно как 32-разрядные таймеры. Все 16-разрядные таймеры, присутствующие в dsPIC30F, функционально идентичны. Все они делятся на три функциональные группы: А, В и С.
Таймер типа А (обычно это Timer1) присутствует в большинстве контроллеров dsPIC30F. Таймер типа А может работать с внешним кварцем 32 кГц или в асинхронном режиме с внешним источником тактовых импульсов. Свойства таймера типа А дают возможность «пробуждать» контроллер из режима SLEEP (так как таймер может работать от внешнего асинхронного источника), а оптимизация тока потребления для работы с внешним кварцем на 32768 Гц позволяет организовывать на его основе микропотребляющие часы реального времени (RTC).
Таймер типа B (обычно это Timer2 и Timer4) присутствует в большинстве контроллеров dsPIC30F. Таймер типа В может каскадироваться с таймером типа С для создания 32-разрядного таймера. Синхронизация тактов для таймера В осуществляется после логики предделителя.
Таймер типа С (обычно это Timer3 и Timer5) может каскадироваться с таймером типа В для создания 32-разрядного таймера. В режиме сравнения такой таймер может являться инициатором автоматического запуска аналого-цифрового преобразователя (АЦП).
Таймеры в контроллерах dsPIC могут быть сконфигурированы для работы с внешним входом разрешения счета. В этом случае счет таймера начинается одновременно с установлением высокого уровня на внешнем входе и продолжается до изменения состояния входа или совпадения значения таймера с регистром периода.
Помимо обычных модулей широтно-импульсной модуляции (ШИМ) в контроллерах dsPIC существуют специализированные модули, которые призваны облегчить формирование многоканальных синхронизированных импульсов ШИМ для систем управления электроприводом и преобразователей мощности. С помощью специализированного модуля MCPWM (MCPWM — ШИМ для управления приводом) можно управлять следующими устройствами:
- 3-фазными индукционными двигателями переменного тока (ACIM);
- 3-фазными шаговыми двигателями с реактивным ротором, вентильными реактивными электродвигателями (Switched Reluctance Motor);
- бесколлекторными двигателями постоянного тока (BLDC);
- бесперебойными источниками питания (UPS).
Модули MCPWM имеют следующие особенности:
- Два вывода на каждый MCPWM-генератор.
- Комплементарное или независимое управление для каждой пары выходов.
- Аппаратная реализация «мертвого времени» для комплементарного режима.
- Программируемая полярность выходных импульсов.
- Множество режимов формирования выходных импульсов:
- ШИМ с выравниванием по фронту;
- центрированная ШИМ;
- центрированная ШИМ с двойным обновлением;
- режим одиночного импульса.
- Аппаратный вход аварийной ошибки драйвера (FAULT) с программируемой функцией.
- Возможность синхронизации измерений АЦП с формируемой ШИМ.
- Возможность индивидуального разрешения каждого выхода ШИМ.
В dsPIC30F может быть два варианта MCPWM-модуля в зависимости от типа контроллера. Модуль с 8-канальной ШИМ обычно присутствует в контроллерах с 64 или более выводами. Модуль MCPWM с 6 каналами реализован в устройствах с меньшим числом выводов.
MCPWM-модуль с 6 выводами используется в одно- и трехфазных приложениях управления мощностью, в то время как модуль с 8-канальным ШИМ может управлять четырехфазными двигателями. Модуль 8-канального ШИМ обеспечивает большую функциональность, так как поддерживает два входа FAULT и два программируемых значения «мертвого времени».
Еще один модуль, служащий для облегчения задач управления электроприводом, — это квадратурный энкодер, который используется как аппаратный детектор положения и направления вращения электропривода. Квадратурные энкодеры позволяют построить замкнутую систему управления во многих задачах в системах управления двигателем.
Типичный энкодер представляет собой колесо, размещенное на валу двигателя и модуль детектора, определяющий положение колеса. Как правило, энкодер имеет три вывода: фаза A, фаза B и индексный выход, информация с которых может быть декодирована для получения информации о вращении вала двигателя, включая скорость и направление вращения.
В контроллерах dsPIC30F реализован интерфейс связи с квадратурным энкодером, который содержит логику декодирования и интерпретации сигналов энкодера и 16-битный реверсивный счетчик для подсчета числа импульсов. Счетчик энкодера при необходимости может быть использован как таймер или счетчик общего назначения. Модуль интерфейса квадратурного энкодера содержит программируемый аппаратный цифровой фильтр для подавления дребезга входных сигналов, что обеспечивает высокую точность определения параметров движения вала двигателя.
Во всех контроллерах dsPIC30F существует модуль аналого-цифрового преобразователя (АЦП). В зависимости от типа устройств и назначения dsPIC30F имеют 10- или 12-разрядный АЦП.
АЦП последовательного приближения с разрядностью 10 бит имеет следующие особенности:
- Скорость преобразования до 500 тыс. преобразований в секунду.
- До 16 аналоговых входов.
- Возможность подключения внешнего опорного напряжения.
- Четыре дифференциальных устройства выборки-хранения (УВХ).
- Возможность одновременного (до 4 каналов) или последовательного измерения.
- Режим автоматического сканирования каналов.
- Выбираемый источник запуска старта преобразований.
- Буфер результатов измерений на 16 значений.
- Возможность работы в режиме SLEEP и IDLE.
Структурная схема 10-разрядного АЦП показана на рис. 2. Аналоговые входы контроллера через мультиплексор подключаются к 4 устройствам выборки-хранения (УВХ). АЦП может быть сконфигурировано для работы с одним, двумя или четырьмя УВХ. Мультиплексор позволяет подключать к УВХ до двух входных сигналов, тем самым предоставляется возможность производить измерения дифференциальных или униполярных сигналов.
АЦП подключен к буферу результатов, который представляет собой двухпортовое ОЗУ на 16 значений. Результат 10-разрядного преобразования при считывании из буфера может быть преобразован в четыре различных формата представления данных. Буфер АЦП позволяет накапливать результаты измерений для последующей обработки программой пользователя. Для удобства буфер может быть сконфигурирован как один буфер на 16 значений или как два буфера по 8.
Прерывание от АЦП может устанавливаться после каждого измерения или после каждого 2-го, 3-го, … , 16-го преобразования, что позволяет считывать результаты из буфера по мере его заполнения.
В контроллерах dsPIC реализовано несколько вариантов последовательности выборка-преобразование. Возможен вариант с одновременным захватом УВХ до 4 входных аналоговых сигналов с последующим последовательным преобразованием их в цифровой код или автоматическое преобразование последовательно нескольких каналов. Во втором случае после выборки и преобразования 1-го канала запускается выборка и преобразование 2-го канала и т. д.
Запуск преобразований АЦП может инициироваться программно, изменением состояния внешнего вывода контроллера, при совпадении значения Таймера 3 (режим сравнения) или завершением интервала ШИМ в модуле MCPWM.
Отличие 12-разрядного АЦП заключается в наличии только одного УВХ и уменьшении скорости преобразования до 100 тыс. преобразований в секунду (рис. 3).
АЦП в контроллерах семейства dsPIC предоставляют широкие возможности для осуществления измерений в сложных системах управления, измерений и обработки сигналов.
Последовательный интерфейс I2C предназначен для связи с различными устройствами (EEPROM-памятью, часами реального времени, драйверами LCD-дисплеев и т. п.) или другими контроллерами.
Модуль I2C в dsPIC поддерживает режим ведомого (SLAVE), ведущего (MASTER) а также режим с несколькими ведущими устройствами (MULTI-MASTER). Реализована поддержка 7- и 10-битной адресации устройств, а также поддержка скоростей шины 100 и 400 кГц.
В контроллерах содержатся независимые блоки поддержки ведомого и ведущего. Когда активна логика MASTER-блока, SLAVE-блок остается активным для определения состояния шины и приема своих сообщений в режиме одного ведущего или сообщений другого ведущего в режиме MULTI-MASTER. Модуль I2C в режиме с несколькими ведущими обеспечивает арбитраж и определение конфликтных ситуаций, что исключает потерю сообщений. Собственный генератор скорости передачи данных не требует для своей работы дополнительных ресурсов контроллера.
В dsPIC-контроллерах общего назначения интегрирована поддержка интерфейсов связи DCI (Data Converter Interface). Данный интерфейс реализован во многих звуковых кодерахдекодерах (кодеках), АЦП и ЦАП. DCI поддерживает интерфейсы: I2S, AC-link (AC-’97) и последовательную синхронную передачу фреймов (Framed Synchronous Serial Transfer).
Многие кодеки, которые используются в аудиоприложениях, поддерживают скорость выборок от 8 до 48 кГц. Модуль DCI автоматически определяет временные параметры интерфейса кодека.
Длина слова в DCI может быть запрограммирована до 16 бит. Однако часть кодеков имеет длину слова более 16 бит. Поддержка длинных слов в dsPIC реализуется из нескольких 16-битных слотов. Эта операция прозрачна для пользователя и данные располагаются последовательно в регистрах контроллера. Модуль DCI поддерживает до 16 временных слотов в фрейме данных, максимальная длина фрейма 256 бит.
Благодаря высокому быстродействию (тактовая частота до 120 МГц), мощной системе команд и наличию большого числа разнообразных периферийных устройств, 16-разрядные контроллеры Microchip семейства dsPIC30F найдут широкое применение в системах контроля, управления и обработки звука. Подробная документация на контроллеры dsPIC30F доступна на сайте Microchip www.microchip.com.