Prikladnoe_programmirovanie_-Konspekt_lektsy
.pdf17Периферия в процессоре разделена на четыре группы, которые на карте памяти соответствуют 4 фреймам, в которые входят следующие группы регистров:
Фрейм |
Блок |
Регистры |
PF0 |
PIE |
Таблица векторов, регистры управления |
|
|
прерывания |
|
Flash |
Регистры тактов ожидания |
|
XINTF |
Регистры внешнего интерфейса |
|
DMA |
Регистры прямого доступа к памяти |
|
Timers |
Регистры таймеров CPU |
|
CSM |
Регистры ключа модуля секретности |
|
ADC |
Регистры результата АЦП |
PF1 |
eCAN |
Регистры почтового ящика и управляющие |
|
GPIO |
Регистры конфигурации и управления |
|
ePWM |
Регистры и модуль ШИМ |
|
eCAP |
Регистры и модуль захвата |
|
eQEP |
Регистры и модуль энкодера |
PF2 |
SYS |
Регистры управления системой |
|
SCI |
Регистры управления и RX/TX |
|
SPI |
Регистры управления и RX/TX |
|
ADC |
Регистры статуса, управления и результата |
|
I2C |
Регистры и модуль |
|
XINT |
Регистры внешних прерываний |
PF3 |
McBSP |
Регистры буферированного порта |
|
ePWM |
Регистры и модуль ШИМ |
18 Мультиплексор вход/выходов общего назначения GPIO предназначен для программирования функций выводов микросхемы, которые могут использоваться периферией или определены как GPIO. Каждый вывод программируется индивидуально. По сигналу Reset выводы GPIO конфигурируются как входы.
19 Таймеры CPU – 32-разрядные с предустановкой периода, имеют на входе 16разрядный делитель для программирования частоты счетных импульсов. Содержимое таймера декриментируется импульсами с установленной частотой, при достижении нуля вырабатывается прерывание, а в счетчик таймера автоматически загружается установленное 32-разрядное значение периода. Таймеры подключены к следующим входам прерывания CPU:
Таймер |
Вход прерывания |
Примечания |
Timer 0 |
Через блок PIE |
Общего назначения |
Timer 1 |
INT13 |
Общего назначения |
Timer 2 |
INT14 |
Резервирован для ОСРВ, если она не |
|
|
используется – общего назначения |
20 Периферийные устройства для управления:
- ePWM – модуль обеспечивает генерацию независимых или комплементарных ШИМ сигналов с заданными мертвыми зонами на фронтах. Модуляция части сигналов обеспечивается с повышенным разрешением. Регистры модуля доступны по шине DMA для снижения перегрузки шин при обслуживании этого модуля.
- eCAP – использует 32-разрядную временную шкалу и регистры для захвата до 4 внешних событий. Может также конфигурироваться на выработку дополнительных ШИМ-сигналов.
11
-eQEP – включает 32-разрядный счетчик положения, поддерживает измерения при низких скоростях с использованием устройств захвата и привысоких скоростях с использованием 32-разрядного таймера.
-ADC – 12-разрядный АЦП обслуживает 16 несимметричных каналов. Содержит два устройства выборки/хранения для одновременной обработки пары сигналов. Регистры модуля доступны по шине DMA для снижения перегрузки шин при обслуживании этого модуля.
21 Последовательные порты:
-eCAN – соответствует стандарту CAN 2.0B, содержит почтовый ящих на 32 адреса, обеспечивает фиксацию времени получения сообщения.
-McBSP – многоканальный буферированный последовательный порт подключается к линиям E1/T1 кодека модема или стерео ЦАП. Регистры приема и передачи блока доступны по шине DMA для снижения перегрузки шин при обслуживании этого блока. Каждый модуль блока может быть сконфигурирован как SPI.
-SPI – высокоскоростной синхронный последовательный порт, который обеспечивает передачу и прием последовательности двоичных символов (до 16 бит) с заданной частотой. Используется обычно для связи с внешней периферией или другим процессором. Связь между несколькими устройствами обеспечивается работой в режиме ведущего или ведомого. Включает 16-уровневое FIFO на прием и передачу.
-SCI – двухпроводный последовательный асинхронный порт (часто называют UART). Включает 16-уровневое FIFO на прием и передачу.
-I2C – обеспечивает связь с другими устройствами, подключенными к двухпроводной I2C шине и соответствующими стандарту I2C версии 2.1. Модуль содержит 16уровневое FIFO на прием и передачу.
22 Карта памяти Распределение адресного пространства процессора зафиксировано в его карте памяти,
в которой определены адреса всех функциональных блоков процессора. Особенности карты памяти TMS320F28335:
-Размер блоков фиксирован и не может быть изменен пользователем;
-Периферийные фрэймы Per. Frame 0, 1, 2, 3 предназначены только для данных и недоступны для пользовательских программ
-В области адресов 0х38 0080 – 0х38 008F хранится процедура калибровки АЦП – пользователем не программируется
-Если в проекте CAN интерфейс не используется, то его область оперативной памяти может быть использована как память общего назначения.
-Области карты памяти имеют различное время доступа, измеряемое числом тактов ожидания. Наиболее быстрый обмен осуществляется без тактов ожидания, обмен с другими областями может содержать один-два такта ожидания, для некоторых областей, например, внешней памяти число тактов ожидания программируется. Такты ожидания по чтению и по записи для одной и той же области памяти могут различаться.
-Ряд областей памяти защищены от случайной записи после конфигурирования
(EALLOW).
12
Лекция №3 «Цифровой сигнальный контроллер TMS320F28335. Подсистемы общего назначения (тактовый генератор, прерывания, таймеры,
входы/выходы общего назначения, внешние интерфейсы, прямой доступ к памяти)»
3.1 Вход/выходы общего назначения
3.1.1 Общая характеристика Процессор имеет 88 выводов, которые могут быть сконфигурированы как
вход/выходы общего назначения GPIO. Выводы поименованы в росписи контактов собственными именами GPIO0… GPIO87. Кроме функции GPIO каждый из выводов может быть подключен к периферийным сигналам (число возможных подключений от одного до трех). Назначение выводам функций и задание их свойств осуществляется посредством регистров управления конфигурацией GPIO. Конфигурирование выводов и их переключение осуществляется блоком GPIO MUX под управлением информации, записываемой в регистры GPxMUXn. На рис.3.1 приведена схема конфигурирования первой группы вход/выходов общего назначения GPIO0… GPIO27
Рис.3.1. Схема конфигурирования вход/выходов общего назначения GPIO0… GPIO27
Если вывод конфигурируется с функцией цифрового входа или выхода, в регистре GPxDIR для него устанавливается направление передачи сигнала. Для цифровых входов можно также в регистрах GPxQSELn, GPACTRL, GPBCTRL установить дополнительную обработку для устранения нежелательного шума.
3.1.2 Рекомендации по конфигурации выводов:
13
Шаг 1: при проектировании системы рассмотрите множество выводов с их функциями и спланируйте, какие из них вы будете использовать и в каком качестве.
Шаг 2: подключите или отключите встроенные резисторы подтяжки в зависимости от выбранной для вывода функции, записав 0 или 1 в регистры GPAPUD, GPBPUD, GPCPUD. (Примечание – по умолчанию резисторы подтяжки у GPIO0 – GPIO11 отключены, у всех остальных выводов – включены).
Шаг 3: если вывод используется в качестве входа, определите его свойства в регистрах GPACTRL, GPBCTRL, GPAQSEL1, GPAQSEL2, GPBQSEL1, GPBQSEL2. (Примечание – по умолчанию все входы синхронизированы только сигналом
SYSCLKOUT)
Шаг 4: определите в регистрах GPxMUXn функцию вывода: GPIO или периферийный сигнал. (Примечание – по умолчанию сигналом Reset все GPIO выводы конфигурируются как вход/выходы общего назначения)
Шаг 5: если вывод используется в качестве GPIO, определите направление его передачи в регистрах GPADIR, GPBDIR, GPCDIR. (Примечание – по умолчанию все GPIO выводы конфигурируются как входы). Чтобы изменить конфигурацию на выход, сначала загрузите необходимые установки в регистры GPxCLEAR, GPxSET, GPxTOGGLE для выходного триггера-защелки, только после этого измените направление вывода в регистрах GPADIR, GPBDIR, GPCDIR. (Примечание – по сигналу Reset выходные триггеры-защелки для всех выводов очищаются).
Шаг 6: определите в регистре GPIOLPMSEL, какие выводы, если это необходимо, будут выводить контроллер из режима с пониженным энергопотреблением.
Шаг 7: определите в регистрах GPIOXINTxSEL, GPIOXNMISEL источники для прерываний XINT1 – XINT7, XNMI. Для каждого из прерываний можно определить один из сигналов порта А (XINT1 – XINT3) или порта В (XINT4 – XINT7). Полярность сигнала прерывания устанавливается в регистрах XINTnCR и XNMICR.
3.1.3 Регистры, используемые для конфигурирования GPIO:
Каждый порт имеет отдельный набор регистров (x = A, B, C), в которых каждый бит соответствует отдельному выводу.
GPxDAT –Значение этого бита будет отображаться в состояние 0 или 1 на данном выводе, если он сконфигурирован, как GPIO.
GPxSET – используется для установки вывода в состояние 1, для чего в соответствующий бит регистра записывается 1, запись 0 не дает эффекта, поскольку по умолчанию в регистрах все биты в состоянии 0.
GPxCLEAR - используется для установки вывода в состояние 0, для чего в соответствующий бит регистра записывается 1, запись 0 не дает эффекта, поскольку по умолчанию в регистрах все биты в состоянии 0. GPxTOGGLE - используется для переключения вывода в противоположное
состояние, для чего в соответствующий бит регистра записывается 1, запись 0 не дает эффекта, поскольку по умолчанию в регистрах все биты в состоянии 0.
3.1.4 Квалификация входов Выводы, конфигурированные как входы, могут иметь различные режимы
синхронизации. Входы GPIO могут быть квалифицированы для синхронизации тактовыми импульсами SYSCLKOUT или окном выборки. Для выводов, конфигурированных как входы периферии, возможны асинхронный режим, синхронизация SYSCLKOUT или окном выборки. Тип синхронизации задается в регистрах GPAQSEL1, GPAQSEL2, GPBQSEL1, GPBQSEL2.
асинхронный режим – используется для периферии, где синхронизация не требуется, либо само периферийное устройство ее обеспечивает;
синхронизация SYSCLKOUT - по умолчанию сигналом Reset все GPIO выводы устанавливаются в этот режим, при синхронизации может возникнуть задержка до одного
14
периода тактовой частоты между срабатыванием внешнего устройства и изменением входного сигнала контроллера;
синхронизация окном выборки – используется для удаления нежелательного шума, для чего входной сигнал сначала синхронизируется SYSCLKOUT, а затем квалифицируется в течение заданного числа периодов выборки, прежде чем передается на вход контроллера. Период выборки задается битами QUALPRDn в регистре GPxCTRL, причем сразу для 8 входов. Число периодов выборки устанавливается в регистрах
GPAQSEL1, GPAQSEL2, GPBQSEL1, GPBQSEL2 и может быть либо 3 либо 6. Если информация на входе не изменяется в течение окна выборки, она передается на вход контроллера.
3.2 Таймеры CPU
3.2.1 CPU обслуживают три таймера: Timer 0, Timer1, Timer2. Схема таймера приведена на рис 3.2. Таймеры 32-разрядные с предустановкой периода, имеют на входе 16разрядный делитель для программирования частоты счетных импульсов. Период таймера задается в регистре PRD: PRDH. Значение периода перегружается в счетчик, состояние которого отображается регистром TIM: TIMH. Содержимое счетчика декриментируется импульсами с частотой тактовых импульсов процессора, поделенной на число, на 1 большее записанного в регистре TDDR. Содержимое TDDR переписывается в счетчик PSC и декриментируется тактовыми импульсами процессора SYSCLKOUT. При достижении нуля вырабатывается импульс, подаваемый на вход счетчика таймера. При достижении нуля в счетчике таймера вырабатывается прерывание, а в счетчик таймера автоматически загружается установленное 32-разрядное значение периода.
Рис.3.2. Блок-схема таймера CPU
3.2.2 Таймеры подключены к следующим входам прерывания CPU:
Таймер |
Вход прерывания |
Примечания |
Timer 0 |
Через блок PIE |
Общего назначения |
Timer 1 |
INT13 |
Общего назначения |
Timer 2 |
INT14 |
Резервирован для ОСРВ, если она не |
|
|
используется – общего назначения |
3.3 Внешний интерфейс
3.3.1 Описание функционирования
15
Внешняя память размечена на карте памяти в трех фиксированных зонах. Каждой зоне соответствует свой чип-селект сигнал, который переключается, когда идет обращение к данной зоне. Для работы с внешней памятью предварительно должны быть конфигурированы выводы GPIO.
Каждая из трех зон может быть запрограммирована на индивидуальные число тактов ожидания, установки строб-сигнала, время удержания информации, причем для записи и чтения эти времена могут быть установлены различными. Перечисленные параметры доступа конфигурируются в соответствующих регистрах XTIMINGx. За базу при формировании временных интервалов принимается сигнал XTIMCLK, частота которого одинакова для всех зон и может быть равна или в два раза ниже частоты тактовых импульсов контроллера SYSCLKOUT. По умолчанию XTIMCLK выключен, для включения необходимо записать 1 в бит XINTFENCLK регистра PCLKCR3.
Каждая зона может быть отконфигурирована для использования с 16или 32разрядной шириной шины данных.
Зона 0 – маленькая, содержит 8К адресов, зоны 1 и 2 содержат по 1М адресов каждая. Для обращения к внешней памяти в зоне 1 контроллер вырабатывает адреса от 0x00000 до 0x00FFF одновременно с чип-селектом XZCS0, для обращения к внешней памяти в зонах 6 и 7 - адреса 0x00000 до 0xFFFFF одновременно с чип-селектами XZCS6, XZCS7, соответственно.
Все зоны имеют возможность прямого доступа к памяти, позволяя пересылку информации в или из зоны без отвлечения процессора от решения других задач. 3.3.2 Конфигурирование интерфейса внешней памяти
Перед изменением конфигурации интерфейса внешней памяти все обмены с ней должны быть завершены и буфер очищен.
Выбор частоты XTIMCLK осуществляется записью 1 в бит XTIMCLK регистра XINTCNF2. По умолчанию частота XTIMCLK устанавливается в два раза ниже частоты
SYSCLKOUT.
Обращение к внешней памяти начинается по переднему фронту выходных тактов внешней памяти XCLKOUT, частота которых по умолчанию устанавливается в два раза ниже частоты XTIMCLK, при записи 1 в бит CLKMODE регистра XINTFCNF2 частоты уравниваются.
Для снижения шума выдача XCLKOUT может быть отключена записью 1 в бит
CLKOFF регистра XINTCNF2.
Процесс обращения к любому адресу в INTF зоне может быть разбит на три части: начало (lead), рабочая часть (active) и хвост (trail). Число тактов XTIMCLK для каждой части обращения может быть сконфигурировано в соответствующей зоне регистра XTIMING, причем независимо для чтения и записи.
3.4 Прямой доступ к памяти
3.4.1 Прямой доступ к памяти (DMA) – это аппаратный метод передачи данных между периферийными устройствами и/или памятью без вмешательства CPU. В сигнальном контроллере (как и в любом другом) при решении задач много времени затрачивается на пересылку данных из внешней памяти во внутреннюю, из АЦП в память, от одного периферийного устройства другому. Все эти пересылки идут по основным шинам под управлением CPU. Назначение модуля DMA – взять на себя перечисленные транспортные процедуры как в части управления, так и в части транспортного пути – шины DMA.
Модуль DMA содержит 6 каналов и работает по прерываниям и каждый канал имеет собственное прерывание через блок PIE, чтобы сообщить CPU о начале и окончании пересылки (см.рис 3.3). Источниками прерываний могут служить:
-секвенсоры 1 и 2 АЦП;
-прием и передача через многоканальный буферированный порт А и В;
16
-XINT1XINT7 и XINT13;
-таймеры CPU;
-сигналы ePWM;
-программа.
Рис.3.3. Блок-схема системы DMA
DMA связывает между собой следующие устройства:
-Блоки SARAM L4-L7;
-XINTF;
-Регистры результата АЦП, размеченные на memory bus;
-Буферы приема и передачи модулей McBSP-A и McBSP-A;
-Регистры ePWM1-6, размеченные в фрейме 3.
3.5Система тактирования
3.5.1К системе тактирования относятся тактовый генератор, блок повышения/понижения частоты, система управления частотой периферийных блоков, система пониженного энергопотребления и сторожевой таймер.
3.5.2Для выработки тактовых импульсов как правило используются генераторы с кварцевой стабилизацией частоты. Для тактирования цифрового сигнального контроллера TMS320F28335 может быть использован как внешний генератор импульсов, так и встроенный в микросхему. В последнем случае к контактам Х1 и Х2 подключается внешний кварцевый резонатор. Частота тактовых импульсов генератора, которая, как правило, ниже тактовой частоты процессорного ядра, далее повышается, в том числе в дробное число раз в блоке повышения/понижения частоты.
На рис.3.4 приведена блок-схема тактового генератора и блока изменения тактовой частоты. Тактовые импульсы генератора могут передаваться на выход напрямую или их частота может повышаться. Умножение частоты тактовых импульсов осуществляется с помощью системы фазовой автоподстройки частоты (ФАПЧ или PLL). Частота тактовых импульсов может повышаться системой ФАПЧ до 10 раз. Коэффициент повышения
17
частоты устанавливается записью кода в соответствующие поля регистра PLLCR, при этом частота импульсов на выходе системы ФАПЧ не должна превышать 300 МГц.
Рис.3.4. Блок-схема тактового генератора и блока изменения тактовой частоты
Выходные импульсы системы ФАПЧ передаются на выход CLCIN напрямую или их частота может понижаться в 2 или 4 раза. Коэффициент понижения частоты устанавливается записью кода в соответствующие поля регистра PLLSTS. Частота тактовых импульсов на выходе CLCIN может изменяться даже в процессе выполнения программы, обеспечивая минимальный режим энергопотребления.
3.5.3Тактовая частота периферийных блоков может отличаться от тактовой частоты процессорного ядра. Тактовые импульсы подаются на каждый блок периферии индивидуально и могут быть отключены от неиспользуемых блоков. Тактовая частота последовательных портов (кроме I2C и eCAN) может быть изменена относительно тактовой частоты процессора с помощью предварительных блоков масштабирования, которые могут понизить частоту до 14 раз.
3.5.4В цифровом сигнальном контроллере TMS320F28335 предусмотрено три режима пониженного потребления:
-IDLE (перерыв в работе): центральное процессорное ядро переводится в экономичный режим, тактовые импульсы поданы только на используемые в этом режиме блоки; выход из режима по сигналу Reset, по прерыванию от дежурных блоков или сторожевого таймера;
-STANDBY (горячий резерв): генератор, PLL и сторожевой таймер функционируют, на CPU и остальные блоки тактовые импульсы не подаются; выход из режима по сигналу Reset, по внешнему прерыванию, приходящему с любого из GPIO порта А или сторожевого таймера; работа начинается с такта, следующего за тактом, в котором выявлено прерывание;
-HALT (остановка): внутренний генератор выключен – режим минимального потребления; выход из режима по сигналу Reset или по внешнему прерыванию, приходящему с любого из GPIO порта А.
3.5.5Сторожевой таймер предназначен для восстановления работы процессора в случае его «зависания». Блок-схема сторожевого таймера приведена на рис.3.5. Основой сторожевого таймера является 8-разрядный счетчик, на вход которого подаются тактовые импульсы после понижения их частоты. Понижение частоты осуществляется двумя счетчиками, первый из которых делит частоту на 512, а коэффициент деления во втором переменный, устанавливается записью числа в 3 младших разряда регистра WDPS. При заполнении счетчика на выходе сторожевого таймера вырабатывается импульс сброса процессора с длительностью 512 такта.
Для предотвращения сброса пользовательская программа должна регулярно сбрасывать счетчик сторожевого таймера с периодом, не превышающим время
18
заполнения счетчика. Сброс счетчика производится путем поочередной записи чисел 0х55 и 0хАА в ключевой регистр WDKEY.
При необходимости сторожевой таймер может быть отключен.
Рис.3.5. Блок-схема сторожевого таймера
3.6 Система прерываний
3.6.1 В цифровом сигнальном контроллере TMS320F28335 содержится много периферийных блоков и каждый из них способен генерировать одно или несколько прерываний в ответ на внешние события. Число таких прерываний превышает возможности их обработки на уровне процессорного ядра, поэтому в процессоре создан блок расширения прерываний.
Блок расширения периферийных прерываний (PIE) служит для мультиплексирования до 96 источников периферийных прерываний к небольшому числу входов микропроцессорного ядра. 58 прерываний из 96 используются периферией процессора. 96 мультиплексируемых прерываний объединяются в группы по 8 и выход каждой из групп подключается к одному из 12 входов INT1…INT12 прерываний CPU. Каждое из 96 прерываний поддерживается собственным вектором, вектора прерываний хранятся в выделенном блоке памяти (PIE Vector – RAM). Вектора прерываний – это адреса, по которых хранятся подпрограммы обслуживания прерываний. На сохранение текущей информации и вызов процедуры обработки прерывания затрачивается 9 процессорных циклов.
На рис. 3.6 приведена блок-схема обработки мультиплексируемых прерываний. На уровне периферии при возникновении необходимости прерывания бит флага (IF) соответствующего прерывания устанавливается в регистре в выделенное для этого
периферийного устройства место. Если соответствующее прерывание активировано (IE), то периферийное устройство генерирует запрос прерывания в PIE.
На уровне PIE при поступлении запроса прерывания в PIE бит флага (IF) соответствующего прерывания устанавливается в регистре в выделенное для этого периферийного устройства место. Если соответствующее прерывание активировано (IE), проверяется соответствующий данной группе из 8 бит в регистре PIEACKx, чтобы
19
убедиться, что CPU готов работать с этой группой прерываний. Если да, то PIE генерирует запрос прерывания в CPU, если нет, то PIE ждет готовности CPU.
На уровне CPU при поступлении запроса на прерывание устанавливается соответствующий флаг IFR и при установке ядром соответствующего разрешения IER и отсутствии глобальной маски прерываний INTM CPU приступает к подготовке обслуживания прерывания. При этом сохраняются переменные прерываемой программы, очищается конвейер, сохраняется адрес последней операции для возврата. Далее из таблицы векторов прерываний извлекается адрес соответствующей подпрограммы обслуживания прерывания и начинается ее исполнение, флаги PIEFRx автоматически сбрасываются.
Рис.3.6. Блок-схема обработки мультиплексируемых прерываний
3.6.2 Внешние прерывания – поддерживаются 8 маскируемых внешних прерываний (XINT1 – XINT7, XNMI). Параметры сигналов запроса прерываний (фронт, спад) настраиваются индивидуально. XINT1, XINT2, XNMI имеют собственный 16-разрядный счетчик, который позволяет делать точную отметку времени прерывания. Внешние прерывания не имеют однозначной привязки к определенным выводам микросхем,
XINT1, XINT2, XNMI могут быть запрограммированы на выводы, соответствующие GPIO0 …. GPIO31, XINT3 – XINT7 могут быть запрограммированы на выводы, соответствующие GPIO32 …. GPIO63.
Лекция №4 «Цифровой сигнальный контроллер TMS320F28335. Периферийные устройства для систем управления ePWM, eCAP, eQEP. Аналого-цифровой преобразователь. Устройство, программирование функций»
4.1 Модуль eQEP квадратурного датчика (Encoder)
4.1.1 Цифровой сигнальный контроллер TMS320F28335 содержит два модуля eQEP. Модуль используется для прямого интерфейса с линейным или угловым инкрементным датчиком в системах управления движением или положением. Модуль обеспечивает обработку сигналов датчика и формирование информации о положении, направлении и скорости движения.
4.1.2 Инкрементный датчик угла Encoder представляет собой непрозрачный диск, в котором концентрически прорезаны щели, осветитель и фотоприемник, установленные напротив дорожки щелей с разных сторон диска. При повороте диска происходит модуляция светового потока между осветителем и приемником, который вырабатывает
20
