Новые двухъядерные микроконтроллеры
для систем управления F28M35x семейства Concerto корпорации Texas Instruments
Андрей САМОДЕЛОВ
Несмотря на значительно возросшую производительность микроконтроллеров, существует ряд задач, когда одно ядро не справляется с их решением. К таким задачам относится реализация сложных алгоритмов управления. При этом часто необходимо проводить одновременную обработку прерываний от модулей обмена данными, наблюдение за объектом управления и обсчет алгоритмов управления. При решении подобных задач приходится использовать два микроконтроллера: один для обмена данными (как правило, 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.
Микроконтроллеры 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).
Л Л
1,8 В 1,2 В
VREG VREG
BOOT ROM
10 ADC inputs
TEMP SENS
ADC_1 MODULE
fi—N V-/
mdma
pDMABUS
BUS BRIDGE
О
COMP INPUTS
comp
inputs
Cortex-M3 CPU
SECURE FLASH
512KB (ECC)
REGS ONLY
l-CODE BUS D-CODE BUS
INTER-PROCESSOR COMMUNICATION
«
r/l—N "4—/
Cortex-M3 SYSTEM BUS
SECURE 01 RAM 8KB (ECC)
SECURE CO RAM 8KB (ECC)
RAM 8KB
(parity)
RAM 8KB
(parity)
А ЛЛ
iL
iL
so S1 S2 S3 S4 S5 S6 S7
8KB 8KB 8KB 8KB 8KB 8KB 8KB 8KB
MTOC MSG RAM (parity) 2KB
CTOM MSG RAM (parity) 2KB
INTER-PROCESSOR COMMUNICATION
S0-S7 SHARED RAM (parity)
C28x DMA BUS
т^А"
COMP INPUTS
10 ADC INPUTS
ADC_2 MODULE
A—К V-/
C28x DMA
ANALOG SUBSYSTEM
C28x MEMORY BUS
С28х
С28х CPU С28х
VCU I « I FPU
pf3
66 PINS (TOTAL)
BOOT ROM
SECURE FLASH
512KB (ECC)
SECURE L1 RAM 8KB (ECC)
SECURE L0 RAM 8KB (ECC)
RAM 8KB (parity)
RAM 8KB (parity)
RAM 2KB
(ecc)
RAM 2KB
(ECC)
Рис. 1. Блок-схема микроконтроллеров Concerto
Блок сброса отвечает на немаскируемое прерывание сброса от сторожевого таймера NMI WDT, внешний сброс и другие сигналы о критических состояниях и переводит процессорные подсистемы и остальные блоки микросхемы в известное начальное состояние. Для обеспечения безопасности хранения и передачи данных внутри микроконтроллера используются коды коррекции ошибок (ECC), контроль четности (Parity) и коды защиты памяти. Для защиты Flash-памяти микроконтроллера от несанкционированного доступа извне можно использовать 128-битный пароль.
Хотя главная и управляющая подсистемы имеют каждая свою локальную память и собственный набор периферийных модулей, они также могут совместно использовать данные и сигналы посредством блока межпроцессорной синхронизации и разделяемой памяти. Кроме того, обе подсистемы имеют совместный доступ к высокопроизводительной аналоговой подсистеме через общую шину аналогового интерфейса (Analog Common Interface Bus, ACIB).
Аналоговая подсистема состоит из двух 12-разрядных АЦП с 16 входными каналами и 6 аналоговых компараторов.
В таблице приведены особенности микроконтроллеров серии F28M35Exxx.
Перейдем к детальному рассмотрению основных функциональных блоков микроконтроллеров серии F28M35x семейства Concerto.
Главная подсистема
Главная подсистема состоит из ядра Cortex-M3, блока прямого доступа к памяти |iDMA, контроллера вложенных векторных прерываний NVIC, периферийных модулей Cortex-M3 и локальной памяти,
Таблица. Особенности микроконтроллеров 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
0ЕР/0Е1 3
АЦП, разрешение 2x12 разрядов
АЦП, каналов 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
Температурный диапазон, °С -40... +125
Примечание. В первой строке таблицы даны только окончания наименований микроконтроллеров. Таким образом, окончание М32С будет соответствовать полному наименованию F28M35M32C.
содержащей до 64 кбайт загрузочного ПЗУ, до 512 кбайт Flash-памяти с ECC, до 32 кбайт ОЗУ с ECC-контролем четности и до 2 кбайт ОЗУ сообщений IPC. Ядро Cortex-M3 и блок |iDMA имеют доступ к управляющей подсистеме через разделяемые ресурсы (канал межпроцессорного обмена данными — IPC, ОЗУ сообщений, разделяемое ОЗУ) и обмениваются данными с периферийными модулями аналоговой подсистемы через шину ACIB. Кроме того, главная подсистема может принимать сигналы от блока NMI и посылать сигналы в блок сброса.
На рис. 2 показана структура главной подсистемы микроконтроллеров Concerto.
Блок микроконтроллера Cortex-M3
32-разрядный процессор Cortex-M3 имеет высокую производительность, быструю детерминированную реакцию на прерывания и доступ к различным периферийным модулям для обмена данными (включая Ethernet и USB). В состав ядра Cortex-M3 входит блок защиты памяти (MPU), который обеспечивает привилегированный режим работы для защищенных операционных систем. Прилегающий к MPU мост между шинами маршрутизирует программные инструкции и данные от шин I-CODE (выборка инструкций и векторов) и D-CODE (выборка данных
и доступ для отладки), которые подключены к загрузочному ПЗУ и к Flash-памяти соответственно. Другие данные обычно передаются через системную шину Cortex-M3, подключенную к локальному ОЗУ. Системная шина подключена также к блоку разделяемых ресурсов (который доступен и для управляющей подсистемы) и, через шину ACIB, к аналоговой подсистеме. Другой мост между шинами разрешает доступ к периферийным модулям главной подсистемы посредством шины APB или шины AHB, как со стороны системной шины CPU Cortex-M3, так и со стороны шины |iDMA.
Большинство прерываний к 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
Модуль |iDMA Cortex-M3 предназначен для передачи данных между периферийными модулями и/или памятью без участия со стороны CPU Cortex-M3.
Блок NVIC управляет назначением приоритетов и обработкой прерываний для CPU Cortex-M3.
Для координации запросов на обмен данными с помощью |iDMA периферийные модули Cortex-M3 используют сигналы REQ/DONE. Если канал DMA разрешен для использования этим периферийным модулем, то сигналы REQ/DONE, формируемые периферийным модулем, будут запускать обмен данными. После окончания обмена формируется запрос IRQ, который может быть передан от блока ^DMA к блоку NVIC, чтобы информировать CPU Cortex-M3 о завершении обмена данными. Если канал DMA не разрешен для этого периферийного модуля, то сигналы REQ/DONE будут непосредственно формировать запросы IRQ к блоку NVIC. В результате обмен данными будет осуществляться под управлением CPU Cortex-M3. Для периферийных модулей, которые не поддерживаются в блоке |iDMA, запросы IRQ передаются непосредственно в блок NVIC, минуя блок DMA. Это справедливо для обоих сторожевых таймеров (WDT0 и WDT1), сторожевого таймера NMI WDT, CAN-контроллера, модуля I2C и модулей АЦП, генерирующих прерывания ADCINT [8:1] от аналоговой подсистемы. Сторожевой таймер с немаскируемым прерыванием (NMI WDT) не посылает сигналов ни в блок |iDMA, ни в блок NVIC (только в блок сброса).
Локальные периферийные модули Cortex-M3
В состав локальных периферийных модулей Cortex-M3 входят 2 сторожевых таймера (WDT0 и WDT1), сторожевой таймер с немаскируемым прерыванием NMI WDT, 4 таймера общего назначения, 4 модуля SSI, 2 CAN-контроллера, 5 UART, 2 модуля I2C, модуль Ethernet, модуль USB + PHY, интерфейс внешней периферии (EPI) и блок вычисления контрольных сумм (|iCRC). Модули USB и EPI доступны через шину AHB. Остальные периферийные модули доступны через шину APB. Доступ к шинам APB и AHB осуществляется через системную шину CPU или шину |iDMA посредством моста.
FIXED
PRIORITY
INTERRUPTS
NVIC
(NESTED VECTORED INTERRUPT CONTROLLER)
CTOM IPC (4:1)
FLSINGER APB BUS (REG ACCESS ONLY) ■
IPC REGS
S0-S7 SHARED RAM (parity)
MTOC MSG RAM
(parity)
LOCAL MEMORY
CTOM MSG RAM (parity)
7V"
BOOT ROM
RAMSINGERR M3uDMABUS
M3 CPU
SYS TICK DBG MONITOR USAGE FAULT SVCALL PENDING SV
PROGRAMMABLE PRIORITY INTERRUPTS
MEM MNGMT
SECURE FLASH (ECC)
SECURE C0/C1 RAM (ECC)
M3 SYSTEM BUS
C2/C3 RAM (parity)
MPU/ BRIDGE
DATA
INSTRUCTION
SHARED RESOURCES
D-CODE BUS
__
C28SUBSYSTEM
RAMUNCERR CERR FLASHUNCERR
BUS CNTRL/FAULT LOGIC
RAMACCVIOL RAMUN
Рис. 2. Структура главной подсистемы F28M35x
Процессор Cortex-M3 имеет полный доступ ко всем периферийным модулям, в то время как блок |iDMA — к большинству из них, за исключением ^CRC, WDT0, WDT1, NMI WDT, CAN и I2C. Периферийные модули Cortex-M3 подключаются к выводам микросхемы Concerto через блок мультиплексора GPIO_MUX1. Большинство периферийных модулей может генерировать сигналы для блоков |iDMA и/или 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 доступно также для блока |ЮМА.
При доступе к локальной памяти могут генерироваться два типа сигналов коррекции данных: неисправимая ошибка и одиночная ошибка. Сигналы о неисправимых ошибках (включая сигналы об ошибках в разделяемой памяти) создают исключения сбоя на шине (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.
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++.
Такая архитектура позволяет разрабатывать программное обеспечение для прикладных систем, включая любые математические ал-
МЗ SUBSYSTEM
ANALOG SUBSYSTEM
SHARED RESOURCES
RAMUNCERF^ c28
S0-S7 MTOC CTOM
IPC SHARED MSG MSG
REGS RAM RAM RAM
(Parity) (Parity) (Parity)
RAMUNCERR
FLASHUNCERR
С 28 LOCAL MEMORY
BOOT ROM
SECURE FLASH (ECC)
MTOCIPC (4:1)
SECURE L0/L1 RAM
(ECC)
L2/L3 RAM (parity)
FLSINGER FLFSM RAMACCVIOL RAMSINGERR LVF LUF
M0/M1 RAM (ECC)
ADCINT (8:1)
PIE (PERIPHERAL INTERRUPT EXPANSION)
7V
PIEINTRS (12:1)
SOCA (9:1), SOCB (9:1)
C28 PERIPHERALS
PERIPHERAL INTERUPTS
PERIPHERAL INTERUPTS
A
C28 DMA BUS
C28 MEMORY BUS
DINTCH (6:1)
C28 FPU
ADCINT (4:1)
MXINTA. MRINTA
SOCA (9:1), SOCB (9:1^
C28 DMA
C28 CPU
C28 VCU
EQEP ERR
ECCDBLERR
GPTRIP
(12:1)
GPTRIP
(12:7)
GPTRIP (12:4)
M3 NMI C28 NMI
Рис. 3. Структура управляющей подсистемы F28M35x
горитмы, исключительно на языке высокого уровня. Микроконтроллер одинаково эффективен как в задачах математической обработки сигналов, так и в задачах управления системами. Блок аппаратного умножения 32x32 разряда с накоплением и 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.
<=í>
. COMPOUT(6:1)
1
СОМРА (3:1)
ADC1INA0 ADC1INA1 ADC1INA3 ADC1INA4 ADC1INA6 ADC1INA7
ADC1INB0 ADC1INB3 ADC1INB4 ADC1INB7
ADC 1
TRIGS (8:1)
СОМРВ (3:1)
СОМРА (6:4)
ADC1INT (8:1)
TRIGS (8:2)
СОМРВ
(6:4)
ADC2INT (8:1)
ADC2INA0 ADC2INA2 ADC2INA3 ADC2INA4 ADC2INA6 ADC2INA7
ADC2INB0 ADC2INB3 ADC2INB4 ADC2INB7
I GPIO<^X MUX
4
J'
ANALOG COMMON INTERFACE BUS
ID-
EOC INTERRUPTS (8:1)
SOC TRIGGERS (8:1)
M3MDMABUS
M3 uDMA
M3 SYSTEM BUS
M3 CPU
ADCINT (8:1)
Л
С28 MEMORY BUS С28 PIE
CPU
C28 DMA BUS
C28 DMA
ADCINT (8:1)
ADCINT (8:1)
ADCINT (4:1)
TINT (2:0)
SOC (8:1) A
SOC (9:1) В
TIMER
(3)
EPWM (9)
Рис. 4. Структура аналоговой подсистемы F28M35x
Модуль прямого доступа к памяти 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.
Доступ к разделяемым ресурсам и аналоговой периферии из CPUCortex-M3 и CPUC28x
Микроконтроллер имеет несколько специальных областей памяти, общим объемом до 64 кбайт, и ряд цифровых и аналоговых периферийных модулей, которые доступны и для главной, и для управляющей подсистемы. Они сгруппированы в блок разделяемых ресурсов и аналоговую подсистему.
Блок разделяемых ресурсов состоит из регистров межпроцессорного обмена данными (IPC), ОЗУ сообщений MTOC Message RAM, ОЗУ сообщений CTOM Message RAM и 8 индивидуально конфигурируемых блоков разделяемого ОЗУ (Shared RAM). Области ОЗУ блока разделяемых ресурсов имеют схему контроля четности.
Доступ к ОЗУ сообщений и разделяемым ОЗУ может осуществляться как от CPU Cortex-M3/|DMA, так и от CPU C28x/DMA. ОЗУ сообщений MTOC Message RAM предназначено
для передачи данных от главной подсистемы к управляющей и имеет доступ на чтение/запись от Cortex-M3/|iDMA и только на чтение от C28x/DMA. ОЗУ сообщений CTOM Message RAM предназначено для передачи данных от управляющей к главной подсистеме и имеет доступ на чтение/запись от C28x/DMA и только на чтение от Cortex-M3/|iDMA.
Регистры 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
Основные обозначения и сокращения на рисунках
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 Аппаратный сбой
Idle Mode Режим простоя
I2C Inter-integrated Circuits Интерфейс 12С
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 Универсальная последовательная шина
USBPLL Генератор для 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 Выбор любых прерываний для выхода из режима сна или глубокого сна
1
MUX
СОМРА (3:1)
ADC1INA0 ADC1INA1 ADC1INA3 ADC1INA4 ADC1INA6 ADC1INA7
ADC1INB0 ADC1INB3 ADC1INB4 ADC1INB7
USB PLL
« с сл со
го о о о О го о i о п
Cfl 'н
S S
MIIRX3 MIIRX2 MIIRX1 MIIRX0 Mil RXER S s Mil RXCK S Ü n 7ч Mil CRS Mil COL и I < z Mil MDIO Mil TXER TJ i -< 1 Mil M DC MIITXEN MIITX3 MIITX2 Mil TX1
z
COMPB
(3:1)
мз
uDMA
«
COMPOUT (6:1)
UART
(5)
CAN
(2)
SSI (4)
[ü¡K=¡>C
СОМРА (6:4)
COMPB
(6:4)
EPWM (9)
XI NT
(3)
ECAP EQEP
(6) (3)
ADC2INA0 ADC2INA2 ADC2INA3 ADC2INA4 ADC2INA6 ADC2INA7
ADC2INB0 ADC2INB3 ADC2INB4 ADC2INB7
f
Рис. 5. Линии GPIO и другие выводы
главной подсистемы и обращениями со стороны 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.
АЦП ADC1 и ADC2
Модули ADC1 и ADC2 представляют собой 12-разрядные АЦП с 16 входными аналоговыми каналами каждый, 10 из которых можно подключить к выводам микроконтроллера. Один из каналов ADC1, не подключаемый к выводам микроконтроллера, предназначен для обслуживания внутреннего датчика температуры. Входные аналоговые сигналы поступают на два УВХ (Sample-and-Hold, S/H, устройство выборки-хранения) — A и B. Выходные сигналы УВХ преобразуются с помощью двух 12-разрядных АЦП в цифровые значения, которые запоминаются в регистрах результата АЦП ADC1 и ADC2.
Два УВХ позволяют одновременно оцифровывать 2 аналоговых сигнала. Последовательность преобразования сигналов с одиночных каналов или пар каналов задается с помощью специальных цепочек (очередей). Аналого-цифровое преобразование запускается сигналом SOC от главной или управляющей подсистемы. Прерывания EOC от АЦП сообщают главной и управляющей подсистемам, что результат преобра-
зования готов и может быть считан из регистров результатов АЦП ADC1 и ADC2.
Аналоговый компаратор + ЦАП
Шесть блоков аналоговых компараторов позволяют независимо сравнивать уровни сигналов на шести парах аналоговых входов. Результаты сравнения доступны на шести цифровых выходах. Выбор внешних аналоговых входов, уровни напряжения на которых будут сравниваться компараторами, осуществляется мультиплексорами AЮ_MUX1 и AЮ_MUX2. Шесть цифровых сигналов с выходов компараторов поступают в блок GPЮ_MUX2, где они могут быть перенаправлены на любые шесть из восьми возможных выводов микроконтроллера.
Выходы компараторов можно использовать для блокировки выходов ePWMA/B C28x. Для этого необходимо соединить между собой внешними печатными проводниками соответствующие выводы блока GPЮ_MUX2 с выводами блока GPЮ_ MUX1 и сконфигурировать выбранные выводы блока GPЮ_MUX1 как входы блокировки ePWM.
Общая шина аналогового интерфейса
Общая шина аналогового интерфейса (ACIB) соединяет главную и управляющую подсистемы с аналоговой подсистемой. Она позволяет блокам CPU Cortex-M3/|iDMA и CPU C28x/DMA получать доступ к регистрам аналоговой подсистемы для отправки в аналоговую подсистему запускающих сигналов SOC и получения прерываний конца преобразования EOC. Для чтения/записи регистров аналоговой подсистемы ядро Cortex-M3 использует свою системную шину и шину |iDMA. Ядро 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 кварцевого ге-
нератора, выводы цифрового (XRS) и аналогового (ARS) сброса, выводы управления внутренним стабилизатором напряжения VREG12EN и RREG18EN и 5 выводов интерфейса JTAG. Оставшиеся 74 линии GPIO сгруппированы в два программируемых блока: блок GPIO_MUX1 (66 выводов) и блок GPIO_MUX2 (8 выводов). Дополнительно доступны 8 вторичных линий GPIO: 4 линии через блок AIO_MUX1 и 4 линии через блок AIO_MUX2.
На рис. 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
аналоговых компараторов. К каждой линии GPЮ_MUX2 можно подключить подтягивающие резисторы. После сброса все линии блока GPЮ_MUX2 сконфигурированы как аналоговые входы, и функции GPЮ отключены. Блок GPЮ_MUX2 программируется через собственный набор регистров, отличающихся от регистров, используемых для программирования блока GPЮ_MUX1.
Блоки мультиплексора аналоговых выводов AЮ_MUX1 и AЮ_MUX2
Для 10 линий каждого из блоков АЮ_ МиХ1 и АЮ_МиХ2, посредством специальных регистров, можно назначить функции: 10 аналоговых входов модуля АЦП ADC1; 6 аналоговых входов аналоговых компараторов и 4 входов или 4 выходов общего назначения. Следует отметить, что хотя блоки АЮ_МиХ1 и АЮ_МиХ2 имеют такие названия из-за прохождения через них аналоговых сигналов, линии GPЮ все еще остаются цифровыми, хотя и с меньшим количеством функций, чем в блоках GPЮ_MUX1 и GPЮ_ МиХ2. Например, они не имеют подтягивающих резисторов. После сброса все линии блоков АЮ_МиХ1 и АЮ_МиХ2 сконфигурированы как аналоговые входы, и функции GPЮ отключены. Каждый из блоков АЮ_МиХ1 и АЮ_МиХ2 программируется с помощью собственного набора регистров, которые отличаются один от другого.
Заключение
Во второй части будут рассмотрены подсистемы, обеспечивающие надежность работы как отдельных функциональных блоков, так и всего микроконтроллера. ■