Новые двухъядерные микроконтроллеры для систем управления F28M35x семейства Concerto корпорации Texas Instruments

№ 10’2011
PDF версия
Несмотря на значительно возросшую производительность микроконтроллеров, существует ряд задач, когда одно ядро не справляется с их решением. К таким задачам относится реализация сложных алгоритмов управления. При этом часто необходимо проводить одновременную обработку прерываний от модулей обмена данными, наблюдение за объектом управления и обсчет алгоритмов управления. При решении подобных задач приходится использовать два микроконтроллера: один для обмена данными (как правило, MCU общего назначения) и второй — для решения задач управления (как правило, DSP). При таком подходе могут возникать серьезные проблемы с синхронизацией потоков данных между микроконтроллерами, вынуждающие использовать дорогостоящие мультипортовые ОЗУ для обмена данными и ПЛМ?— для квитирования. Микроконтроллеры F28M35x семейства Concerto корпорации Texas Instruments (TI) стали долгожданным решением для разработчиков, занимающихся проектированием систем интеллектуального управления.

Введение

При разработке микроконтроллеров семейства Concerto корпорация Texas Instruments пошла по пути объединения на одном кристалле подсистемы обмена данными (главной подсистемы), подсистемы управления и общей подсистемы. Общая подсистема состоит из блока разделяемых ресурсов для межпроцессорного обмена данными и многоканального блока обработки аналоговых сигналов для слежения за состоянием объекта управления.

В семейство Concerto входят многоядерные микроконтроллеры (MCU) типа система на кристалле (SoC) с независимыми подсистемами обмена данными и управления в реальном масштабе времени.

Семейство Concerto состоит из трех серий:

  • серии F28M35Exxx микроконтроллеров начального уровня с тактовой частотой ядер C28x/CORTEX-M3 60/60 МГц;
  • серии F28M35Mxxx микроконтроллеров среднего уровня с тактовой частотой ядер C28x/CORTEX-M3 75/75 МГц (базовое подсемейство);
  • серии F28M35Hxxx высокопроизводительных микроконтроллеров с тактовой частотой ядер C28x/CORTEX-M3 150/75 или 100/100 МГц.

Разница между микроконтроллерами различных серий с одинаковой маркировкой состоит только в тактовой частоте. Все остальные функциональные возможности у них одинаковы. Внутри серий микроконтроллеры отличаются объемом Flash-памяти, ОЗУ и наличием или отсутствием некоторых коммуникационных модулей.

Описываемые в статье микроконтроллеры F28M35x имеют в своем составе 2 ядра: стандартный для промышленных приложений обмена данными процессор (CPU) ARM Cortex-M3 (далее по тексту Cortex-M3) и мощный процессор цифровой обработки сигналов (DSP) TMS320C28x (далее по тексту C28x).

На рис. 1 показана блок-схема микроконтроллеров семейства Concerto.

Блок-схема микроконтроллеров Concerto

Рис. 1. Блок-схема микроконтроллеров Concerto

Микроконтроллеры F28M35x состоят из трех подсистем: главной подсистемы, или подсистемы обмена данными, управляющей и аналоговой подсистем.

Главная подсистема основана на 32-разрядном ядре ARM Cortex-M3 (5) и обладает широким набором традиционных периферийных модулей для обмена данными, включая Ethernet 1588, USB OTG + PHY, CAN, UART, SSI, I2C и интерфейс внешней периферии.

Управляющая подсистема реального времени основана на запатентованном 32-разрядном ядре C28x для операций с плавающей точкой от TI. В состав подсистемы входят прецизионные управляющие периферийные модули, включая ШИМ (ePWM) с защитой от сбоев, квадратурные энкодеры (eQEP) и блоки захвата (eCAP), функции которых хорошо известны по реализациям в семействах C2000 Piccolo (6) и C2000 Delfino (7) компании TI. Кроме того, микроконтроллер C28 расширен блоком, аппаратно реализующим вычисление функций Витерби, операции с комплексными числами и вычисление контрольных сумм (VCU), которые используют эффективные алгоритмы вычислений.

Система тактирования поддерживает несколько режимов пониженного энергопотребления, при которых для управления энергопотреблением тактирование процессоров и периферийных модулей происходит на уменьшенной частоте или совсем останавливается. Для повышения надежности система тактирования снабжена блоком обнаружения пропадания тактового сигнала.

Для генерации сообщений о критических состояниях в системе служат блоки немаскируемых прерываний (NMI), которые принудительно направляют сигналы о критических состояниях в главную и управляющую подсистемы и их сторожевые таймеры (WDT и NMI WDT).

Блок сброса отвечает на немаскируемое прерывание сброса от сторожевого таймера NMI WDT, внешний сброс и другие сигналы о критических состояниях и переводит процессорные подсистемы и остальные блоки микросхемы в известное начальное состояние. Для обеспечения безопасности хранения и передачи данных внутри микроконтроллера используются коды коррекции ошибок (ECC), контроль четности (Parity) и коды защиты памяти. Для защиты Flash-памяти микроконтроллера от несанкционированного доступа извне можно использовать 128-битный пароль.

