Окончание. Начало в № 10 2011
Новые двухъядерные микроконтроллеры
для систем управления F28M35x семейства Concerto корпорации Texas Instruments
Андрей САМОДЕЛОВ
Andrew.Samodelov@mart.ru
В первой части статьи был дан общий обзор микроконтроллеров семейства Concerto и рассмотрены функциональные подсистемы, обеспечивающие взаимодействие микроконтроллеров с внешней средой. Во второй части речь пойдет о подсистемах, обеспечивающих надежность работы как отдельных функциональных блоков, так и всего микроконтроллера.
Немаскируемые прерывания главной подсистемы
Блок немаскируемых прерываний NMI Cortex-M3 генерирует немаскируемое прерывание M3NMIINT для CPU Cortex-M3 и сигнал M3NMI для NMI WDT в ответ на потенциально критические состояния, возникающие внутри или вне MCU Concerto. Когда разрешен ответ на прерывание M3NMIINT, CPU Cortex-M3 может рассмотреть условия NMI и отключить NMI WDT. Иначе счетчик NMI WDT Cortex-M3 переполнится, и в блок сброса будет передан сигнал сброса M3NMIRST.
На входы блока NMI Cortex-M3 поступают сигналы C28NMIRST, CLOCKFAIL, ACIBERR, VREGWARN и EXTGPIO. Сигнал C28NMIRST поступает из NMI WDT C28x и указывает на то, что C28x не может предотвратить переполнение счетчика NMI WDT C28x. Сигнал CLOCKFAIL поступает из главного блока тактирования и сообщает о пропадании сигнала главного тактового генератора. Сигнал ACIBERR сообщает о возникновении внештатных ситуаций на шине ACIB. На вход VREGWARN поступают сигналы о неполадках в системе электропитания. На вход EXTGPIO поступает сигнал о внешней опасности с блока GPIO_MUX1.
Доступ к блоку NMI Cortex-M3 осуществляется посредством регистров конфигурации NMI Cortex-M3, включая регистры MNMIFLG, MNMIFLGCLR и MNMIFLGFRC — для проверки битов флагов источников NMI, очистки флагов и принудительного перевода флагов в активное состояние соответственно.
Немаскируемые прерывания управляющей подсистемы
Блок немаскируемых прерываний NMI C28x генерирует немаскируемое прерывание C28NMIINT для CPU C28x и сигнал C28NMI для NMI WDT C28x в ответ на потенциально критические состояния, возникающие внутри MCU Concerto. Когда разрешен ответ на прерывание C28NMIINT, CPU C28x может рассмотреть условия NMI и отключить NMI WDT C28x. Иначе счетчик NMI WDT C28x переполнится, и сигнал сброса C28NMIRST будет передан в блок сброса и блок NMI Cortex-M3, где он может сгенерировать NMI для процессора Cortex-M3.
На входы блока NMI C28x поступают сигналы CLOCKFAIL, ACIBERR, RAMUNCERR, FLASHUNCERR и PIENMIERR. Сигнал CLOCKFAIL поступает из блока тактирования и сообщает о пропадании сигнала главного тактового генератора. ACIBERR сигнализирует о появлении внештатных состояний на шине ACIB. Сигналы
RAMUCERR и FLASHUNCERR сообщают о возникновении неисправимых ошибок при доступе к Flash-памяти или блокам ОЗУ (локальным или разделяемым). Сигнал PIENMIERR сообщает о возникновении ошибок при прохождении вектора NMI из блока PIE C28x.
Доступ к блоку NMI C28x осуществляется посредством регистров конфигурации NMI C28x NMI, включая регистры CNMIFLG, CNMIFLGCLR и CNMIFLGFRC — для проверки битов флагов источников NMI, очистки флагов и принудительного перевода флагов в активное состояние соответственно.
На рис. 6 показаны блоки NMI Cortex-M3 и NMI C28x.
Сброс подсистем
MCU Concerto имеет два вывода сброса: вывод XRS для сброса главной и управляющей подсистем и вывод —RS для сброса аналоговой подсистемы. Рекомендуется, чтобы эти выводы были соединены вместе проводящей дорожкой на печатной плате.
Вывод XRS может принимать сигнал сброса от внешнего источника или управляться сигналом сброса от источника внутри микросхемы. Поступающий на вывод XRS импульс сброса сбрасывает главную и управляющую подсистему. Импульс сброса может поступать на вывод XRS от блока контроля напряжения питания главной и управляющей подсистем. Импульс сброса может поступать на вывод XRS при срабатывании по тайм-ауту сторожевых таймеров WDT0, WDT1 или NMI WDT Cortex-M3.
Вывод —RS может принимать сигнал сброса от внешнего источника или управляться сигналом сброса от источника внутри микросхемы. Поступающий на вывод ARS импульс сброса сбрасывает аналоговую подсистему. Импульс сброса может поступать на вывод ARS от блока контроля напряжения питания аналоговой подсистемы.
На рис. 7 показана диаграмма сброса подсистем MCU Concerto.
Сброс подсистемы Cortex-M3
Блоки CPU Cortex-M3 и NVIC сбрасываются одновременно сигналом POR (Power-On Reset, сброс при включении) или сигналом сброса M3SYSRST. В обоих случаях CPU Cortex-M3 перезапускает выполнение программы с адреса, указанного вектором сброса в таблице векторов. В дальнейшем для определения источника сброса можно проверить состояние регистра. Сигнал M3SYSRST поступает также в периферийные модули Cortex-M3 и сбрасывает целиком всю подсистему Cortex-M3.
1.2V VREG
VREGWARN
МЗ NMI WDOG
M3NMI
M3NMIRST
NMI
О
M3NMI M3NMIINT
C28NMIRST
ACIB
ACIBERR
CLOCKS
CLOCKFAIL
МЗ CPU «— XRS
SHARED RAM
С28 LOCAL RAM
RAMUNCERR
C28 NMI
■ XRS
C28NMIINT C28NMI
RESET
XRS
C28 CPU «— XRS
PINMIERR
FLASHUNCERR
C28NMI
C28 FLASH
C28NMIRST
C28 NMI WDOG
Рис. 6. Структура блоков NMI Cortex-M3 и NMI C28x
Сигнал M3SYSRST имеет четыре возможных источника: XRS, —3WDOGS, M3XWRXXT и M3XXGXXT. Сигнал сброса M3XWDXCX5 является ответом на тайм-аут одного из двух сторожевых таймеров (WDT0, WDT1) или сторожевого таймера с немаскируемым прерыванием NMI WDT Cortex-M3. Сигнал сброса генерируется программно и выводится через NVIC. Сигнал сброса M3SWRST генерируется отладчиком и также выводится через NVIC. Кроме управления сигналом M3DBGRST, эти два сигнала сброса, в зависимости от значения бита MTOCRESDIS регистра CRESCNF, могут поступать в подсистему C28x и аналоговую подсистему.
Для селективного сброса подсистемы C28x от подсистемы Cortex-M3 можно установить бит M3RSNIN регистра CRESCNF, а установка бита ACIBRST того же самого регистра вызовет селективный сброс шины ACIB. Кроме того, для управления сигналами сброса в других частях микросхемы, CPU Cortex-M3 может обнаруживать сигнал сброса C28SYSRST в подсистеме C28x, проверяя значение бита CRES регистра CRESSTS.
Выполняемая CPU Cortex-M3 программа также может устанавливать биты регистра SRCR для селективного сброса отдельных периферийных модулей Cortex-M3, если их работа разрешена регистром конфигурации устройств (Device Configuration, DC).
Сброс подсистемы C28x
CPU C28x сбрасывается сигналом C28RSTIN, после чего CPU C28x сбрасывает подсистему C28x сигналом C28SYSRST. После сброса C28x начинает выполнение программы с верхней части таблицы векторов загрузочного ПЗУ.
Сигнал сброса C28RSTIN имеет 5 возможных источников: XRS, C28NMIWEI M3SWRST, M3DBGRS и M3RSNIN. Сигнал X28NMXWD формируется в ответ на условие тайм-аута со стороны NMI WDT C28x. Сигнал M3SWRST формируется программно и выводится через NVIC. Сигнал M3DBGXS формируется отладчиком и также выводится через NVIC. Чтобы попасть в подсистему C28x, эти сигналы вначале должны быть разрешены процессором Cortex-M3. Сигнал M3RSNIN поступает из подсистемы Cortex-M3 для селективного сброса подсистемы C28x в процессе выполнения кода процессором Cortex-M3.
Процессор C28x может наблюдать за внутренним сигналом сброса XCIBRST и состоянием вывода XRS, считывая значение регистра DEVICECNF.
Сброс аналоговой подсистемы и разделяемых ресурсов
Как аналоговая подсистема, так и ресурсы, разделяемые между подсистемами C28x и Cortex-M3 (IPC, MSG RAM, Shared RAM), сбрасываются с помощью сигнала сброса SRXRST. Кроме того, аналоговая подсистема может сбрасываться внутренним сигналом ACIBRST от подсистемы Cortex-M3 или внешним сигналом XRS, который подается на вывод XRS.
Сигнал SRXRST имеет три возможных источника: XRS, M3SWRST и M3DBGRS. Сигнал M3SWRST — это программно генерируемый сигнал сброса, выходящий из NVIC. Сигнал M3DBGRS — это генерируемый отладчиком сигнал сброса, также выходящий из NVIC. Для того чтобы эти два сигнала сброса могли поступать в аналоговую подсистему и разделяемые ресурсы, необходимо разрешить их прохождение посредством процессора Cortex-M3.
M3SWRST DC REG
SRCR REG M3
M3DBGRST SUBSYSTEM
(PERIPHERAL SOFTWARE RESETS)
ANALOG SUBSYSTEM
M3WDOGS POR
C28 CPU
ARS PIN
SHARED RESOURCES
C28 SUBSYSTEM
C28 NMI WDOG
Рис. 7. Диаграмма сброса подсистем MCU Concerto
Система тактирования
Система тактирования состоит из главного генератора, частота которого определяется либо частотой внешнего кварцевого резонатора, подключенного к выводам X1 и X2 микроконтроллера, либо частотой внешнего тактового генератора, сигнал которого подается на вывод X1. Выходной сигнал главного генератора OSCCLK поступает на блок главного ФАПЧ и блок USB ФАПЧ.
В качестве основного источника сигналов тактирования обычно используется внутренний сигнал PLLSYSCLK, который формируется из сигнала OSCCLK либо напрямую, либо после прохождения системы ФАПЧ (задается значением бита SPLLCKEN регистра SYSPLLCTL). Это происходит при делении его частоты на некоторый коэффициент, задаваемый значением, записанным в регистр SYSDIVSEL.
Тактирование главной подсистемы
В качестве сигнала тактирования основных блоков и периферийных модулей главной подсистемы используется сигнал PLLSYSCLK.
Для тактирования модулей USB + PHY (OTG), CAN1, CAN2 и блока WDT1 используется сигнал USBPLLCLK, который получается из сигнала OSCCLK после прохождения им блока USB ФАПЧ.
Кроме главного генератора, имеется дополнительный внутренний тактовый генератор, вырабатывающий 2 сигнала: 32KHZCLK и 10MHZCLK. Сигнал 10MHZCLK используется (в качестве резервного) специальной схемой обнаружения пропадания сигнала главного тактового генератора. При обнаружении пропадания тактового сигнала в качестве PLLSYSCLK используется сигнал 10MHZCLK. При этом в блок NMI и управляющую подсистему поступает сигнал CLKFAIL, который может блокировать выходы ePWM. При пропадании сигнала OSCCLK работа блока USB ФАПЧ и периферийных модулей, тактируемых сигналом USBPLLCLK, становится невозможной.
Сигналы вторичного тактового генератора 32KHZCLK и 10MMHZCLK используются подсистемой Cortex-M3 как источники тактового сигнала в режиме сна.
На рис. 8 показана система тактирования и формирование режимов пониженного энергопотребления Cortex-M3.
Режимы работы главной подсистемы
Подсистема Cortex-M3 может работать в одном из трех режимов: рабочий режим (Run Mode), режим сна (Sleep Mode) или режим глубокого сна (Deep Sleep Mode).
Рабочий режим Cortex-M3
В рабочем режиме процессор Cortex-M3, память и большинство периферийных модулей тактируются сигналом M3SSCLK, который получается путем деления частоты сигнала PLLSYSCLK от главного генератора с ФАПЧ. Модуль USB тактируется от собственного генератора USB с ФАПЧ. А модуль CAN — от OSCCLK или XCLKIN. Один из двух сторожевых таймеров (WDT1) также тактируется от OSCCLK. Выбор тактовой частоты для этих периферийных модулей осуществляется посредством записи соответствующих значений в регистры конфигурации. Выбор тактовой частоты для каждого периферийного модуля определяется содержимым регистра RCGS. Значения для выбора тактового генератора, записанные в регистры RCGS, SCGS и DCGS, применимы только
С28 SUBSYSTEM
Рис. 8. Тактирование и режимы пониженного энергопотребления Cortex-M3
для тех периферийных устройств, которые разрешены в соответствующем регистре DC конфигурации устройства.
Выполнение инструкции WFI (Wait-for-Interrupt, ожидание прерывания) отключает сигнал HCLK тактирования CPU Cortex-M3 и переводит подсистему Cortex-M3 в режим сна или глубокого сна с пониженным энергопотреблением, в зависимости от состояния бита SLEEPDEEP регистра SYSCTRL Cortex-M3.
Для выхода из режима пониженного энергопотребления можно использовать любое должным образом сконфигурированное прерывание, которое переведет подсистему/процессор Cortex-M3 из режима сна или глубокого сна в рабочий режим.
Режим сна и режим глубокого сна Cortex-M3
В этих режимах процессор и память Cortex-M3 отключены от тактового генератора, что ведет к приостановке выполнения кода. Кроме того, в режиме глубокого сна выключаются главный генератор с ФАПЧ и генератор USB с ФАПЧ. Способ тактирования периферийных устройств в режимах сна определяется
значением бита ACG регистра RCC. Когда бит ACG = 0, источник тактового сигнала определяется значением, записанным в регистр RCGS (как и в рабочем режиме), а когда бит ASC = 1, источник тактового сигнала определяется значением, записанным в регистр DCGS. Выбор способа тактирования с помощью RCGS и DCGS применим только для периферийных модулей, работа которых разрешена значением, записанным в соответствующий регистр DC. Частота тактирования для периферийных модулей, работа которых разрешена в режимах сна и глубокого сна, отличается от частоты в рабочем режиме.
Один из трех источников тактирования для режима глубокого сна (32KHZCLK, 10MHZCLK или OSCLK) выбирается установкой битов DSOSCSRC регистра DSLPCLKCFG. Эта тактовая частота делится на коэффициент, определяемый значением битов DSDIVOVRIDE регистра DSLPCLKCFG. Выходная частота с делителя для режима сна в дальнейшем делится согласно значениям битов M3SSDIVSEL регистра D3SSDIVSEL для получения частоты для режима глубокого сна.
Выход из режимов сна осуществляется с помощью любых соответствующим образом сконфигурированных прерываний.
Тактирование управляющей подсистемы
На вход тактового сигнала CLKIN процессора C28x обычно подается сигнал PLLSYSCLK от главного тактового генератора. На выходе процессора C28x формируются 2 сигнала тактирования — C28CPUCLK и C28SYSCLK. Сигнал C28SYSCLK используется для тактирования периферийных модулей, а сигнал C28CPUCLK — для тактирования блоков FPU/VCU, XINT, PIE и трех системных таймеров: TIMER0, TIMER1 и TIMER2 C28.
На рис. 9 показана система тактирования и режимы пониженного энергопотребления C28x.
Режимы работы управляющей подсистемы
Подсистема C28x может работать в одном из трех режимов: нормальный режим
Рис. 9. Система тактирования и режимы пониженного энергопотребления C28x
(Normal Mode), режим простоя (Idle Mode) или режим ожидания (Standby Mode).
Нормальный режим C28x
В нормальном режиме процессор C28x, большинство областей памяти и большинство периферийных модулей тактируются сигналом C28SYSCLK. Оставшиеся области памяти, блоки FPU, VCU, PIE и 3 системных таймера (TimerO, Timerl и Timer2) тактируются сигналом C28CPUCLK. Таймер 2 также может тактироваться от сигнала TMR2CLK, который формируется путем деления частоты сигнала одного из 3 источников — C28SYSCLK, OSCCLK и 10MHZCLK — в соответствии со значением, записанным в регистре CLKCTL.
Значение, записанное в регистр LOSPCP, определяет способ получения сигнала низкочастотного тактирования (C28LSPCLK) периферийных модулей SCI, SPI и McBSP, а значение, записанное в регистр HISPCP, определяет способ получения сигнала высокочастотного тактирования (C28HSPCLK) для девяти модулей управляющих ШИМ (ePWM). Распределение сигналов тактирования для каждого из периферийных моду-
лей определяется значениями, записанными в регистры CLPMCR0, 1, 3.
Выполнение инструкции IDLE останавливает тактирование процессора C28x и активирует сигнал IDLES. Сигнал IDLES смешивается с битами LPM регистра CLPMCR0 для перевода подсистемы C28x в режим простоя или режим ожидания.
Режим простоя C28x
В режиме простоя отключается тактовый сигнал C28CPUCLK, и процессор C28x останавливает выполнение инструкций. Тактовый сигнал C28SYSCLK продолжает поступать. Выход из режима простоя осуществляется любым разрешенным прерыванием или сигналом C28NMIINT (немаскируемое прерывание C28x).
При выходе из режима простоя восстанавливается тактовый сигнал C28CPUCLK. Если разрешено прерывание LPMWAKE, то выполняется его обработка. Далее процессор C28x начинает выборку инструкции с адреса, непосредственно следующего за адресом инструкции IDLE, которая перевела его в режим простоя.
Режим ожидания C28x
В режиме ожидания процессор C28x останавливает выполнение инструкций, и сигналы C28CLKIN, C28CPUCLK и C28SYSCLK отключаются. Выход из режима ожидания можно осуществить или сигналом с одной из 66 линий GPIO от блока GPIO_MUX1, или сигналом MTOCIPCINT1 (прерывание от MTOC модуля IPC). Сигнал с GPIO, пробуждающий процессор, выбирается внутри блока GPIO_MUX и поступает, как сигнал LPMWAKE, в блок квалификации. Этот блок определяет источники поступающих в него сигналов, обрабатывает сигналы и принимает решение о дальнейшей их передаче. Внутри блока квалификации сигнал LPMWAKE распределяется между битами QUALSTDBY (биты [7:2] регистра CLPMCR0), после чего передается на логическую схему запроса вывода микроконтроллера из режима ожидания.
При выходе из режима ожидания восстанавливаются сигналы тактирования C28CLKIN, C28SYSCLK и C28CPUCLK. Если разрешено прерывание LPMWAKE, то выполняется его обработка. Далее процессор C28x начинает выборку инструкции с адреса,
непосредственно следующего за адресом инструкции STANDBY, которая перевела его в режим ожидания.
Тактирование аналоговой подсистемы
Аналоговая подсистема тактируется сигналом ASYSCLK, который формируется из сигнала PLLSYSCLK путем деления его частоты на коэффициент, задаваемый битами CLKDIV регистра CCLKCTL. Доступ к регистру CCLKCTL — исключительно со стороны процессора C28x. Сброс регистра CCLKCTL осуществляется сигналом ASYSRST, который формируется из двух сигналов сброса аналоговой подсистемы — ACIBRST и SRXRST. Поэтому, несмотря на то, что частотой ASYSCLK управляет ядро C28x, программа, выполняемая ядром Cortex-M3, может вернуть частоту ASYSCLK к ее значению по умолчанию, сбросив аналоговую подсистему.
Заключение
Следует отметить, что корпорация Texas Instruments с выпуском семейства микроконтроллеров Concerto начала новую эру в разработке систем управления. В семейство Concerto вложен весь опыт проектирования собственных микроконтроллеров цифровой обработки сигналов TMS320C28x, наработки компании Luminary Micro, недавно приобретенной TI, в проектировании микроконтроллеров Stellaris на ядре Cortex-M3, а также мировой опыт инженеров, занимающихся разработкой систем управления. В итоге получился микроконтроллер, способный за счет двух хорошо синхронизированных процессоров и аналоговой подсистемы удовлетворить самым высоким требованиям разработчиков систем управления реального времени. Наличие режимов пониженного энергопотребления и механизмов выхода из них по внешним и внутренним прерываниям позволяет значительно уменьшить энергопотребление устройств управления стационарными и квазистационарными процессами. А наличие множества встроенных аппаратных систем защиты от сбоев, работа которых подробно документирована, дает возможность значительно ускорить сертификацию конечных изделий на соответствие самым жестким требованиям различных международных стандартов и региональных инструкций.
Микроконтроллеры могут найти применение не только в системах управления, но и в различных импульсных блоках питания, зарядных устройствах электромобилей и преобразователях мощности солнечных электростанций, а также в устройствах обмена данными, таких как модемы для передачи информации по силовым сетям (PLC-модемы). ■
Примечание. Перевод к рисункам смотрите в предыдущей части статьи.
Литература
1. 28x + ARM Cortex M3 Concerto Series. http://focus.ti.com/mcu/docs/ mcuproductcontentnp.tsp?sectionId=95&familyId=2049&tabId=2743
2. Concerto F28M35x Technical Reference Guide. http://www.ti.com/litv/pdf/spruh22
3. F28M35E52C Concerto Microcontroller. http://focus.ti.com/docs/prod/folders/ print/f28m35e52c.html
4. F28M35H Concerto Microcontrollers. Datasheet. http://www.ti.com/lit/gpn/ f28m35h52c
5. Stellaris ARM Cortex-M3-based Micro-controllers. http://focus.ti.com/mcu/docs/ mculuminaryprodoverview.tsp?sectionId=95&tabId=2486&familyId=1755&d ocCategoryId=10&viewType=mostrecent&DCMP=Luminary&HQS=Other+ OT+stellaris
6. 32 bit Real-time C2000 Microcontrollers. http://focus.ti.com/mcu/docs/ mcuprodoverview.tsp?sectionId=95&tabId=1531&familyId=916
7. C2000 32 bit 28x Piccolo Series. http://focus.ti.com/paramsearch/docs/ parametricsearch.tsp?familyId=919§ionId=95&tabId=1533&family=mcu
8. C2000 32 bit 28x Delfino Floating-point Series. http://focus.ti.com/paramsearch/ docs/parametricsearch.tsp?family=mcu§ionId=95&tabId=2108&familyId= 1414¶mCriteria=no