Окончание. Начало в № 10 2011
Новые двухъядерные
микроконтроллеры
для систем управления F28M35x
семейства Concerto корпорации Texas Instruments
Андрей САМОДЕЛОВ
В предыдущих статьях были рассмотрены основные модули и блоки микроконтроллеров TI Concerto.
В первой части этой статьи говорится о периферийных модулях управляющей подсистемы, которые собственно и делают ее управляющей. Во второй части более детально описана аналоговая подсистема. В третьей части рассказывается о модуле межпроцессорного взаимодействия, который обеспечивает синхронизацию и обмен данными между главной подсистемой Cortex-M3 и управляющей C28. В четвертой части рассмотрены мультиплексоры, которые позволяют подключать к не слишком большому количеству выводов корпуса сигнальные линии большого количества периферийных модулей, как главной, так и управляющей подсистем, в зависимости от выполняемой задачи.
Периферийные модули управляющей подсистемы
Периферийные модули управляющей подсистемы доступны из CPU C28x через шину памяти C28x и из контроллера DMA C28x через шину DMA C28x. В их состав входят: сторожевой таймер с немаскируемым прерыванием (NMI WDT), 3 таймера общего назначения, 4 последовательных периферийных порта (SCI, SPI, McBSP, I2C) и 3 типа управляющих периферийных модулей (ePWM, eQEP, eCAP). Далее рассмотрены управляющие периферийные модули.
Модули широтно-импульсных модуляторов (ШИМ)
Управляющая подсистема микроконтроллеров Concerto содержит девять модулей ШИМ. Восемь из них представляют собой ШИМ с высоким разрешением (HighResolution PWM, HRPWM), а один является модулем ШИМ с расширенными возможностями (Enhanced PWM, ePWM). Модули HRPWM имеют все функциональные особенности модуля ePWM, но обладают значительно более высоким разрешением (временной дискретностью). На рис. 1 показаны восемь модулей HRPWM (PWM1-8) и один модуль ePWM (PWM 9).
В качестве источников тактирования для модулей ШИМ можно использовать сигналы SYNCI с выхода GPTRIP1 мультиплексора
GPIO_MUX1 и сигнал TBCLKSYNC от регистра CPCLKCR0. Сигнал синхронизации SYNCO1 выходит из модуля HRPWM1 и задерживается на 8 тактов HSPCLK, перед тем как попадает на мультиплексор GPIO_MUX1. У модулей ШИМ имеются две группы входов сигналов блокировки:
1. Входы TRIP1-15, идущие от выводов GPTRIP1-12 (через мультиплексор GPIO_ MUX1), сигнал ECCDBLERR (от локального и разделяемого ОЗУ подсистемы C28x) и сигнал PIEERR от CPU C28x.
2. Входы TZ1-6 (зоны блокировки), идущие от выводов GPTRIP 1-3 (через мультиплексор GPIO_MUX1), EQEPERR (от периферийного модуля eQEP), CLOCKFAIL (от системы тактирования M3 CLOCKS) и EMUSTOP (от CPU C28x).
Имеется девять пар комплементарных выходов SOCA и SOCB — от каждого из девяти модулей ШИМ. Все девять выходов SOCA объединяются вместе по ИЛИ и после задержки на 32 такта HSPCLK попадают на мультиплексор GPIO_MUX1, откуда выходят как единый сигнал SOCAO. Все девять выходов SOCB объединяются вместе по ИЛИ и после задержки на 32 такта HSPCLK попадают на мультиплексор GPIO_MUX1, откуда выходят как единый сигнал SOCAB. Все 18 выходов SOCA/B поступают также в аналоговую подсистему, где могут быть выбраны в качестве запускающих сигналов для модулей АЦП.
Все девять модулей ШИМ управляют двумя другими наборами выводов, которые могут служить источниками прерываний для CPU C28x после прохождения через блок PIE C28x. Имеется 9 прерываний EPWMINT от ШИМ и 9 прерываний EPWMTZINT от сигналов блокировки ШИМ. На рис. 2 показана внутренняя структура модулей ePWM и HRPWM. Блоки зеленого цвета являются общими для модулей ePWM и HRPWM, но только модуль HRPWMs имеет блоки ШИМ с высоким разрешением, которые отмечены серым цветом.
Аналоговые/разделяемые периферийные модули
К разделяемым периферийным модулям микроконтроллеров Concerto имеется доступ как из главной, так и из управляющей подсистем. В состав аналоговых периферийных модулей входят два 12-разрядных АЦП (аналого-цифровые преобразователи) и шесть модулей «компаратор + 10-разрядный ЦАП». Все регистры АЦП и компараторов доступны как для CPU Cortex-M3, так и для CPU C28x, в то время как регистры результатов преобразования АЦП доступны еще и для блоков DMA двух процессоров.
Блок межпроцессорного взаимодействия (IPC) доступен только для CPU Cortex-M3 и CPU C28x (но недоступен для блоков DMA).
IE
GFTRIP1 GPTRIP2 GPTRIP3 GPTRIP4 GPTRIP5 GPTRIP6 GPTRIP7 GPTRIP8 GPTRIP9 GPTRIP10 GPTRIP11 GPTRIP12 "О" — ECCDBLERR PIEERR
EPWM(9:1)TZINT
EQEP(3:1)INT
GPTRIP7 GPTRIP8 GPTRIP9 GPTRIP10 GPTRIP11 GPTRIP12
PWM
1-8
PULSE STRETCH SOCAO -~7 32 HSPCLK CYCLES m
TRIPIN1
TRIPIN2
TRIPIN3
TRIPIN4
TRIPIN5
TRIPIN6
TRIPIN7
TRIPIN8
TRIPIN9
TRIPIN10
TRIPIN11
TRIPIN12
TRIPIN13
TRIPIN14
TRIPIN15
CPCLKCRO REG
ECAP1INP ECAP2INP ECAP3INP ECAP4INP ECAP5INP ECAP6INP
TZ1 TZ2 TZ3 TZ4 TZ5 TZ6
EPWM ONLY
C28x LOCAL RAM
EMUSTOP
C20X CPU
EQEPERR CLOCKFAIL
M3 CLOCKS
GPTRIP1
GPTRIP2
GPTRIP3
EQEPERR
CLOCKFAIL
EMUSTOP
EQEP1A EQEP1S EQEP1B EQEP1I
EQEP2A EQEP2S EQEP2B EQEP2I
EQEP3A EQEP3S EQEP3B EQEP3I
Рис. 1. Модули ШИМ
IPC используется для отправки и получения синхронизирующих сообщений между главной и управляющей подсистемой, чтобы координировать выполнение программ, работающих на обоих процессорах, или обмен данными между двумя процессорами.
Аналого-цифровой преобразователь
На рис. 3 показана внутренняя структура каждого из двух периферийных модулей АЦП, которые имеются в микроконтроллере Concerto. Каждый АЦП имеет 16 каналов, которые можно запрограммировать, чтобы выбрать аналоговый вход, а также импульс, запускающий начало преобразования (start-of-conversion), установить аппаратную функцию и выбрать прерывание конца преобразования (end-of-conversion), чтобы послать приглашение CPU или DMA прочитать 16 регистров результата. Каналы АЦП можно использовать независимо или попарно, основываясь на значении, записанном в регистре SAMPLEMODE. Парные каналы позволяют одновременно преобразовывать сигнал с двух входов, что приводит к увеличению общей производительности АЦП.
Режим отсчетов
Каждый АЦП имеет 16 программируемых каналов, которые можно независимо запрограммировать для аналого-цифрового преобразования, когда соответствующие разряды регистра SAMPLEMODE установлены для режима последовательного преобразования. Например, если разряд 2 регистра SAMPLEMODE установлен в 0, то каналы АЦП 4 и 5 будут работать в последовательном режиме. Это означает, что регистры SOC4CTL и SOC5CTL можно запрограммировать для конфигурирования каналов 4 и 5, которые будут независимо выполнять аналого-цифровое преобразование, а его результаты будут запоминаться в регистрах RESULT4 и RESULT5 соответственно. «Независимо» означает, что канал 4 может использовать собственный запускающий сигнал Start-Of-Conversion (SOC), собственный аналоговый вход и собственную аппаратную функцию, которые отличаются от таковых для канала 5.
Все 16 программируемых каналов каждого из модулей АЦП можно сгруппировать в 8 пар каналов, установив соответствую-
щий разряд регистра SAMPLEMODE в значение, соответствующее режиму одновременного (или синхронного) преобразования. Например, если разряд 2 регистра SAMPLEMODE установлен в 1, то 4-й и 5-й каналы АЦП будут работать в режиме непрерывного преобразования. Это означает, что регистр SOC4CTL теперь будет содержать конфигурационные параметры как для канала 4, так и для канала 5, а значение, записанное в регистр SOC5CTL, будет игнорироваться. Таким образом, хотя канал 4 и канал 5 все еще используют отдельные аналоговые входы (выбранные теперь как пары в поле CHSEL регистра SOC4CTL), они оба имеют общее управление от одного запускающего сигнала SOC и общее время стробирования. Результат измерений по-прежнему будет записываться в регистры RESULT4 и RESULT5.
Работа в режиме одновременного преобразования возможна благодаря наличию у каждого АЦП собственного устройства выборки-хранения (УВХ). Каждая схема УВХ имеет собственный мультиплексор для выбора одного из восьми аналоговых входов (рис. 3). Путем программирования реги-
сш=
СМРВ
твсж
(15:0)
CTK=ZER CTR=PRD CTR_DIR
DCAEVT1 .SYNC
DCBEVT1 .SYNC
CTR=CMPA CTR=CMPB CTR=CMPC CTR=CHPD
DCAEVT1.SYNC
DCBEVT1 .SYNC
-EBB.
ACTION QUALIFIER
TBCLK -
CTR=ZER -
CTR=PRD -
TBCTR ■ (15:0)
□CAEVT1 .FORCE OCAEVT2. FORCE
DCAEVT1.SOC
DCAEVT1.SOC
DCBEVT1.SOC
_п_п_п_
"1ППГ
EPWMTZINT
Рис. 2. Внутренняя структура модулей ePWM и HRPWM
стра SAMPLEMODE 16 доступных аналоговых каналов можно сконфигурировать как 16 независимых каналов или 8 пар каналов, возможна и любая комбинация этих вариантов (например, 10 независимых каналов и 3 синхронные пары).
Сигнал запуска преобразования для АЦП
Имеется 8 внешних сигналов запуска преобразования SOC, которые могут поступать в каждый из двух модулей АЦП (от управляющей подсистемы). Кроме того, имеются 8 внешних сигналов запуска преобразования SOC и два внутренних сигнала запуска преобразования SOC, формируемых от прерываний конца преобразования (End-Of-Conversion, EOC) внутри каждого модуля АЦП (ADCINT1 и ADCINT2). Регистры INTSOCSEL1 и 2 используются при конфигурировании каждого из 16 каналов АЦП для выбора внутреннего или внешнего источника сигнала SOC. При выборе для данного канала внутреннего источника сигнала SOC с помощью реги-
стров INTSOCSEL1 и 2 выбирается, какой конкретно из внутренних источников будет использоваться: ADCINT1 или ADCINT2. Если для данного канала АЦП выбран внешний источник сигнала SOC, то с помощью поля TRIGSEL соответствующего регистра SOCxCTL выбирается, какой из 8 внешних сигналов будет использоваться в качестве источника сигнала SOC для этого канала. АЦП одновременно может выполнять только одно аналого-цифровое преобразование. Приоритет преобразования задается состоянием регистра PRICTL.
Аналоговые входы
Аналоговые входы каждого из двух модулей АЦП организованы в две группы — A и B. Каждая группа имеет собственный мультиплексор и устройство выборки-хранения (рис. 3). С помощью мультиплексора Mux A можно выбрать один из семи возможных аналоговых входов: шесть внешних входов посредством мультиплексора AIO MUX и один — от внутреннего датчика температуры (имеется только у АЦП ADC1). С помо-
щью мультиплексора Mux B можно выбрать один из пяти возможных аналоговых входов: четыре внешних входа посредством мультиплексора AIO MUX и один — от внутреннего источника опорного напряжения VREFLO, который подключен к общей шине аналоговой подсистемы. Входы мультиплексоров Mux A и Mux B можно опрашивать либо в произвольном порядке, либо последовательно, с помощью двух устройств выборки-хранения в соответствии со способом стро-бирования и значением, записанным в регистр SOCxCTL для выбранного канала.
Регистр результата преобразования АЦП и прерывание конца преобразования
Результат аналого-цифрового преобразования в микроконтроллерах Concerto записывается в 32 регистра результата (16 для АЦП ADC1 и 16 для АЦП ADC2). Для 16 каналов модулей АЦП посредством программирования регистров INTSELxNy для каждого из модулей АЦП можно назначить до восьми прерываний
INTSEL1N2REG
INTSEL3N4 REG
INTSEL5N6 REG
INTSEL7N8 REG
ADCCTL REG
VREFLOCONV
ADCJNB0 ADCJNB3 N/C —► м/с—►
| VRE ADCJNB7 flo2|-► N/C *
(1) Датчик температуры подключен только к АЦП АОС1 (не подключен КАОС2)
(2) в данный момент подключено к аналоговой общей шине
Рис. 3. Схема АЦП
конца преобразования ADCINT, которые возникают, когда результат преобразования готов и может быть считан из соответствующего регистра. Восемь прерываний ADCINT от модуля АЦП ADC1 и восемь прерываний ADCINT от модуля АЦП ADC2 объединяются по схеме И перед поступлением в главную или управляющую подсистемы, сообщая о том, что результаты преобразования записаны в регистры результата и готовы для считывания со стороны CPU или DMA (рис. 4 в [5]).
Блоки «компаратор + ЦАП»
На рис. 4 показана внутренняя структура шести блоков «компаратор + ЦАП», имеющихся в микроконтроллерах Concerto. Каждый модуль сравнивает аналоговые сигналы на двух входах (A и B) и выставляет на выходе «лог. 1», когда напряжение на входе A больше, чем напряжение на входе B, или «лог. 0» в остальных случаях. Сигнал на вход A поступает с аналоговых мультиплексоров AIO_MUX1 и AIO_MUX2, так же как и на два из шести входов B. На оставшиеся четыре входа B сигнал поступает с модулей 10-разрядных цифро-аналоговых преобразо-
вателей (ЦАП), по одному на каждый из четырех входов B компараторов. Фактически на все шесть входов B можно подать сигнал с ЦАП, если это необходимо.
Для программирования 10-разрядных значений, управляющих выходными сигналами модулей ЦАП, служат соответствующие регистры DACVAL. Еще один регистр компаратора, COMPCTL, предназначен для выбора источника сигнала, подаваемого на вход B компаратора, включения/выключения схемы компаратора, инвертирования выходного сигнала компаратора, синхронизации выхода компаратора с тактовым сигналом C28x SYSCLK и выбора квалификационного периода (количество циклов тактовой частоты, за которые происходит усреднение сравниваемых сигналов). Все шесть выходных сигналов от модулей компараторов можно маршрутизировать на выводы микроконтроллера с помощью мультиплексора GPIO_MUX2.
Модуль межпроцессорного взаимодействия (IPC)
На рис. 5 показана внутренняя структура модуля межпроцессорного взаимодействия
(IPC), используемого для синхронизации выполнения программ и обмена данными между CPU Cortex-M3 и C28x. Модуль IPC может работать самостоятельно при синхронизации выполнения программ или его можно использовать совместно с ОЗУ сообщений при координации обмена данными между процессорами. В любом случае принцип действия IPC остается одним и тем же.
Модуль имеет два независимых блока IPC — с направлением передачи данных от главной подсистемы к управляющей (Master to Control, MTOC) и от управляющей подсистемы к главной (Control to Master, CTOM).
Блок MTOC IPC используется главной подсистемой для отправки сообщений для управляющей подсистемы. Это обычно происходит с помощью следующих трех регистров: MTOCIPCSET, MTOCIPCFLG и MTOCIPCACK. Каждый из 32 разрядов этих регистров представляет 32 независимых канала, с помощью которых CPU Cortex-M3 может послать до 32 сообщений CPU C28x посредством программного «рукопожатия» (квитирования при установлении связи). Кроме
О
С0МРА(2)
1_> DAC1 СОМР1
COMPCTL REG
VDDA
COMPSOURSE
d
i
V = (DACVALx(VDDA-VSSA))/1023
COMPSTS REG
СОМРЗ
ÍF
О
о
C0MPB(5)
I_DAC4 СОМР4
|_DAC5 СОМР5
СОМР6
(1) Разряд COMPSOURCE должен быть установлен в "DAC" для компараторов COMP 1,3,4 и 6, поскольку соответствующие выводы СОМРВ не подключены
Рис. 4. Внутренняя структура блоков «компаратор + ЦАП»
того, с изменением значений первых 4 битов регистров MTOCIPC связаны прерывания.
Например, чтобы послать сообщение посредством канала 2, CPU Cortex-M3 и CPU C28x записывают и считывают биты регистров MTOCIPCSET, MTOCIPCFLG, MTOCIPCACK. Квитирование начинается с того, что CPU Cortex-M3 опрашивает 2-й разряд регистра MTOCIPCFLG, чтобы убедиться, что он имеет состояние «лог. 0». Далее Cortex-M3 записывает «лог. 1» во 2-й разряд регистра MTOCIPCSET, чтобы начать квитирование. В это же время C28x непрерывно опрашивает регистр MTOCIPCFLG, ожидая прихода сообщения. В тот момент, когда Cortex-M3 записывает «лог. 1» во 2-й разряд регистра MTOCIPCSET, 2-й разряд регистра MTOCIPCFLG также принимает значение «лог. 1» и, таким образом, передает сообщение C28x. В тот момент, когда CPU C28x читает «лог. 1» из регистра MTOCIPCFLG, он должен ответить, записав «лог. 1» во 2-й разряд регистра MTOCIPCACK. Это действие, в свою очередь, очистит 2-й разряд регистра MTOCIPCFLG, разрешая CPU Cortex-M3 отправлять следующее сообщение. Поскольку первые четыре канала (разряды 0, 1, 2, 3) поддерживаются прерываниями, оба процессора
в приведенном выше примере могут использовать прерывание 2 от блока IPC вместо опроса 2-го разряда регистров, что увеличит производительность.
Аналогично происходит процедура квитирования, когда передаются данные (а не только сообщения) от главной подсистемы управляющей подсистеме, но с двумя дополнительными шагами. Перед установкой разряда регистра MTOCIPCSET CPU Cortex-M3 вначале должен загрузить в ОЗУ MTOC Message RAM блок данных, который необходимо сделать доступным для CPU C28x. На втором дополнительном шаге CPU C28x должен прочитать данные перед установкой разряда регистра MTOCIPCACK. Таким образом, ни один фрагмент данных не пропадет в процессе многократного обмена данными через рассматриваемый блок ОЗУ сообщений (message RAM).
Блок CTOM IPC используется управляющей подсистемой для отправки сообщений главной подсистеме. Это обычно происходит с помощью следующих трех регистров: CTOMIPCSET, CTOMIPCFLG и CTOMIPCACK. Процесс обмена точно такой, как было рассмотрено выше для обмена данными блоком MTOC IPC.
Мультиплексоры
В первой статье цикла были кратко рассмотрены блоки мультиплексоров, которые позволяют выбрать для каждого вывода микросхемы одну из возможных функций. В микроконтроллерах Concerto имеется два типа мультиплексоров: цифровые (GPIO_ MUX1 и GPIO_MUX2) и аналоговые, с возможностью пропускания цифрового сигнала (AIO_MUX1 и AIO_MUX2). Перейдем к подробному описанию каждого из четырех блоков мультиплексоров.
Мультиплексор GPIO_MUX1
Каждый из 66 выводов блока GPIO_MUX1 можно выборочно подключать через соответствующий набор регистров ко всем периферийным модулям Cortex-M3, всем периферийным модулям C28x, 12 входам блокировки ePWM, 6 входам eCAP, 3 линиям внешних прерываний PIE C28x, сигналу LMPWAKE вывода C28x из спящего режима, 64 входам общего назначения или 64 выходам общего назначения или к комбинации всего вышеперечисленного. Кроме того, каждый вывод GPIO_MUX1 может иметь подтягивающие резисторы. По умолчанию после сброса все под-
тягивающие резисторы и выходы отключены, и все выводы блока GPIO_MUX1 подключены к периферийным модулям Cortex-M3 (но не к периферийным модулям C28x).
На рис. 6 показана внутренняя структура GPIO_MUX1. Синие блоки обозначают сторону главной подсистемы GPIO_MUX1, а зеленые — сторону управляющей подсистемы. Серые блоки в центре, мультиплексор PinLevel Mux, выбирают для каждого из 66 выводов GPIO_MUX1, к какой из подсистем он будет подключен, основываясь на том, какие из конфигурационных регистров были запрограммированы в синих и зеленых блоках (рис. 6 для конфигурационных регистров). Иными словами, серый мультиплексор выбирает, к какой из подсистем будет подключен каждый из выводов. После этого, с помощью конфигурационных регистров соответствующей подсистемы, выводу назначается конкретная функция.
Мультиплексор Pin-Level Mux назначает для сигналов периферийных модулей главной подсистемы, сигналов периферийных модулей управляющей подсистемы или линий GPIO, к какому из 66 выводов микрокон-
троллера Concerto они будут подключены. Кроме того, для подключения линий I/O периферийных модулей двух подсистем к выводам микроконтроллера мультиплексор Pin-Level Mux вырабатывает другие сигналы в подсистемах: IRQ XCLKIN и GPIO [H:A] для главной подсистемы и GPTRIP [12:1] и GPI [63:0] — для управляющей подсистемы. Сигнал XCLKIN предназначен для подачи внешнего сигнала тактирования для ФАПЧ USB и модулей CAN. Восемь сигналов IRQ GPIO [H: A] являются запросами на прерывание от выбранных внешних выводов для контроллера прерываний NVIC. Тринадцать сигналов GPTRIP [12:1] служат носителями сигналов блокировки от выбранных внешних выводов к управляющей периферии CPU C28x — ePWM, eCAP и eQEP. Все 64 сигнала GPI [63:0] поступают в блок QUAL CPU C28x, где некоторые из них могут быть выбраны и квалифицированы (проверены на соответствие определенным характеристикам), чтобы вывести CPU C28x из режима ожидания (Standby) с низким энергопотреблением.
Конфигурационные регистры для мультиплексирования линий периферийных
устройств главной подсистемы организованы в виде девяти блоков (A-J), каждый из которых отвечает за 8 выводов микроконтроллера. Эти регистры программируются CPU Cortex-M3 либо через шину AHB, либо через шину APB. Конфигурационные регистры для мультиплексирования линий периферийных модулей управляющей подсистемы организованы в виде трех блоков (A-C), каждый из которых отвечает за 32 вывода. Эти регистры программируются CPU C28x посредством системной шины CPU C28x. На рис. 7 показан блок A регистров конфигурации GPIO главной подсистемы, блок A конфигурационных регистров управляющей подсистемы и логика мультиплексирования для одного вывода GPIO, управляемого этими регистрами.
Для каждого из 8 выводов блока A регистров GPIO подсистемы Cortex-M3 регистр GPIOPCTL осуществляет выбор между одним из 11 возможных первичных сигналов периферийных модулей Cortex-M3 или одним из 4 возможных альтернативных сигналов периферийных модулей. Затем, с помощью регистра GPIOAPSEL, выбирается
UART (5)
CAN
(2)
МЗР ERIPHERA SIGNAL ROUTING
ii мзмих 8 и 5 ► МЗ MUX в 8 i МЗ I h UX D 8 ч i мзм i k UX Е 8 i МЗ J _ I UX F МЗ M 7 i k UX G 7 ч i M3M i UXH 8 i M3 i „ лих J 8 i M3W i uxc 4
PIN-LEV EL MUX
30 30 4
С28 dUXA C28 лих в C28 лихе
0 ii ii
С28Р ERIPHERA .SIGNAL ROUTING
SCI SPI I2C EQEP (3) ECAP (в) EPWM (9) XINT (3)
XCLKIN GPIO (H:A) IRQ
GPTRIP (12:1)
GPI (63:0)
C28 DMA BUS
Рис. 6. Внутренняя структура мультиплексора GPIO_MUX1
направление дальнейшего распространения сигнала через цепочку мультиплексоров. В результате сигнал попадает на заданный вывод микроконтроллера. Входной сигнал с вывода микроконтроллера распространяется в обратном направлении.
Таким же образом, со стороны C28x, с помощью регистров GPAMUX1 и GPAMUX2 выбирается один из 4 возможных сигналов периферийных модулей C28x для каждого из 32 выводов блока A. Затем сигнал с выхода периферийного модуля C28x распространяется дальше через цепочку мультиплексоров к заданному выводу микроконтроллера. Входной сигнал с вывода микроконтроллера проделывает этот же путь в обратном направлении.
Кроме распределения большинства цифровых сигналов, некоторые выводы GPЮ_MUX1 можно использовать для распределения аналоговых сигналов. Регистр выбора аналогового режима работы линий GPЮ GPЮAMSEL используется для назначения четырем выводам микроконтроллера функций аналоговых USB-сигналов. Вывод PF6_GPЮ38 становится USB0VBUS, PG2_GPЮ42 становится USB0DM, PG5_GPЮ45 становится USB0DP,
а PG6_GPIO46 — USB0ID. При выборе аналогового режима работы соответствующие выводы недоступны для цифровых функций мультиплексора GPIO_MUX1, которые были описаны выше.
Другим особым случаем является вход сигнала внешнего тактового генератора XCLKIN. Этот сигнал, доступный через вывод PJ7_GPIO63, непосредственно подключен к USBPLLCLK (вход USB PLL) и двум модулям CAN. Он всегда доступен для этих модулей и может быть выбран с использованием их локальных регистров.
Мультиплексор GPIO_MUX2
Восемь выводов блока мультиплексора GPIO_MUX2 можно выборочно использовать в качестве восьми входов общего назначения, восьми выходов общего назначения или шести выходов COMPOUT от аналоговых компараторов. К каждому выводу GPIO_MUX2 можно подключить подтягивающий резистор. После сброса все выводы блока мультиплексора GPIO_MUX2 конфигурируются как аналоговые входы, и все функции GPIO для них отключены. Блок мультиплексора GPIO_MUX2 программиру-
ется с использованием собственного набора регистров, отличающихся от регистров, используемых для программирования блока мультиплексора GPIO_MUX1.
Регистры, отвечающие за конфигурирование выводов мультиплексора GPIO_MUX2, организованы в блок регистров E. Они доступны только со стороны CPU C28x. В средней части рис. 8 показан блок E регистров управляющей подсистемы и логика мультиплексирования связанных с ним выводов GPIO. С помощью регистра GPEMUX1 выбирается один из 6 возможных цифровых выходных сигналов от аналоговых компараторов или один из 8 цифровых выходов общего назначения (GPIO). Регистр GPEPUD отключает подтягивающие резисторы от выводов GPIO_ MUX2, когда соответствующий разряд этого регистра установлен в «лог. 1». Другой блок регистров E позволяет производить запись и чтение 8 разрядов GPIO, а также задавать направление для каждого из разрядов (чтение или запись). В таблице 1 приведена схема картирования выходов компараторов на 8 выводов GPIO мультиплексора GPIO_MUX2.
Режимы работы периферийных модулей 0, 1, 2 и 3 выбирают путем установки вы-
Набор регистров А голубого цвета представляет 8 из 06 линий I/O микросхемы. Оставшиеся 58 линий I/Os управляются аналогичными наборами регистров В, С, D, Е, F, I, J, Н
, Периферийные модули 1-15 представляют набору Г до 15 специфичных для подсистемы выводов 1 I Сог1ех-МЗ периферийных модулей, I
^ подключаемых к одному выводу микросхемы '
TO/FROM МЗ PERIPH 1-11
TO/FROM МЗ PERIPH 12-15
Логика серого цвета является специфичной для одного а I/O микросхемы
1 GPIOPCTL REG 1- -\ PRIMARY f—
МЗ REG SETA í
1 GPIOAPSEL REG |
GPIOODR REG
(4 PINS ONLY)
ANALOG USB SIGNALS
-
GPIOAMSEL REG
OUTPUT DISABLED AFTER RESET
Оранжевая логика изображает аналоговые функции USB интерфейса (применимо только к 4 I '
] t
GPIOCSEL REG
OPEN DRAIN LOGIC
] [
GPIODEN REG
] [
GPIOAFSEL REG
Набор регистров А зеленого цвета изображает представление 32 из 66 линий I/O микросхемы. Остальные 34 линии I/O управляются с помощью аналогичных наборов регистров В и С
Ф7
ASYNC INPUT
SYNC I-1—
I-4 QUAL
[Каждая линия IГО N имеет отдельную пару разрядов для выбора мультиплексора )
GPAMUX1 REG GPAMUX2 REG
С28 REG SETA
С Периферийные модули 1-3 представляют набор до 3 линий*-! периферийных модулей подсистемы С28, подключаемых к одному выводу микросхемы }
С28 REG SETA
GRACLEAR REG GPATOGGLE REG
SEL(1:0)
FROM C28 PERIPH 1-3
INPUTS \ N/C AT RESET
TO C28 PERIPH 1-3
C28 REG SETA GRACTRL REG
GPASEL1 REG
GPASEL2 REG
C28 REG SETA
' Каждая линия I/O s имеет отдельную пару разрядов для выбора ч мультиплексора ,
Рис. 7. Блок A регистров конфигурации GPIO главной подсистемы
Таблица 1. Назначение выводов GPIO_MUX2 (в зависимости от режима Peripheral Modes подсистемы C28x)1
Вывод Режим
Peripheral Mode 0 Peripheral Mode 1 Peripheral Mode 2 Peripheral Mode 3
GPIO128 GPIO128 - - -
GPIO129 GPIO129 - - COMP1OUT
GPIO130 GPIO130 - - COMP6OUT
GPIO131 GPIO131 - - COMP2OUT
GPIO132 GPIO132 - - COMP3OUT
GPIO133 GPIO133 - - COMP4OUT
GPIO134 GPIO134 - - -
GPIO135 GPIO135 - - COMP5OUT
Примечание. 1. Пустые значения соответствуют зарезервированным функциям.
бранных пар разрядов регистра GPIOEMUX1 в «00», «01», «10» и «11» соответственно. Например, установка разрядов 5-4 регистра GPIOEMUX1 в «00» (режим Peripheral Mode 0) приводит к тому, что на вывод GPI0130 подается внутренний сигнал GPI0130 (цифровой сигнал GPIO). Установка разрядов 5-4 регистра GPIOEMUX1 в «11» (режим Peripheral
Mode 3) приводит к тому, что на вывод GPI0130 подается внутренний сигнал COMP6OUT от аналогового компаратора 6. Режимы Peripheral Modes 1 и 2 зарезервированы и в настоящий момент недоступны.
Мультиплексор AIO_MUX1
Десять выводов AIO_MUX1 можно выборочно использовать с помощью соответствующего набора регистров как 10 аналоговых входов периферийного модуля АЦП ADC1, 6 аналоговых входов периферийных модулей аналоговых компараторов, 4 входа или 4 выхода общего назначения. Следует отметить, что хотя мультиплексор AIO_MUX1 назван так из-за того, что через него проходят аналоговые сигналы, линии GPIO (называемые здесь AIO) все еще остаются цифровыми, хотя и с меньшим количеством функций, чем линии блоков GPIO_MUX1 и GPIO_MUX2, например у них нет подтягивающих резисторов. После сброса все выводы блока AIO_MUX1 сконфигурированы как аналоговые входы, и функции GPIO у них отключены. Блок AIO_MUX1 программируется с помощью собственного блока регистров, который отличает-
ся от блока регистров, используемых для программирования мультиплексора AIO_MUX2.
Регистры, отвечающие за конфигурирование выводов AIO_MUX1, доступны только со стороны CPU C28x. В верхней части рис. 7 показаны регистры управляющей подсистемы и логика мультиплексирования для десяти связанных с ними выводов AIO. С помощью регистра AIOMUX1 можно выбрать один из 10 аналоговых входных сигналов или один из 4 входов общего назначения AIO. С помощью другого блока регистров можно производить операции записи и чтения для 4 разрядов AIO, а также устанавливать направление распространения сигнала для каждого из разрядов (чтение или запись). В таблице 2 приведено картирование аналоговых входов и линий AIO на 10 выводов AIO_MUX1.
Режим AIO Mode 0 выбирается путем установки нечетных разрядов регистра AIOMUX1 в «лог. 0», а режим AIO Mode 1 — путем установки нечетных разрядов регистра AIOMUX1 в «лог. 1». Например, при установке 5-го разряда регистра AIOMUX1 в «лог. 0» на вывод ADC1INA2 подается внутренний сигнал AIO2 (цифровой GPIO). При установ-
Рис. 8. Блок Е регистров управляющей подсистемы и логика мультиплексирования
ке 5-го разряда регистра AЮMUX1 в «лог. 1» вывод ADC1INA2 становится аналоговым входом ADC1INA2 или COMPA1 (только одну из этих функций можно использовать в каждый из моментов времени, путем выбо-
Таблица 2. Назначение выводов AIO_MUX1 (в зависимости от режима AIO Modes подсистемы C28x)1, 2
Вывод Режим
C28x AIO Mode 03 C28x AIO Mode 14
ADC1INA0 - ADC1INA0
ADC1INA2 AIO2 ADC1INA2, COMPA1
ADC1INA3 - ADC1INA3
ADC1INA4 AIO4 ADC1INA4, COMPA2
ADC1INA6 AIO6 ADC1INA6, COMPA3
ADC1INA7 - ADC1INA7
ADC1INB0 - ADC1INB0
ADC1INB3 - ADC1INB3
ADC1INB4 AIO12 ADC1INB4, COMPB2
ADC1INB7 - ADC1INB7
Примечания.
1. Пустые значения соответствуют зарезервированным функциям.
2. Для каждого поля с двумя возможными функциями только одна из функций должна быть активна
в каждый из моментов времени; другая функция должна быть отключена. Используйте регистры внутри соответствующих аналоговых периферийных модулей, чтобы включить или выключить соответствующие функции.
3. Режим AIO Mode 0 соответствует цифровым входам или выходам общего назначения.
4. Режим AIO Mode 1 соответствует аналоговым входам модулей АЦП ADC1 или компаратора.
ра в соответствующем аналоговом модуле). В настоящее время все четные разряды регистра AIOMUX1 не обслуживаются.
Мультиплексор AIO_MUX2
Десять выводов AIO_MUX2 можно выборочно использовать с помощью соответствующего набора регистров как 10 аналоговых входов периферийного модуля АЦП ADC2, 6 аналоговых входов периферийных модулей аналоговых компараторов, 4 входа или 4 выхода общего назначения. Следует отметить, что хотя мультиплексор AIO_MUX2 назван так из-за того, что через него проходят аналоговые сигналы, линии GPIO (называемые здесь AIO) все еще остаются цифровыми, хотя и с меньшим количеством функций, чем линии блоков GPIO_MUX1 и GPIO_MUX2, например, у них нет подтягивающих резисторов. После сброса все выводы блока AIO_MUX2 сконфигурированы как аналоговые входы, и функции GPIO у них отключены. Блок AIO_MUX2 программируется с помощью собственного блока регистров, который отличается от блока регистров, используемых для программирования мультиплексора AIO_MUX1.
Регистры, отвечающие за конфигурирование выводов AIO_MUX2, доступны только со стороны CPU C28x. В нижней части рис. 7 показаны регистры управляющей подсистемы и логика мультиплексирования для десяти связанных с ними выводов AIO. С помощью регистра AIOMUX2 можно выбрать
один из 10 аналоговых входных сигналов или один из 4 входов общего назначения AЮ. С помощью другого блока регистров можно производить операции записи и чтения для 4 разрядов AЮ, а также устанавливать на-
Таблица 3. Назначение выводов AIO_MUX2 (в зависимости от режима AIO Modes подсистемы C28x)1, 2
Вывод Режим
C28x AIO Mode 03 C28x AIO Mode 14
ADC2INA0 - ADC2INA0
ADC2INA2 AIO18 ADC2INA2, COMPA4
ADC2INA3 - ADC2INA3
ADC2INA4 AIO20 ADC2INA4, COMPA5
ADC2INA6 AIO22 ADC2INA6, COMPA6
ADC2INA7 - ADC2INA7
ADC2INB0 - ADC2INB0
ADC2INB3 - ADC2INB3
ADC2INB4 AIO28 ADC2INB4, COMPB5
ADC2INB7 - ADC2INB7
Примечания.
1. Пустые значения соответствуют зарезервированным функциям.
2. Для каждого поля с двумя возможными функциями только одна из функций должна быть активна
в каждый из моментов времени; другая функция должна быть отключена. Используйте регистры внутри соответствующих аналоговых периферийных модулей, чтобы включить или выключить соответствующие функции.
3. Режим AIO Mode 0 соответствует цифровым входам или выходам общего назначения.
4. Режим AIO Mode 1 соответствует аналоговым входам модулей АЦП ADC2 или компаратора.
правление распространения сигнала для каждого из разрядов (чтение или запись). В таблице 3 приведено картирование аналоговых входов и линий AIO на 10 выводов AIO_MUX2. Режимы Peripheral Modes 1 и 2 для мультиплексора AIO_MUX2 в настоящий момент недоступны.
Режим AIO Mode 0 выбирается путем установки нечетных разрядов регистра AIOMUX2 в «лог. 0», а режим AIO Mode 1 — путем установки нечетных разрядов регистра AIOMUX2 в «лог. 1». Например, при установке 9-го разряда регистра AIOMUX2 в «лог. 0» на вывод ADC2INA4 подается внутренний сигнал АЮ20 (цифровой GPIO). При установке 9-го разряда регистра AIOMUX2 в «лог. 1» вывод ADC2INA4 становится аналоговым входом ADC2INA4 или COMPA5 (только одну из этих функций можно использовать в каждый из моментов времени, путем выбора в соответствующем аналоговом модуле). В настоящее время все четные разряды регистра AIOMUX2 не обслуживаются.
Заключение
На этом описание двухъядерных микроконтроллеров нового семейства Concerto корпорации Texas Instruments закончено.
Для разработки и отладки приложений на базе новых микроконтроллеров имеются мощные и гибкие аппаратные и программные средства, которые будут описаны в одной из следующих статей.
Программирование микроконтроллеров Concerto имеет одну уникальную особенность, которая заключается в том, что программы для каждой из подсистем (каждого из ядер) могут быть написаны и отлажены совершенно независимо. Для организации межпроцессорного взаимодействия нужно только добавить небольшой кусочек кода, который будет управлять обменом сообщениями и данными через блок IPC. Эта особенность позволяет, практически без модификаций, использовать огромное количество примеров и прикладных программ, написанных для микроконтроллеров Stellaris и C28x. Кроме того, корпорация TI разработала операционную систему реального времени (RTOS) SYS/BIOS, которая сама реализует межпроцессорное взаимодействие, и разработчику остается лишь написать прикладные задачи для каждой из подсистем. ■
Литература
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
Основные обозначения и сокращения на рисунках
M3 peripheral signal routing Маршрутизация сигналов периферийных устройств подсистемы Cortex-M3
PIN - LEVEL MUX Мультиплексор уровня выводов
C28 peripheral signal routing Маршрутизация сигналов периферийных устройств подсистемы C28
Disabled at reset После сброса отключено
TO/FROM M3 PERIPH К/из периферийных модулей подсистемы Cortex-M3
M3 REG SET A Набор регистров A подсистемы Cortex-M3
ALT Альтернативный
PRIMARY Первичный
GPIO63 only Только линия GPIO63
NORMAL Нормальный режим
SELECT M3 Выбирается ядром Cortex-M3
I/O disabled Линии I/O отключены
A-H INTR requests to M3 Запросы на прерывания INTR A-H INTR к подсистеме Cortex-M3
USB analog signals Аналоговые сигналы шины USB
One of 66 GPIO MUX1 PINS Один из 66 выводов GPIO_MUX1
C28 REG SET A Набор регистров A подсистемы C28
GPIO Функция GPIO
From C28 PERIPH 1-3 От периферийных модулей 1-3 подсистемы C28
To C28 PERIPH 1-3 К периферийным модулям 1-3 подсистемы C28
N/C at reset После сброса не подключено
At reset После сброса
sync input Вход синхронизации
One of 10 AIO MUX1 PINS Один из 10 выводов мультиплексора AIO_MUX1
One of 8 GPIO MUX2 PINS Один из 8 выводов мультиплексора AIO_MUX2
One of 10 AIO MUX2 PINS Один из 10 выводов мультиплексора AIO_MUX2
Analog bus Аналоговая шина
Pulse stretch 32 HSPCLK cycles Задержка импульса в 32 такта HSPCLK
Pulse stretch 8 HSPCLK cycles Задержка импульса в 8 тактов HSPCLK
TB Time base Времязадающая цепь
CC Counter compare Счетчик-компаратор
HiRES control Управление HiRES ШИМ
DC Digital compare Цифровой компаратор
ET Event trigger Триггер событий
AQ Action qualifier Квалификатор действий
DB dead band Генератор «мертвого времени»
PC PWM chopper Прерыватель ШИМ
TZ Trip zone Защитная зона
HRPWM HiRES PWM ШИМ с высоким разрешением
ADC interupt control Управление прерываниями АЦП
SOCx trigger control Управление запускающими импульсами SOC
12-bit ADC converter 12-разрядный АЦП
Store result Хранение результатов
External Oscillator Input Вход сигнала внешнего тактового генератора
4. F28M35H Concerto Microcontrollers. Datasheet — http://www.ti.com/lit/gpn/f28m35h52c
5. Самоделов А. Новые двухъядерные микроконтроллеры для систем управления F28M35x семейства Concerto корпорации Texas Instruments // Компоненты и технологии. 2011. № 10-11.