Хотя главная и управляющая подсистемы имеют каждая свою локальную память и собственный набор периферийных модулей, они также могут совместно использовать данные и сигналы посредством блока межпроцессорной синхронизации и разделяемой памяти. Кроме того, обе подсистемы имеют совместный доступ к высокопроизводительной аналоговой подсистеме через общую шину аналогового интерфейса (Analog Common Interface Bus, ACIB).

Аналоговая подсистема состоит из двух 12-разрядных АЦП с 16 входными каналами и 6 аналоговых компараторов.

В таблице приведены особенности микроконтроллеров серии F28M35Exxx.

Таблица. Особенности микроконтроллеров F28M35Exxx

Характеристики M20B M20C M22B M22C M32B M32C M50B M50C M52B M52C
Процессор
Частота, МГц (C28x/CM3) 60/60
FPU + + + + + + + + + +
VCU + + + + + + + + + +
DMA + + + + + + + + + +
Память
Загрузочное ПЗУ, кбайт 64
ОЗУ, кбайт 72 72 136 136 136 136 72 72 136 136
Flash, кбайт 512 512 512 512 768 768 1024 1024 1024 1024
Интерфейсы управления
ШИМ, каналов 24
ШИМ высокого разрешения 16
Таймеры 25
Каналы захвата событий 6
QEP/QEI 3
АЦП, разрешение 2×12 разрядов
АЦП, каналов 20
АЦП, производительность MSPS 5,8
Компараторы 6
Порты обмена данными
USB (OTG) 1 1 1 1 1
ENET + + + + +
SPI 5
SCI 6
CAN 2
I2C 3
McBSP 1
Прочее
Тактовые генераторы 2
Линии ввода/вывода 64
Напряжение питания линий ввода/вывода, В 3,3/3,3
Тип корпуса 144HTQFP
Температурный диапазон, °C –40… +125

Примечание. В первой строке таблицы даны только окончания наименований микроконтроллеров. Таким образом, окончание M32C будет соответствовать полному наименованию F28M35M32C.

Перейдем к детальному рассмотрению основных функциональных блоков микроконтроллеров серии F28M35x семейства Concerto.

Главная подсистема

Главная подсистема состоит из ядра Cortex-M3, блока прямого доступа к памяти μDMA, контроллера вложенных векторных прерываний NVIC, периферийных модулей Cortex-M3 и локальной памяти, содержащей до 64 кбайт загрузочного ПЗУ, до 512 кбайт Flash-памяти с ECC, до 32 кбайт ОЗУ с ECC-контролем четности и до 2 кбайт ОЗУ сообщений IPC. Ядро Cortex-M3 и блок μDMA имеют доступ к управляющей подсистеме через разделяемые ресурсы (канал межпроцессорного обмена данными — IPC, ОЗУ сообщений, разделяемое ОЗУ) и обмениваются данными с периферийными модулями аналоговой подсистемы через шину ACIB. Кроме того, главная подсистема может принимать сигналы от блока NMI и посылать сигналы в блок сброса.

На рис. 2 показана структура главной подсистемы микроконтроллеров Concerto.

Структура главной подсистемы F28M35x

Рис. 2. Структура главной подсистемы F28M35x

Блок микроконтроллера Cortex-M3

32-разрядный процессор Cortex-M3 имеет высокую производительность, быструю детерминированную реакцию на прерывания и доступ к различным периферийным модулям для обмена данными (включая Ethernet и USB). В состав ядра Cortex-M3 входит блок защиты памяти (MPU), который обеспечивает привилегированный режим работы для защищенных операционных систем. Прилегающий к MPU мост между шинами маршрутизирует программные инструкции и данные от шин I-CODE (выборка инструкций и векторов) и D-CODE (выборка данных и доступ для отладки), которые подключены к загрузочному ПЗУ и к Flash-памяти соответственно. Другие данные обычно передаются через системную шину Cortex-M3, подключенную к локальному ОЗУ. Системная шина подключена также к блоку разделяемых ресурсов (который доступен и для управляющей подсистемы) и, через шину ACIB, к аналоговой подсистеме. Другой мост между шинами разрешает доступ к периферийным модулям главной подсистемы посредством шины APB или шины AHB, как со стороны системной шины CPU Cortex-M3, так и со стороны шины μDMA.

Большинство прерываний к CPU Cortex-M3 поступает от блока NVIC, который управляет запросами от периферийных модулей и устанавливает приоритет обработки прерываний. Также имеются исключительные состояния (исключения), вырабатываемые самим CPU Cortex-M3, которые могут возвращаться в Cortex-M3 как прерывания, после размещения их, согласно приоритетам, между другими запросами внутри NVIC. В дополнение к программируемым уровням приоритетов прерываний имеются три типа прерываний с фиксированным уровнем приоритета. Наивысший уровень приоритета, –3, назначен для прерываний M3PORRST и M3SYSRST от блока сброса. Следующий наивысший уровень приоритета, –2, назначен прерыванию M3NMIINT, которое поступает от блока NMI. Прерыванию M3HRDFLT (Hard Fault, аппаратный сбой) назначен уровень приоритета –1, и оно указывает на наличие аппаратных проблем, таких как пропадание тактового сигнала, в одном из периферийных модулей.

Процессор Cortex-M3 имеет два режима пониженного энергопотребления: режим сна (Sleep) и режим глубокого сна (Deep Sleep).

Модули DMA и NVIC Cortex-M3

Модуль μDMA Cortex-M3 предназначен для передачи данных между периферийными модулями и/или памятью без участия со стороны CPU Cortex-M3.

Блок NVIC управляет назначением приоритетов и обработкой прерываний для CPU Cortex-M3.

Для координации запросов на обмен данными с помощью μDMA периферийные модули Cortex-M3 используют сигналы REQ/DONE. Если канал DMA разрешен для использования этим периферийным модулем, то сигналы REQ/DONE, формируемые периферийным модулем, будут запускать обмен данными. После окончания обмена формируется запрос IRQ, который может быть передан от блока μDMA к блоку NVIC, чтобы информировать CPU Cortex-M3 о завершении обмена данными. Если канал DMA не разрешен для этого периферийного модуля, то сигналы REQ/DONE будут непосредственно формировать запросы IRQ к блоку NVIC. В результате обмен данными будет осуществляться под управлением CPU Cortex-M3. Для периферийных модулей, которые не поддерживаются в блоке μDMA, запросы IRQ передаются непосредственно в блок NVIC, минуя блок DMA. Это справедливо для обоих сторожевых таймеров (WDT0 и WDT1), сторожевого таймера NMI WDT, CAN-контроллера, модуля I2C и модулей АЦП, генерирующих прерывания ADCINT [8:1] от аналоговой подсистемы. Сторожевой таймер с немаскируемым прерыванием (NMI WDT) не посылает сигналов ни в блок μDMA, ни в блок NVIC (только в блок сброса).

Локальные периферийные модули Cortex-M3

В состав локальных периферийных модулей Cortex-M3 входят 2 сторожевых таймера (WDT0 и WDT1), сторожевой таймер с немаскируемым прерыванием NMI WDT, 4 таймера общего назначения, 4 модуля SSI, 2 CAN-контроллера, 5 UART, 2 модуля I2C, модуль Ethernet, модуль USB + PHY, интерфейс внешней периферии (EPI) и блок вычисления контрольных сумм (μCRC). Модули USB и EPI доступны через шину AHB. Остальные периферийные модули доступны через шину APB. Доступ к шинам APB и AHB осуществляется через системную шину CPU или шину μDMA посредством моста.

Процессор Cortex-M3 имеет полный доступ ко всем периферийным модулям, в то время как блок μDMA — к большинству из них, за исключением μCRC, WDT0, WDT1, NMI WDT, CAN и I2C. Периферийные модули Cortex-M3 подключаются к выводам микросхемы Concerto через блок мультиплексора GPIO_MUX1. Большинство периферийных модулей может генерировать сигналы для блоков μDMA и/или NVIC.

Блок WDT принимает сигнал M3SWRST от NVIC (запускается программно) и отправляет запросы на сброс M3WDRST [1:0] в блок сброса. Блок NMI WDT принимает сигнал M3NMI от блока NMI и посылает запрос на прерывание M3NMIRST в блок сброса.

Локальная память Cortex-M3

Локальная память включает в свой состав загрузочное ПЗУ (Boot ROM), защищенную Flash-память с коррекцией ошибок (ECC), защищенное ОЗУ C0/C1 (Secure C0/C1 RAM) с ECC и ОЗУ C2/C3 (C2/C3 RAM) с контролем четности. Загрузочное ПЗУ и Flash-память доступны через обе шины — I-CODE и D-CODE. К регистрам Flash-памяти может иметь доступ также CPU Cortex-M3 через шину APB. Все области локальной памяти доступны для CPU Cortex-M3. ОЗУ C2/C3 RAM доступно также для блока μDMA.

При доступе к локальной памяти могут генерироваться два типа сигналов коррекции данных: неисправимая ошибка и одиночная ошибка. Сигналы о неисправимых ошибках (включая сигналы об ошибках в разделяемой памяти) создают исключения сбоя на шине (Bus Fault Exception), поступающие в CPU Cortex-M3. Сигналы о менее критичных одиночных ошибках поступают в блок NVIC, где они могут приводить к генерации маскируемых прерываний для CPU Cortex-M3.

Управляющая подсистема

Управляющая подсистема содержит блоки CPU/FPU/VCU C28x, блок PIE, блок DMA, периферийные модули C28x и локальную память, содержащую до 512 кбайт Flash-памяти с ECC, до 36 кбайт ОЗУ с ECC/контролем четности и до 2 кбайт ОЗУ сообщений IPC. Кроме того, CPU C28x и DMA имеют доступ к разделяемым ресурсам (IPC, ОЗУ сообщений, разделяемое ОЗУ) и, через шину ACIB, к аналоговым периферийным модулям.

На рис. 3 показана структура управляющей подсистемы микроконтроллеров Concerto.

Структура управляющей подсистемы F28M35x

Рис. 3. Структура управляющей подсистемы F28M35x

CPU/FPU/VCU C28x

Управляющая подсистема микроконтроллеров F28M35x семейства Concerto, построенная на основе DSP ядра C28x, принадлежит платформе TMS320C2000 (6) и состоит из трех блоков: центрального процессора (CPU), сопроцессора операций с плавающей точкой (FPU) и арифметического расширителя (VCU). Блок CPU C28x микроконтроллеров Concerto имеет 32-разрядную архитектуру, аналогичную архитектуре CPU семейства C2000 Piccolo (7). Блок FPU представляет собой 32-разрядный блок операций над числами с плавающей точкой одинарной точности (IEEE 754), аналогичный FPU микроконтроллеров семейства C2000 Delfino (8). В итоге получается очень эффективная система для выполнения кода, написанного на языке C/C++.

Такая архитектура позволяет разрабатывать программное обеспечение для прикладных систем, включая любые математические алгоритмы, исключительно на языке высокого уровня. Микроконтроллер одинаково эффективен как в задачах математической обработки сигналов, так и в задачах управления системами. Блок аппаратного умножения 32×32 разряда с накоплением и 64-разрядным результатом позволяет микроконтроллеру эффективно решать задачи, в которых необходима высокая точность вычислений. За счет быстрой реакции на прерывания с автоматическим сохранением содержимого критических регистров микроконтроллер позволяет обслуживать многие асинхронные события с минимальным временем ожидания. Микросхема имеет 8-уровневый защищенный конвейер с конвейеризованной памятью. Это позволяет выполнять код с высокой скоростью без использования дорогой быстродействующей памяти. Специальный блок предсказания переходов/ветвлений минимизирует время ожидания и обеспечивает условную непрерывность выполнения кода. Особые операции условной записи позволяют значительно повысить производительность системы.

Блок VCU расширяет возможности CPU C28x+FPU, добавляя в систему команд расширенные инструкции для выполнения преобразований Витерби, операций с комплексными числами, 16-разрядного БПФ и вычисления CRC. При этом основной набор инструкций, конвейеризация и архитектура шин памяти остаются неизменными. Поэтому программы, написанные для C28x, полностью совместимы со связкой C28x+VCU.

Блок FPU генерирует два сигнала, которые передаются в блок PIE процессора C28x: LVF и LUV. Внутри PIE эти и другие сигналы от периферийных модулей C28x и блоков памяти преобразуются в 12 прерываний PIE PIEINTS [12:1] для CPU C28x. Кроме того, CPU C28x непосредственно принимает 3 дополнительных прерывания (кроме прерываний от PIE): от таймера 1 (TINT1), таймера 2 (TINT2) и от блока NMI (C28uNMIINT).

C28x имеет два режима пониженного энергопотребления: режим простоя (Idle) и режим ожидания (Standby).

Блок распространения прерываний от периферийных модулей C28x

Блок распространения прерываний от периферийных модулей (PIE) мультиплексирует большое количество источников прерываний в небольшой набор векторов прерываний. Блок PIE может поддерживать до 96 прерываний от периферийных модулей. Микроконтроллер F28M35x использует 70 из 96 возможных прерываний. Все 96 возможных прерываний группируются в блоки по 8 прерываний, а каждая группа воздействует на одну из 12 линий прерываний CPU (INT1–INT12). Каждая из 12 линий прерываний поддерживает до 8 независимых активных прерываний. Каждое из 96 прерываний имеет собственный вектор прерывания, хранящийся в выделенной области ОЗУ, которая может перезаписываться пользователем. Используя вектор прерывания, CPU автоматически переходит к выполнению процедуры обработки прерывания. Это занимает 8 циклов тактовой частоты, за которые выбирается вектор прерывания и сохраняются значения критических регистров. Поэтому CPU может быстро отвечать на прерывания.

Приоритеты прерываний назначаются как аппаратно, так и программно. Каждое отдельное прерывание можно разрешить или запретить, используя блок PIE.

Модуль прямого доступа к памяти C28x

Модуль прямого доступа к памяти (DMA) C28x осуществляет аппаратную передачу данных между периферийными модулями и/или памятью без вмешательства со стороны CPU, освобождая его для выполнения других системных функций. Кроме того, DMA имеет возможность ортогонально перестраивать данные во время их передачи, а также «перекидывать» данные между буферами. Эти функции модуля удобны для структурирования данных в блоки и их оптимальной обработки CPU. Источник генерации прерывания для каждого из шести каналов DMA можно конфигурировать независимо, и каждый канал может иметь собственное независимое прерывание в PIE, чтобы сообщать CPU о начале или завершении перемещения данных модулем DMA. Пять из шести каналов DMA абсолютно одинаковы, в то время как канал 1 имеет одну дополнительную функцию: его приоритет можно сконфигурировать выше, чем у остальных.

Локальные периферийные модули C28x

В состав периферийных модулей C28x входят: сторожевой таймер NMI WDT; 3 таймера общего назначения; 4 типа периферийных модулей последовательных портов — SCI, SPI, McBSP, I2C; 3 типа периферийных модулей управления (9 модулей ePWM, 6 модулей eCAP и 3 модуля eQEP). Все периферийные модули доступны для CPU C28x через шину памяти C28x. Кроме того, модули McBSP и ePWM доступны через шину DMA C28x. Периферийные модули последовательных портов и периферийные модули управления подключены к выводам микроконтроллера Concerto через блок мультиплексора GPIO_MUX1. Изнутри периферийные модули C28x генерируют сигналы для блока PIE, блока DMA C28x и аналоговой подсистемы.

Блок NMI WDT принимает сигнал C28NMI от блока NMI и отправляет его через задаваемый таймером промежуток времени в блок NMI Cortex-M3 и блок сброса, чтобы сообщить о потенциально критическом состоянии.

Все 9 модулей ePWM могут работать как в автономном режиме, так и в синхронном режиме с комплементарными выходами. Каждый периферийный модуль ePWM имеет входы сигналов отключения комплементарных выходов EPWMxA и EPWMxB. В качестве таких сигналов можно использовать сигналы ECCDBLERR от локальной памяти C28x, сигналы PIENMIERR и EMUSTOP от CPU C28x и до 12 внешних сигналов от GPIO_MUX1.

Локальная память C28x

В состав локальной памяти C28x входят: загрузочное ПЗУ, защищенная Flash-память с ECC, защищенное ОЗУ L0/L1 (Secure L0/L1 RAM) с ECC, ОЗУ L2/L3 (L2/L3 RAM) с контролем четности и ОЗУ M0/M1 (M0/M1 RAM) с ECC. Все области локальной памяти доступны для CPU C28x; ОЗУ L2/L3 также доступно для блока DMA C28x.

При доступе к локальной памяти C28x могут вырабатываться два типа сигналов коррекции данных: неисправимая ошибка и одиночная ошибка. Сигналы о неисправимых ошибках попадают в блок NMI, где они становятся немаскируемыми прерываниями C28NMI для NMI WDT C28x и C28NMIINT для CPU C28x. Сигналы о менее критичных одиночных ошибках поступают в блок PIE, где они могут приводить к генерации маскируемых прерываний для CPU C28x.

Доступ к разделяемым ресурсам и аналоговой периферии из CPU Cortex-M3 и CPU C28x

Микроконтроллер имеет несколько специальных областей памяти, общим объемом до 64 кбайт, и ряд цифровых и аналоговых периферийных модулей, которые доступны и для главной, и для управляющей подсистемы. Они сгруппированы в блок разделяемых ресурсов и аналоговую подсистему.

Блок разделяемых ресурсов состоит из регистров межпроцессорного обмена данными (IPC), ОЗУ сообщений MTOC Message RAM, ОЗУ сообщений CTOM Message RAM и 8 индивидуально конфигурируемых блоков разделяемого ОЗУ (Shared RAM). Области ОЗУ блока разделяемых ресурсов имеют схему контроля четности.

Доступ к ОЗУ сообщений и разделяемым ОЗУ может осуществляться как от CPU Cortex-M3/μDMA, так и от CPU C28x/DMA. ОЗУ сообщений MTOC Message RAM предназначено для передачи данных от главной подсистемы к управляющей и имеет доступ на чтение/запись от Cortex-M3/μDMA и только на чтение от C28x/DMA. ОЗУ сообщений CTOM Message RAM предназначено для передачи данных от управляющей к главной подсистеме и имеет доступ на чтение/запись от C28x/DMA и только на чтение от Cortex-M3/μDMA.

Регистры IPC обеспечивают до 32 каналов с квитированием для координации обмена данными путем опроса областей ОЗУ сообщений. Четыре из этих каналов продублированы четырьмя прерываниями в блоке распространения прерываний от периферийных устройств (PIE) со стороны управляющей подсистемы и четырьмя прерываниями в NVIC со стороны главной подсистемы (для уменьшения задержек, связанных с опросом).

Восемь блоков разделяемого ОЗУ напоминают ОЗУ сообщений тем, что данные в них передаются только в одну сторону. Однако направление передачи данных можно установить для каждого блока индивидуально: либо от главной подсистемы к управляющей, либо от управляющей к главной подсистеме.

Доступ к аналоговым модулям возможен как со стороны CPU Cortex-M3/μDMA, так и со стороны CPU C28/DMA. Процессор Cortex-M3 имеет доступ к шине ACIB через системную шину, а блок μDMA Cortex-M3 — через шину μDMA Cortex-M3. Процессор C28x имеет доступ к шине ACIB через шину памяти C28x, а блок DMA C28x — через шину DMA C28x.

Аналоговая подсистема

Аналоговая подсистема содержит периферийные блоки АЦП ADC1 и ADC2 и шесть аналоговых компараторов, которые доступны для обеих подсистем — Cortex-M3 и C28x — через шину ACIB. Шина ACIB осуществляет арбитраж доступа к регистрам АЦП и аналогового компаратора между обращениями к шине со стороны CPU/μDMA главной подсистемы и обращениями со стороны CPU/DMA управляющей подсистемы. Для управления доступом шина ACIB передает сигналы запуска SOC (Start-of-Conversion, начало преобразования) к аналоговой подсистеме и возвращает прерывания EOC (End-of-Conversion, окончание преобразования) от АЦП как к главной, так и к управляющей подсистеме в зависимости от того, какая из подсистем запустила преобразование.

Имеется 31 возможный источник для сигналов SOC от подсистемы C28x, которые отображаются на 8 возможных сигналах SOC внутри аналоговой подсистемы (разделяемые между АЦП ADC1 и ADC2 и шестью аналоговыми компараторами).

Иными словами, 8 источников прерываний EOC от ADC1 и 8 источников прерываний EOC от ADC2 объединяются по схеме И посредством шины ACIB, создавая 8 прерываний, отправляемых в главную и управляющую подсистемы. Внутри подсистемы C28x все 8 прерываний EOC поступают в блок PIE, но только 4 из 8 поступают в блок DMA C28x.

На рис. 4 показана структура аналоговой подсистемы микроконтроллеров Concerto.

Структура аналоговой подсистемы F28M35x

Рис. 4. Структура аналоговой подсистемы F28M35x

АЦП ADC1 и ADC2

Модули ADC1 и ADC2 представляют собой 12-разрядные АЦП с 16 входными аналоговыми каналами каждый, 10 из которых можно подключить к выводам микроконтроллера. Один из каналов ADC1, не подключаемый к выводам микроконтроллера, предназначен для обслуживания внутреннего датчика температуры. Входные аналоговые сигналы поступают на два УВХ (Sample-and-Hold, S/H, устройство выборки-хранения) — A и B. Выходные сигналы УВХ преобразуются с помощью двух 12-разрядных АЦП в цифровые значения, которые запоминаются в регистрах результата АЦП ADC1 и ADC2.

Два УВХ позволяют одновременно оцифровывать 2 аналоговых сигнала. Последовательность преобразования сигналов с одиночных каналов или пар каналов задается с помощью специальных цепочек (очередей). Аналого-цифровое преобразование запускается сигналом SOC от главной или управляющей подсистемы. Прерывания EOC от АЦП сообщают главной и управляющей подсистемам, что результат преобразования готов и может быть считан из регистров результатов АЦП ADC1 и ADC2.

Аналоговый компаратор + ЦАП

Шесть блоков аналоговых компараторов позволяют независимо сравнивать уровни сигналов на шести парах аналоговых входов. Результаты сравнения доступны на шести цифровых выходах. Выбор внешних аналоговых входов, уровни напряжения на которых будут сравниваться компараторами, осуществляется мультиплексорами AIO_MUX1 и AIO_MUX2. Шесть цифровых сигналов с выходов компараторов поступают в блок GPIO_MUX2, где они могут быть перенаправлены на любые шесть из восьми возможных выводов микроконтроллера.

Выходы компараторов можно использовать для блокировки выходов ePWMA/B C28x. Для этого необходимо соединить между собой внешними печатными проводниками соответствующие выводы блока GPIO_MUX2 с выводами блока GPIO_MUX1 и сконфигурировать выбранные выводы блока GPIO_MUX1 как входы блокировки ePWM.

Общая шина аналогового интерфейса

Общая шина аналогового интерфейса (ACIB) соединяет главную и управляющую подсистемы с аналоговой подсистемой. Она позволяет блокам CPU Cortex-M3/μDMA и CPU C28x/DMA получать доступ к регистрам аналоговой подсистемы для отправки в аналоговую подсистему запускающих сигналов SOC и получения прерываний конца преобразования EOC. Для чтения/записи регистров аналоговой подсистемы ядро Cortex-M3 использует свою системную шину и шину μDMA. Ядро C28x для чтения/записи тех же регистров аналоговой подсистемы использует шину памяти и шину DMA. Шина ACIB осуществляет арбитраж между возможными одновременными обращениями со стороны главной/управляющей подсистемы к ACIB для доступа к регистрам АЦП и аналоговых компараторов аналоговой подсистемы.

Дополнительно ACIB преобразует 31 запускающий сигнал SOC от управляющей подсистемы для 8 получателей сигналов запуска SOC внутри аналоговой подсистемы (разделенных между АЦП ADC1, ADC2 и аналоговыми компараторами) и до 16 источников прерываний EOC от АЦП из аналоговой подсистемы для 8 получателей внутри главной и управляющей подсистем. Восемь прерываний АЦП образуются путем объединения по И 8 сигналов EOC ADC1 и 8 сигналов EOC ADC2.

Линии ввода/вывода общего назначения (GPIO)

Большинство линий ввода/вывода MCU Concerto можно сконфигурировать как программируемые линии GPIO. Исключение составляют выводы X1 и X2 кварцевого генератора, выводы цифрового (X—R—S) и аналогового (A—R—S) сброса, выводы управления внутренним стабилизатором напряжения V—R—EG—12—E—N и V—R—EG—18—E—N и 5 выводов интерфейса JTAG. Оставшиеся 74 линии GPIO сгруппированы в два программируемых блока: блок GPIO_MUX1 (66 выводов) и блок GPIO_MUX2 (8 выводов). Дополнительно доступны 8 вторичных линий GPIO: 4 линии через блок AIO_MUX1 и 4 линии через блок AIO_MUX2.

На рис. 5 показаны линии GPIO и другие выводы.

Линии GPIO и другие выводы

Рис. 5. Линии GPIO и другие выводы

Блок мультиплексора цифровых выводов GPIO_MUX1

Для каждой из 66 линий блока GPIO_MUX1 можно назначить выполняемые функции: линии периферийного устройства Cortex-M3/C2x; одного из 12 входов блокировки ePWM; одного из 6 входов eCAP; одного из 3 входов внешних прерываний для PIE C28x; сигнала выхода из режима ожидания (LMPWAKE); одного из 64 входов/выходов общего назначения или комбинации всего вышеперечисленного. К каждой линии GPIO_MUX1 можно подключить подтягивающий резистор. По умолчанию после сброса все подтягивающие резисторы отключены, и все выводы блока GPIO_MUX1 настроены на работу с периферийными устройствами Cortex-M3 (но не с периферийными устройствами C28x).

Блок мультиплексора цифровых выводов GPIO_MUX2

Для каждой из 8 линий блока GPIO_MUX2 можно назначить выполняемые функции: одного из 8 входов/выходов общего назначения или одного из 6 выходов COMPOUT аналоговых компараторов. К каждой линии GPIO_MUX2 можно подключить подтягивающие резисторы. После сброса все линии блока GPIO_MUX2 сконфигурированы как аналоговые входы, и функции GPIO отключены. Блок GPIO_MUX2 программируется через собственный набор регистров, отличающихся от регистров, используемых для программирования блока GPIO_MUX1.

Блоки мультиплексора аналоговых выводов AIO_MUX1 и AIO_MUX2

Для 10 линий каждого из блоков AIO_MUX1 и AIO_MUX2, посредством специальных регистров, можно назначить функции: 10 аналоговых входов модуля АЦП ADC1; 6 аналоговых входов аналоговых компараторов и 4 входов или 4 выходов общего назначения. Следует отметить, что хотя блоки AIO_MUX1 и AIO_MUX2 имеют такие названия из-за прохождения через них аналоговых сигналов, линии GPIO все еще остаются цифровыми, хотя и с меньшим количеством функций, чем в блоках GPIO_MUX1 и GPIO_MUX2. Например, они не имеют подтягивающих резисторов. После сброса все линии блоков AIO_MUX1 и AIO_MUX2 сконфигурированы как аналоговые входы, и функции GPIO отключены. Каждый из блоков AIO_MUX1 и AIO_MUX2 программируется с помощью собственного набора регистров, которые отличаются один от другого.

Заключение

Во второй части будут рассмотрены подсистемы, обеспечивающие надежность работы как отдельных функциональных блоков, так и всего микроконтроллера.

Основные обозначения и сокращения на рисунках

ACIB Analog Common Interface Bus Общая шина аналогового интерфейса
  Analog Comparator Аналоговый компаратор
ADC Analog-to-Digital Converter Аналого-цифровой преобразователь (АЦП)
  Analog Peripherals Аналоговые периферийные модули
  Analog Subsystem Аналоговая подсистема
  Boot ROM Загрузочное ПЗУ
  Bus Fault Сбой на шине
  Bus Fault Exception Исключение сбоя на шине
  Clocking Block Блок тактирования
  Code Secure Memory Код защиты памяти
  Complex Math Операции с комплексными числами
  Control Peripherals Периферийные модули управления
  Control Subsystem Управляющая подсистема
  CTOM Message RAM ОЗУ сообщений от управляющей подсистемы к главной подсистеме
  Compare Сравнение
CRC Cyclic Redundancy Check Контрольная сумма
  Clock Gating Выбор источника тактового сигнала
DAC Digital-to-Analog Converter Цифро-аналоговый преобразователь (ЦАП)
  Deep Sleep Режим глубокого сна
DC Device Configuration (register) Регистр конфигурации устройства
  Deep Sleep Mode Режим глубокого сна
DMA Direct Memory Access Прямой доступ к памяти (ПДП)
  DMA Bus Шина ПДП
DSP Digital Signal Processing Цифровая обработка сигналов (ЦОС)
ECC Error Correction Code Коды коррекции ошибок
eCAP Enhanced Capture Расширенный блок захвата
ePWM Enhanced Pulse Width Modulator Расширенный широтно-импульсный модулятор
eQEP Enhanced Quadrature Encoder Расширенный квадратурный энкодер
EOC End-of-Conversion Конец преобразования
EPI External Peripheral Interface Интерфейс внешней периферии
  External Reset Внешний сигнал сброса
  Floating-Point Арифметика с плавающей точкой
GPIO General-Purpose Input/Output (Pins) Линии ввода/вывода общего назначения
  General-Purpose Timer Таймер общего назначения
  Hard Fault Аппаратный cбой
  Idle Mode Режим простоя
I2C Inter-integrated Circuits Интерфейс I2C
IPC Interprocessor Communications Канал межпроцессорного обмена данными
  Local Memory Локальная память
  Master Subsystem Главная подсистема
  Master Clocks Block Главный блок тактирования
  Master Subsystem Clocking Главная подсистема тактирования
  Missing Clock Circuit Схема обнаружения пропадания сигнала тактирования
McBSP Multi-Channel Buffered Serial Port Многоканальный буферизованный последовательный порт
  Main Oscillator Главный тактовый генератор
  Main PLL Главный генератор с ФАПЧ
  Memory Bus Шина памяти
  Message RAM ОЗУ сообщений
MPU Memory Protection Unit Блок защиты памяти
MSPS Mega Samples Per Second Миллион отсчетов в секунду
  MTOC Message RAM ОЗУ сообщений от главной подсистемы к управляющей
NMI Non-maskable interrupt Немаскируемое прерывание
NMI WDT NMI Watchdog Сторожевой таймер с немаскируемым прерыванием
NVIC Nested Vectored Interrupt Controller Контроллер вложенных векторных прерываний
  Parity Четность
  Peripherals Периферийные модули
PHY Physical Физический
PIE Peripheral Interrupt Expansion Распространение прерываний от периферийных устройств
  Peripheral software resets Программный сброс периферийных модулей
  Global peripheral enables Включение глобальных периферийных модулей
  Peripheral clock enables Включение тактирования периферийных устройств
PLL   Фазовая автоподстройка частоты (ФАПЧ)
POR Power-On Reset Сброс при включении
  Programmable priority interrupts Программируемые приоритеты прерываний
  Fixed priority interrupts Фиксированные приоритеты прерываний
PWM Pulse Width Modulator Широтно-импульсный модулятор (ШИМ)
  Qualification Block Блок квалификации
RAM Random Access Memory Оперативное запоминающее устройство (ОЗУ)
  Reset Block Блок сброса
  Reset input signal status Сброс состояния входного сигнала
  Run Mode Рабочий режим
S/H Sample-and-Hold Circuit Устройство выборки-хранения (УВХ)
  Secure Flash Защищенная Flash-память
  Secure RAM Защищенное ОЗУ
  Security Zone Зона защиты
  Sleep Режим сна
SPI Serial Peripheral Interface Последовательный периферийный интерфейс (ППИ)
  Shared RAM Разделяемое ОЗУ
  Shared Resources Разделяемые ресурсы
  Standby Mode Режим ожидания
  Standby Mode Wakeup Выход из режима ожидания
SOC Start-of-Conversion Начало преобразования
  Sets default values Установка значений по умолчанию
  Software Программное обеспечение
SSI Synchronous Serial Interfaces Синхронный последовательный интерфейс
SoC System-on-Chip Система на кристалле (СнК)
  System Bus Системная шина
UART Universal Asynchronous Receiver/Transmitters Универсальный асинхронный приемник/передатчик (УАПП)
USB Universal Serial Bus Универсальная последовательная шина
  USB PLL Генератор для USB с ФАПЧ
WDT Watchdog Timer, Watchdog Сторожевой таймер
  Parity Error Checking Схема контроля четности
  Channel Канал
  Data Данные
  Instructions Инструкции
  Execution of… instruction Выполнение инструкции…
  Activates the… signal Активизация сигнала…
  Request to wake from Indle mode Запрос вывода микроконтроллера из режима простоя
  Request to wake from Standby mode Запрос вывода микроконтроллера из режима ожидания
  Assert any interrupt to exit sleep or deep sleep Выбор любых прерываний для выхода из режима сна или глубокого сна

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

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