Программирование DSP ADSP-BF538: интерфейс SPORT Tue, April 23 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

ADSP-BF538: интерфейс SPORT Печать
Добавил(а) microsin   

У процессора Blackfin ADSP-BF538 есть четыре одинаковых последовательных порта (SPORT). Они поддерживают различные последовательные протоколы обмена данными, и могут предоставить прямое взаимодействие между процессорами в многопроцессорной системе.

Примечание: все непонятные термины и сокращения см. в разделе Словарик статьи [3].

Эти последовательные порты (SPORT0, SPORT1, SPORT2, SPORT3) предоставляют интерфейс ввода/вывода для широкого спектра периферийных устройств с последовательным интерфейсом. Контроллеры SPORT осуществляют только синхронный последовательный обмен данными; асинхронный последовательный обмен (как у RS-232) реализуется через UART [2]. Каждый SPORT имеет одну группу выводов (primary data, secondary data, clock и frame sync) для передачи и второй набор выводов для приема. Функции приема и передачи программируются по отдельности. Каждый SPORT работает как полнодуплексное устройство, которое может одновременно передавать данные в обоих направлениях. Контроллеры SPORT могут быть запрограммированы для нужной скорости (bit rate), синхронизации фрейма (frame sync) и количества бит на слово путем записи MMR-регистров.

Соглашения именования для регистров и выводов используют маленькую букву x для представления цифры от 0 до 3. Например, RFSx относится к выводам RFS0, RFS1, RFS2 или RFS3, соответствующих SPORT0, SPORT1, SPORT2 и SPORT3. LSB обозначает младший значащий бит (least significant bit), и MSB означает старший значащий бит (most significant bit).

Все порты SPORT имеют одинаковые возможности и программируются также одинаково. Каждый SPORTx имеет свой набор регистров управления и буферов данных.

SPORTx используют импульсы начала фрейма (frame sync), чтобы показать начало каждого слова или пакета бит, и тактовые сигналы маркера бит (bit clock), помечающие начало бита данных. Для буферов TX и RX доступны внешние сигналы bit clock и frame sync.

С набором опций настройки тактов и синхронизации фрейма контроллеры SPORT позволяют реализовать различные последовательные протоколы, включая H.100, и предоставляют прозрачный аппаратный интерфейса со многими конвертерами данных и кодеками, работающими по индустриальным стандартам.

SPORTx могут работать на тактовых частотах бит до SCLK/2 при использовании внешнего тактирования, или до половины от системной тактовой частоты для случая внутренней генерации тактовой частоты для синхронизации бит. Внешний сигнал тактирования бит для SPORT должен быть всегда меньше частоты SCLK. Независимое тактирование приема и передачи предоставляют больше гибкости при последовательном обмене данными.

Такты бит SPORT и сигналы синхронизации фрейма могут генерироваться внутри процессора, либо могут подаваться от внешнего источника. Порты SPORT могут работать с форматом передачи LSB first (младший бит идет первым) или MSB first (старший бит идет первым), с выбираемой длиной слова от 3 до 32 бит. Они предоставляют выбираемые режимы передачи опционально μ-law или A-law компандирование на аппаратном уровне. Данные SPORT могут автоматически передаваться между встроенной в чип памятью и внешней памятью с использованием блоковых пересылок DMA [4]. Дополнительно каждый SPORTx предоставляет режим многоканального TDM (time-division-multiplexed).

Каждый SPORTx имеет следующие функции и возможности:

• Предоставление независимых друг от друга функций передачи и приема.
• Слова последовательных данных могут быть размерностью от 3 до 32 бит, можно по выбору передавать первым MSB либо LSB.
• Предоставление альтернативного управления и разбиения на фреймы для организации интерфейса с устройствами I2S, а также с другими форматами последовательной передачи данных звука (например, выровненные влево последовательные данные стерео).
• Есть FIFO с двойной буферизацией данных (и функция приема, и функция передачи имеют регистр буфера данных и регистр сдвига), что предоставляет дополнительный сервис обслуживания SPORT в реальном времени.
• Можно составлять цепочки передач DMA для нескольких блоков данных.
• Предоставлены два синхронных передающих и два синхронных принимающих вывода данных и буферы в каждом SPORT, чтобы удвоить пропускную способности поддерживаемых потоков данных.
• Выполнение аппаратного компандирования A-law и μ-law для передаваемых и принимаемых слов (подробнее см. раздел "Компандирование").
• Генерируемые внутри чипа такты бит и сигналов фрейма в широком диапазоне частот, либо можно использовать тактовые сигналы, подаваемые снаружи.
• Может работать для каждого слова данных как с сигналами синхронизации фрейма, так и без них, с сигналами фрейма, генерируемые внутренне или подаваемыми снаружи, с активным уровнем лог. 1 или лог. 0 для сигнала фрейма, и с конфигурируемыми двумя длительностями ширины импульса и временными параметрами сигнала фрейма.
• Выполняет одиночную передачу слова в память чипа и из памяти чипа с поддержкой прерывания, под управлением процессора.
• Выполняет передачи с прямым доступом к памяти (DMA) в память и из памяти под управлением DMA Master. DMA может запускаться с автоповторами буфера (последовательные, повторяющиеся, одинаковые передачи) или на базе дескрипторов (индивидуально или с повторяющимися диапазонами передач, каждая из которых может иметь разные параметры DMA).
• Выполняет передачи DMA в память чипа и из неё. Каждый SPORT может автоматически принять и передать весь блок данных.
• Имеется многоканальный режим для интерфейсов TDM. Каждый SPORT может принять или передать данные выборочно из последовательного потока бит TDM 128 соседних каналов из общего потока до 1024 каналов. Этот режим может быть полезен в качестве сетевой схемы обмена между несколькими процессорами. 128 доступных каналов процессора можно выбрать путем старта с любого канала от 0 до 895 = (1023 – 128). Обратите внимание, что многоканальные регистры выбора и регистр WSIZE управляют тем, какое подмножество из 128 каналов попадают в активную область для доступа.

Примечание переводчика: тут много чего понаписано, но к сожалению SPORT имеет не так уж много настроек, как хотелось бы. В частности, очень бедные настройки параметров сигнала фрейма (в сравнении, например, с портом SSC микроконтроллеров AT91 компании Atmel), что усложняет применение SPORT совместно с последовательными АЦП той же компании Analog Devices. В сущности, SPORT очень простой, и бедный по возможностям тонких настроек, т. е. он заточен в основном на конкретные приложения. Среди положительных свойств SPORT можно отметить, что портов SPORT много, целых 4 штуки, и что они синхронны между собой и также синхронны с другими периферийными устройствами (например, таймерами, потому что тактируются общей частотой системной шины SCK). Еще мне очень нравятся возможности DMA для работы совместно с SPORT - вот тут все хорошо и приятно сделано.

В таблице 13-1 показаны выводы для каждого SPORT.

Таблица 13-1. Выводы SPORT.

Вывод Описание
DTxPRI Transmit Data Primary, первичный канал передачи данных.
DTxSEC Transmit Data Secondary, вторичный канал передачи данных.
TSCLKx Transmit Clock, тактирование бит передачи.
TFSx Transmit Frame Sync, сигнал синхронизации фреймов передачи.
DRxPRI Receive Data Primary, первичный канал приема данных.
DRxSEC Receive Data Secondary, вторичный канал приема данных.
RSCLKx Receive Clock, тактирование бит приема.
RFSx Receive Frame Sync, сигнал синхронизации фреймов приема.

Примечание: у SPORT0 и SPORT1 имеются выделенные ножки кристалла, в то время как SPORT2 и SPORT3 мультиплексируют свои функции с портами GPIO. Подробнее про эти GPIO см. статью [5].

В таблицах приведена цоколевка ножек 316-выводного корпуса CSP BGA микроконтроллера Blackfin ADSP-BF538, подключенных к SPORT0, SPORT1, SPORT2, SPORT3.

[SPORT0]

Вывод Ножка CSP BGA
RSCLK0 R2
RFS0 P2
DR0PRI N2
DR0SEC J3
TSCLK0 P1
TFS0 N1
DT0PRI M1
DT0SEC G3

[SPORT1]

Вывод Ножка CSP BGA
RSCLK1 L1
RFS1 K1
DR1PRI J2
DR1SEC H3
TSCLK1 H2
TFS1 J1
DT1PRI H1
DT1SEC D3

[SPORT2]

Вывод Ножка CSP BGA
RSCLK2/PE0 W11
RFS2/PE1 Y11
DR2PRI/PE2 W12
DR2SEC/PE3 V13
TSCLK2/PE4 Y12
TFS2/PE5 Y13
DT2PRI/PE6 W13
DT2SEC/PE7 V16

[SPORT3]

Вывод Ножка CSP BGA
RSCLK3/PE8 U18
RFS3/PE9 T18
DR3PRI/PE10 R18
DR3SEC/PE11 P18
TSCLK3/PE12 L18
TFS3/PE13 M18
DT3PRI/PE14 F18
DT3SEC/PE15 N18

SPORT принимает последовательные данные через свои входы DRxPRI и DRxSEC, и передает последовательные данные через свои выходы DTxPRI и DTxSEC. Он может одновременно принимать и передавать, что дает полнодуплексное функционирование. Для передачи биты данных (DTxPRI и DTxSEC) синхронны с тактами передачи (TSCLKx). Для приема биты данных (DRxPRI и DRxSEC) синхронны с тактами приема (RSCLKx). Тактовый сигнал является выходом, если такты генерируются внутри процессора, или входом, если такты генерируются снаружи. Сигналы синхронизации фрейма RFSx и TFSx используются, чтобы показать начало последовательного слова данных или потока последовательно передаваемых слов.

Выводы первичных и вторичных данных предоставляют метод увеличения пропускной способности последовательного порта. Они не ведут себя как полностью отдельные SPORT-ы; вместо этого они работают синхронно (используя общий такт и сигнал фрейма), но перегоняя разные данные. Данные, принимаемые через первичный и вторичный вывод данных чередуются в основной памяти и могут быть получены установкой шага в блоке генераторов адреса данных (data address generators, DAG). Подробнее про DAG см. [3].

Подобным адресом для TX должны быть записаны регистры TX альтернативным способом - сначала для первичного канала, потом для вторичного, и т. д. Это проще выполнять с помощью узлов DAG процессора.

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

На рис. 13-1 показана упрощенная блок-диаграмма одного SPORT. Данные для передачи записываются из внутреннего регистра процессора в регистр SPORTx_TX через внутреннюю шину доступа к периферийным устройствам. Эти данные опционально могут быть аппаратно компрессированы и автоматически переданы в регистр сдвига передачи TX. Биты в регистре сдвига выдвигаются наружу на вывод DTxPRI/DTxSEC, первым может идти MSB или LSB (это настраивается), синхронно с последовательными тактами на выводе TSCLKx. Принимающая часть SPORT получает данные от вывода DRxPRI/DRxSEC синхронно с тактами данных на выводе RSCLKx. Когда принято все слово, данные опционально расширяются (операция, обратная компандированию), затем автоматически передаются в регистр SPORTx_RX, и затем в RX FIFO, где они становятся доступными для процессора.

ADSP BF538 SPORT block diagram

Рис. 13-1. Блок-диаграмма SPORT. 

Примечание 1: все пути данных с широкими стрелками имеют ширину 16 или 32 бита, в зависимости от SLEN. Для SLEN = 2 .. 15 используется 16-битный канал данных с глубиной FIFO из 8 уровней. Для SLEN = 16 .. 31, используется 32-битный канал данных с глубиной FIFO 4 уровня.

Примечание 2: регистры Tx являются дном для Tx FIFO, регистры Rx являются вершиной Rx FIFO.

На рис. 13-2 показано возможное подключение к порту SPORT. Обратите внимание, что устройства A и B должны быть синхронными, поскольку используют общие сигналы фрейма и тактов. То же самое верно и для последовательных устройств C и D.

ADSP BF538 SPORT connections

Рис. 13-2. Соединения с портом SPORT.

На рис. 13-3 показан пример стереофонического последовательного устройства с 3 каналами передачи и 2 каналами приема, подключенных к процессору.

ADSP BF538 SPORT stereo serial connection

Рис. 13-3. Пример соединения для вывода стереосигнала.

[Как работает SPORT]

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

Запись в регистр SPORTx_TX подготавливает SPORT для передачи. Сигнал TFSx инициирует передачу последовательных данных. Как только передача началась, каждое значение, записанное в регистр SPORTx_TX, передается через FIFO во внутренний регистр сдвига передачи. Затем биты передаются, начиная с либо MSB, либо с LSB, как это задано настройкой регистра SPORTx_TCR1. Каждый бит выдвигается по управляющему перепаду TSCLKx. Управляющий перепад TSCLKx может быть сконфигурирован на фронт или спад. SPORT генерирует прерывание передачи или запрос передачи DMA, как только есть место в TX FIFO.

Как только SPORT принимает биты, они накапливают их во внутреннем регистре приема. Когда принято все слово, оно записывается в регистр SPORT FIFO, и генерируется прерывание приема для этого SPORT, или инициируется передача DMA. Прерывания генерируются по-другому, если выполняется блочная передача DMA. Подробнее про работу DMA см. [4].

Запрет SPORT. SPORTx автоматически запрещаются при аппаратном или программном сбросе процессора. SPORT также может быть запрещен напрямую путем очистки бит разрешения передачи или приема(TSPEN в регистре SPORTx_TCR1 и RSPEN в регистре SPORTx_RCR1 соответственно). Каждый метод дает разный эффект для SPORT.

Сброс процессора запрещает порты SPORTx путем очистки регистров SPORTx_TCR1, SPORTx_TCR2, SPORTx_RCR1 и SPORTx_RCR2 (включая разрешающие биты TSPEN и RSPEN) и регистров SPORTx_TCLKDIV, SPORTx_RCLKDIV, SPORTx_TFSDIV и SPORTx_RFSDIV делителей тактов и синхронизации фрейма. Любая происходящая в этот момент работа будет прервана.

Очистка битов разрешения TSPEN и RSPEN запретит SPORTx и оборвет любые происходящие в этот момент операции. Биты состояния также очищаются. Биты конфигурации остаются неизменными и могут быть прочитаны программно, когда их нужно изменить или перезаписать. Для запрета выходных тактов SPORT нужно запретить SPORT.

Имейте в виду, что запрещение SPORT через биты TSPEN/RSPEN может укоротить текущие активные импульсы на выводах TFSx/RFSx и TSCLKx/RSCLKx, если эти сигналы сконфигурированы для генерации внутри процессора.

Когда запрещается SPORT во время многоканального режима, сначала запретите TSPEN, и затем запретите RSPEN. Обратите внимание, что оба TSPEN и RSPEN должны быть запрещены перед повторным их разрешением. Нельзя запретить только TX или только RX.

Установка режимов SPORT. Конфигурация SPORT происходит установкой битов и значений битовых полей в регистрах конфигурации. Каждый SPORT должен быть сконфигурирован перед разрешением. Как только SPORT разрешен, последующая запись в регистры конфигурации SPORT запрещена (за исключением SPORTx_RCLKDIV, SPORTx_TCLKDIV и регистров выбора канала многоканального режима). Для изменения значений во всех других регистрах конфигурации SPORT, запретите сначала SPORT очисткой TSPEN в SPORTx_TCR1 и/или RSPEN в SPORTx_RCR1.

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

Запись в регистры и эффективная задержка. Когда SPORT запрещен (очищены TSPEN и RSPEN), записи в регистр SPORT внутренне завершаются по окончанию цикла SCLK, в котором они произошли, и регистр вычитывается обратно вновь записанным значением на следующем цикле.

Когда SPORT разрешен на передачу (установлен TSPEN) или прием (установлен RSPEN), в соответствующий регистр конфигурации SPORT запрещена запись (за исключением SPORTx_RCLKDIV, SPORTx_TCLKDIV и регистров выбора канала в многоканальном режиме). Записи в регистр SPORTx_TX всегда разрешены; регистры SPORTx_RX, SPORTx_CHNL и SPORTx_STAT работают только на чтение.

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

Большинство регистров конфигурации могут быть изменены только когда SPORT запрещен (TSPEN/RSPEN = 0). Изменения вступят в силу только после разрешения работы SPORT. Исключение из этого правила 0 регистры TCLKDIV/RCLKDIV и регистры выбора канала многоканального режима.

Основные регистры управления для передающей части каждого SPORT, настраивающие передачу, это регистры SPORTx_TCR1 и SPORTx_TCR2.

SPORT разрешается на передачу, если бит 0 (TSPEN) регистра SPORTx_TCR1 установлен в 1. Этот бит очищается либо аппаратным, либо программным сбросом, что запрещает все передачи SPORT.

Когда SPORT разрешен на передачу (TSPEN установлен), записи в соответствующие регистры конфигурации SPORT не разрешены, за исключением SPORTx_TCLKDIV и регистров выбора канала многоканального режима. Записи в не разрешенные регистры не дают никакого эффекта. Когда SPORT разрешен, SPORTx_TCR1 не записывается, за исключением бита 0 (TSPEN). Например:

write (SPORTx_TCR1, 0x0001); /* SPORT TX разрешен */
write (SPORTx_TCR1, 0xFF01); /* операция будет проигнорирована,
                                и не даст никакого эффекта */
write (SPORTx_TCR1, 0xFFF0); /* SPORT запрещен, SPORTx_TCR1
                                все еще равен 0x0000 */

Адреса для этих регистров SPORT:

SPORT0_TCR1 – 0xFFC0 0800 SPORT0_TCR2 – 0xFFC0 0804
SPORT1_TCR1 – 0xFFC0 0900 SPORT1_TCR2 – 0xFFC0 0904
SPORT2_TCR1 – 0xFFC0 2500 SPORT2_TCR2 – 0xFFC0 2504
SPORT3_TCR1 – 0xFFC0 2600 SPORT3_TCR2 – 0xFFC0 2604

ADSP BF538 SPORTx TCR1

Рис. 13-4. SPORTx Transmit Configuration 1 Register.

• Transmit Enable (TSPEN). Этот бит выбирает, разрешен ли SPORT для передачи (если бит установлен) или же запрещен (если очищен).

Установка TSPEN приведет к немедленному выставлению прерывания SPORT TX, что показывает пустоту буфера данных передачи, и что его нужно заполнить. Обычно это желаемое поведение, потому что позволит централизовать код записи передачи в обработчике прерывания TX (обработчик прерывания сокращенно называется ISR, от сокращения interrupt service routine). По этой причине код программы перед установкой TSPEN должен сначала инициализировать ISR, чтобы быть готовым к обработке прерываний TX.

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

Очистка TSPEN приведет к тому, что SPORT остановит управление выводом данных, генерацию тактов TSCLK и сигнала синхронизации фрейма; это также выключит внутренние схемы SPORT. В приложениях, где сделан акцент на снижении энергопотребления, жизнь батареи можно продлить, если очищать TSPEN всякий раз, когда SPORT не задействован.

Все управляющие регистры SPORT должны быть запрограммированы перед установкой TSPEN. Типичный код инициализации SPORT сначала записывает все поля и биты управляющих регистров (включая DMA, если это используется). Последний шаг в коде - запись в SPORTx_TCR1 со всеми необходимыми битами, включая TSPEN.

• Internal Transmit Clock Select (ITCLK). Этот бит выбирает внутренние такты передачи (если ITCLK установлен) или внешние такты передачи (если ITCLK очищен) на выводе TSCLK. Значение TCLKDIV MMR не используется, когда выбрана внешняя тактовая частота. 

• Data Formatting Type Select (TDTYPE[1:0]). Два бита TDTYPE указывают форматы данных, используемые для одноканального и многоканального функционирования.

00 - Обычное функционирование.
01 - Зарезервировано.
10 - Используется компандирование μ-law.
11 - Используется компандирование A-law.

• Bit Order Select (TLSBIT). Бит TLSBIT выбирает порядок следования бит слов данных, передаваемых через SPORT (какой бит идет первым - MSB или LSB).

• Serial Word Length Select (SLEN). Длина последовательного слова данных (количество бит в каждом слове, передаваемом через SPORT) вычисляется путем добавления 1 к значению поля SLEN:

Serial Word Length = SLEN + 1

Поле SLEN может быть установлено в значение от 2 до 31; 0 и 1 недопустимые значения для этого поля. Три общие настройки для поля SLEN это 15 (передача полного 16-битного слова, 7 (для передачи 8 бит байта) и 23 (для передачи 24 битного слова). Процессор может загрузить 16- или 32-битные значения в буфер передачи через DMA или инструкцию записи MMR; поле SLEN говорит контроллеру SPORT, сколько этих бит выдвигать из регистра через последовательный линк. Последовательный порт передает биты [SLEN:0] из буфера передачи.

Сигнал frame sync управляется регистрами SPORTx_TFSDIV и SPORTx_RFSDIV, не SLEN. Для генерирования импульса frame sync для каждого передаваемого байта, должен быть правильно запрограммирован делитель для генерации импульса синхронизации фрейма (frame sync divider) в соответствующем регистре; установка SLEN в значение 7 не приведет к генерации импульса frame sync для каждого передаваемого байта.

• Internal Transmit Frame Sync Select (ITFS). Этот бит выбирает использует ли SPORT внутренний сигнал TFS (если бит установлен) или внешний сигнал TFS (если очищен).

• Transmit Frame Sync Required Select (TFSR). Этот бит выбирает, требует ли SPORT (если бит установлен) или не требует (если очищен) передачи frame sync для каждого слова данных.

Бит TFSR обычно устанавливается во время конфигурирования SPORT. Импульс frame sync используется для пометки начала каждого слова или пакета данных, и большинство систем нуждаются в правильном функционировании frame sync.

• Data-Independent Transmit Frame Sync Select (DITFS). Этот бит выбирает, генерирует ли SPORT независимый от данных TFS (синхроимпульсы следуют с выбранным интервалом) или зависимый от данных TFS (синхроимпульсы генерируются, когда данные присутствуют в SPORTx_TX) для случая, когда выбрана внутренняя генерация frame sync (ITFS = 1). Бит DITFS игнорируется, когда выбран внешний сигнал frame sync.

Как уже упоминалось, импульс frame sync помечает начало каждого слова данных. Если бит DITFS установлен, то импульс frame sync выдается по времени, независимо от того, был ли загружен регистр SPORTx_TX или нет; если же DITFS очищен, импульс frame sync генерируется только если загружен регистр данных SPORTx_TX. Если приемник требует регулярных по времени импульсов frame sync, то DITFS должен быть установлен, и процессор должен следить за загрузкой в нужное время регистра SPORTx_TX. Если регистр допускает произвольно позднее появление импульсов frame sync, DITFS должен быть очищен для предотвращения повторной передачи старых данных SPORT, или передачи поврежденных данных, если процессор опоздал с загрузкой регистра SPORTx_TX.

• Low Transmit Frame Sync Select (LTFS). Этот бит выбирает активный 0 для TFS (если бит LTFS) или активный 1 для TFS (если LTFS очищен).

• Late Transmit Frame Sync (LATFS). Этот бит конфигурирует поздние импульсы frame sync (если установлен) или ранние импульсы frame sync (если очищен).

• Clock Drive/Sample Edge Select (TCKFE). Этот бит выбирает, по какому срезу сигнала TCLKx SPORT управляет данными для генерируемых внутри чипа сигналов frame sync, и для подаваемых сигналов frame sync снаружи. Если этот бит установлен, то данные и генерируемые внутри сигналы frame syncs управляются по спаду, и внешние сигналы frame sync анализируются по нарастанию. Если бит очищен, то данные и генерируемые внутри сигналы управляются по нарастанию, и внешние сигналы frame sync анализируются по спаду.

ADSP BF538 SPORTx TCR2

Рис. 13-5. SPORTx Transmit Configuration 2 Register.

• SLEN[4:0]. Поле, определяющее длину слова. Значения 00000 и 00001 недопустимы, остальные значения задают количество бит в слове +1.

• TxSec Enable (TXSE). Этот бит (если установлен) разрешает передачу вторичной части данных последовательного порта.

• Stereo Serial Enable (TSFSE). Этот бит (если установлен) разрешает режим работы stereo. По умолчанию этот бит очищен, разрешая нормальное поведение тактирования бит и сигналов frame sync.

• Left/Right Order (TRFST). Если этот бит установлен, то в режиме stereo правый канал передаются первым. По умолчанию этот бит очищен, так что первым будет передаваться левый канал.

Основные регистры управления для приемной части каждого SPORT, настраивающие прием, это регистры SPORTx_RCR1 и SPORTx_RCR2.

SPORT разрешается на прием, если бит 0 (RSPEN) регистра SPORTx_RCR1 установлен в 1. Этот бит очищается либо аппаратным, либо программным сбросом, что запрещает весь прием данных SPORT.

Когда SPORT разрешен на прием (RSPEN установлен), то соответствующие регистры конфигурации SPORT нельзя записывать, за исключением SPORTx_RCLKDIV и регистров выбора канала многоканального режима. Записи в запрещенные регистры не дают никакого эффекта. Пока SPORT разрешен, SPORTx_RCR1 не записывается, за исключением бита 0 (RSPEN). Например:

write (SPORTx_RCR1, 0x0001); /* SPORT RX разрешен */
write (SPORTx_RCR1, 0xFF01); /* действие игнорируется, и не дает эффекта */
write (SPORTx_RCR1, 0xFFF0); /* SPORT запрещен, SPORTx_RCR1 все еще
                                равен 0x0000 */

Адреса регистров настройки приема SPORT:

SPORT0_RCR1 – 0xFFC0 0820 SPORT0_RCR2 – 0xFFC0 0824
SPORT1_RCR1 – 0xFFC0 0920 SPORT1_RCR2 – 0xFFC0 0924
SPORT2_RCR1 – 0xFFC0 2520 SPORT2_RCR2 – 0xFFC0 2524
SPORT3_RCR1 – 0xFFC0 2620 SPORT3_RCR2 – 0xFFC0 2624

ADSP BF538 SPORTx RCR1

Рис. 13-6. SPORTx Receive Configuration 1 Register.

• Receive Enable (RSPEN). Этот бит выбирает, будет ли SPORT разрешен на прием (если установлен) или запрещен (если очищен). Установка RSPEN включает SPORT и приводит к оцифровке данных на выводах приема данных, как и работу узлов тактирования бит и сигнала frame sync в соответствии с запрограммированными настройками.

Установка RSPEN разрешает приемник SPORTx, который может сгенерировать прерывание SPORTx RX. По этой причине код программы перед установкой RSPEN должен сначала инициализировать ISR и/или управляющие регистры DMA (в зависимости от того какая схема приема используется), чтобы быть готовым к обработке прерываний RX. Установка RSPEN также генерирует запросы DMA, если DMA разрешен и данные были приняты. Установите все управляющие регистры DMA перед установкой RSPEN. Очистка RSPEN приведет к тому, что SPORT сразу остановит прием данных; очистка этого бита также выключит внутренние схемы SPORT. В приложениях, где сделан акцент на снижении энергопотребления, жизнь батареи можно продлить, если очищать RSPEN всякий раз, когда SPORT не задействован.

Все управляющие регистры SPORT должны быть запрограммированы перед установкой RSPEN. Типичный код инициализации SPORT сначала записывает все управляющие регистры, включая управление DMA, если DMA используется. Последний шаг в работе кода - запись в SPORTx_RCR1 всех необходимых бит, включая установку RSPEN.

• Internal Receive Clock Select (IRCLK). Этот бит выбирает использование внутреннего тактового сигнала бит приема (если установлен) или внешнего (если очищен). Значение RCLKDIV MMR не используется, когда выбрано внешнее тактирование.

• Data Formatting Type Select (RDTYPE[1:0]). Два бита RDTYPE задают один из 4 форматов данных, используемых для одноканальной и многоканальной работы.

00 - Обычное функционирование (Zero-fill).
01 - Sign-extended.
10 - Используется компандирование μ-law.
11 - Используется компандирование A-law.

Примечание: поле RDTYPE удобно использовать для представления считываемого из SPORT значения слова как число в формате кодирования знака с двоичным дополнением до 2 (так называемый дополнительный код), если использовать формат 01 - Sign-extended. Это стандартный формат для кодирования отрицательных чисел, который применяется во многих промышленных АЦП. Например, 18-битное АЦП AD7691 [6] как раз использует такой формат кодирования результата преобразования, поэтому установка поля RDTYPE в значение 01 избавляет от лишних команд преобразования выборки АЦП, сразу давая нужный формат числа. Т. е. 18-битное значение, считанное из АЦП, будет сразу автоматически преобразовано в 32-битное готовое число со знаком типа int.

• Bit Order Select (RLSBIT). Бит RLSBIT выбирает порядок следования бит, принимаемых SPORT.

• Internal Receive Frame Sync Select (IRFS). Этот бит выбирает, использует ли SPORT внутренний RFS (если установлен) или внешний RFS (если очищен).

• Receive Frame Sync Required Select (RFSR). Этот бит выбирает, требует ли SPORT (если RFSR установлен) или не требует (если RFSR очищен) получения frame sync для каждого слова данных.

• Low Receive Frame Sync Select (LRFS). Этот бит выбирает активный уровень 0 для RFS (если LRFS установлен), или активный 1 для RFS (если LRFS очищен).

• Late Receive Frame Sync (LARFS). Этот бит конфигурирует поздний frame sync (если LARFS установлен), или ранний frame sync (если LARFS очищен).

• Clock Drive/Sample Edge Select (RCKFE). Этот бит выбирает, какой перепад сигнала RSCLK использует SPORT для оцифровки данных, как для генерируемых внутри сигналов фрейма, так и поступающих снаружи. Если RCKFE установлен, то генерируемые внутри сигналы frame sync управляются по спаду, и данные и поступающие снаружи frame sync обрабатываются по спаду. Если RCKFE очищен, то генерируемые внутри frame sync управляются по нарастанию, и данные и поступающие снаружи frame sync обрабатываются по спаду.

ADSP BF538 SPORTx RCR2

Рис. 13-7. SPORTx Receive Configuration 2 Register.

• Serial Word Length Select (SLEN[4:0]). Длина слова бит (количество бит в каждом слове, принятом SPORT) вычисляется добавлением 1 к значению поля SLEN. Поле SLEN может быть установлено в любое значение от 2 до 31; значения 0 и 1 недопустимы для этого поля.

Сигнал frame sync управляется регистрами SPORTx_TFSDIV и SPORTx_RFSDIV, не SLEN. Чтобы генерировать импульс frame sync для каждого передаваемого байта или слова, должен быть правильно запрограммирован frame sync divider в соответствующем регистре; установка SLEN в 7 не приведет к генерации импульса frame sync для каждого передаваемого байта.

• RxSec Enable (RXSE). Этот бит (если установлен) разрешает вторичный канал приема данных.

• Stereo Serial Enable (RSFSE). Этот бит (если установлен) разрешает работу режима stereo. По умолчанию этот бит очищен, что разрешает нормальное поведение тактирования бит и генерации frame sync.

• Left/Right Order (RRFST). Если этот бит установлен, то в режиме stereo сначала принимается правый канал. По умолчанию этот бит очищен, так что первым будет приниматься левый канал.

[Форматы слова данных]

Формат слова данных, передаваемого через SPORT, конфигурируется комбинацией поля SLEN для передачи и поля SLEN для приема, а также битов RDTYPE, TDTYPE, RLSBIT и TLSBIT bits регистров SPORTx_TCR1, SPORTx_TCR2, SPORTx_RCR1 и SPORTx_RCR2.

Регистр передачи данных SPORTx (SPORTx_TX) работает только на запись. Чтение приведет е ошибке доступа к шине периферийных устройств (peripheral access bus, PAB). Записи в этот регистр приведут к записям в FIFO передатчика. Если FIFO работает в режиме 16 бит (когда выбранная длина слова меньше или равна 16 бит), то он будет глубиной в 8 ячеек. Если FIFO работает в режиме 32 бита (когда выбранная длина слова больше 16 бит), то глубина FIFO будет 4 ячейки. FIFO является общим и для первичных, и для вторичных данных. Порядок хранения данных в FIFO показан на рис. 13-8.

Разрешен только канал PRIMARY: Разрешены оба канала, PRIMARY и SECONDARY:
ADSP BF538 SPORTx PRIMARY 3 16 bits ADSP BF538 SPORTx PRIMARY and SECONDARY 3 16 bits
Длина данных меньше или равна 16 бит. В FIFO находится 8 слов PRIMARY-данных Длина данных меньше или равна 16 бит. В FIFO находится 4 слова PRIMARY-данных и 4 слова SECONDARY-данных
ADSP BF538 SPORTx PRIMARY 17 32 bits ADSP BF538 SPORTx PRIMARY and SECONDARY 17 32 bits
Разрешен только канал PRIMARY. Длина данных больше 16 бит. В FIFO находится 4 слова PRIMARY-данных Длина данных больше 16 бит. В FIFO находится 2 слова PRIMARY-данных и 2 слова SECONDARY-данных

Рис. 13-8. Порядок расположения данных в SPORT Transmit FIFO.

Важно сохранить чередование первичных и вторичных данных в FIFO так, как это показано на рисунке. Это означает, что записи PAB/DMA в FIFO должны следовать такому порядку, что первичные данные идут первыми, и затем идут вторичные данные, если вторичный канал данных разрешен. Записи DAB/PAB должны соответствовать по размеру используемой длине слова. Для длины слова меньше или равного 16 бит используйте 16-битные записи. Для слов длиной больше 16 бит используйте 32-битные записи.

Когда передача разрешена, данные для FIFO собираются в регистре хранения TX на базе выбранных TXSE и SLEN, и затем выдвигаются в первичный и вторичный регистры сдвига. Отсюда данные выдвигаются наружу бит за битом через выводы DTxPRI и DTxSEC (первичный и вторичный выводы передачи данных). См. рис. 13-9.

ADSP BF538 SPORTx TX

Рис. 13-9. SPORTx Transmit Data Register.

Прерывание SPORT TX выставляется, когда TSPEN = 1 и в TX FIFO имеется место для дополнительных слов. Это прерывание не произойдет, если разрешено DMA для SPORT. Подробнее про работу DMA см. статью [4].

Бит запаздывания заполнения данных передачи (transmit underflow, TUVF) установится в регистре состояния SPORT, когда появится импульс frame sync передачи, и при этом не были загружены новые данные в регистр сдвига передачи. В многоканальном режиме (multichannel mode, MCM), TUVF установится всякий раз, когда регистр сдвига не загружен, и передача началась с текущего разрешенного канала. Бит состояния TUVF является sticky-битом (удерживающим свое состояние), работающим по принципу write-1-to-clear (W1C, записать 1 для очистки), и который также очищается при запрете SPORT на передачу (записью TSPEN = 0).

Если программа попытается записать в заполненный TX FIFO через запись SPORTx_TX, то новые данные будут потеряны, и имеющиеся данные в FIFO не будут перезаписаны. В такой ситуации установится бит статуса TOVF и будет выставлено прерывание ошибки SPORT. Бит TOVF также является sticky-битом, причем его можно очистить только путем запрета SPORT TX. Чтобы определить, может ли ядро процессора получить доступ к регистру SPORTx_TX без возникновения такой ошибки, сначала прочитайте регистр статуса (состояния). Бит TXF регистра статуса SPORT будет равен 0, если в FIFO имеется место для записи очередного слова.

Биты статуса TXF и TOVF в регистре статуса SPORTx обновляются записью из ядра процессора, даже когда SPORT запрещен.

Адреса регистров передачи данных SPORT:

SPORT0_TX – 0xFFC0 0810 SPORT2_TX – 0xFFC0 2510
SPORT1_TX – 0xFFC0 0910 SPORT3_TX – 0xFFC0 2610

Регистр приема данных SPORTx (SPORTx_RX) работает только на чтение, см. рис. 13-10. Запись в него приведет к ошибке PAB. У регистра одно и то же место положения в адресном пространстве как для первичных, так и для вторичных данных. Чтение из этого регистра приводит к получению из FIFO принятых данных. У FIFO приема такая же организация, как и у FIFO передачи, т. е. в 16-битном режиме (когда длина принимаемого слова меньше или равна 16 бит) FIFO будет 8 ячеек глубиной, и в 32-битном режиме (когда длина слова больше 16 бит) глубина FIFO будет 4 ячейки. FIFO является общим для первичных и вторичных данных приема. Порядок чтения для чтений PAB/DMA важен, поскольку данные в FIFO сохраняются по-разному в зависимости от установок бит конфигурации SLEN и RXSE.

ADSP BF538 SPORTx RX

Рис. 13-10. SPORTx Receive Data Register.

Когда происходит чтение FIFO для получения как первичных, так и вторичных данных, сначала будут прочитаны первичные данные, за которыми будут идти вторичные. Чтения DAB/PAB должны соответствовать по своему размеру используемой длине слов данных. Для слов длиной до 16 бит включительно используйте 16-битное чтение. Используйте 32-битное чтение для слов длиной больше 16 бит.

Когда прием разрешен, данные с вывода DRxPRI загружаются в первичный регистр сдвига RX, тогда как данные с вывода DRxSEC загружаются во вторичный регистр сдвига RX. При завершении передачи слова данные перемещаются в регистры хранения RX для первичных и для вторичных данных соответственно. Затем данные из регистров хранения перемещаются в FIFO, основываясь на запрограммированных параметрах RXSE и SLEN.

Генерируется прерывание SPORT RX, когда RSPEN = 1 и в RX FIFO имеются принятые данные. Когда ядро процессора прочитало все слова в FIFO, прерывание RX очищается. Прерывание SPORT RX установится только тогда, когда запрещено SPORT RX DMA; иначе FIFO будет вычитываться чтениями DMA.

Если программа попытается прочитать пустой RX FIFO, будут прочитаны старые данные, и в регистре статуса SPORTx_STAT установится флаг RUVF, и будет выставлено прерывание ошибки SPORT. Бит RUVF является sticky-битом, и он будет очищен только когда SPORT будет запрещен. Чтобы определить, может ли ядро получить доступ к регистрам RX без возникновения такой ошибки, сначала прочитайте состояние RX FIFO (RXNE в регистре статуса SPORT). Бит RUVF обновляется даже когда SPORT запрещен.

Бит статуса ROVF в регистре SPORTx_STAT устанавливается, когда новое слово собрано в регистре сдвига RX, и регистр хранения RX не переместил данные в FIFO. Слово, которое было ранее записано в регистр хранения, будет перезаписано (т. е. потеряно). Бит ROVF является sticky-битом; он очищается только запретом приемника SPORT.

Адреса регистров данных приема SPORT:

SPORT0_RX – 0xFFC0 0818
SPORT1_RX – 0xFFC0 0918
SPORT2_RX – 0xFFC0 2518
SPORT3_RX – 0xFFC0 2618

Хранилище данных и порядок хранения данных в FIFO показаны на рис. 13-11.

Разрешен только канал PRIMARY: Разрешены оба канала, PRIMARY и SECONDARY:
 ADSP BF538 SPORTx RX PRIMARY 3 16 bits  ADSP BF538 SPORTx RX PRIMARY and SECONDARY 3 16 bits
Длина данных меньше или равна 16 бит. В FIFO находится 8 слов PRIMARY-данных Длина данных меньше или равна 16 бит. В FIFO находится 4 слова PRIMARY-данных и 4 слова SECONDARY-данных
 ADSP BF538 SPORTx RX PRIMARY 17 32 bits  ADSP BF538 SPORTx RX PRIMARY and SECONDARY 17 32 bits
Разрешен только канал PRIMARY. Длина данных больше 16 бит. В FIFO находится 4 слова PRIMARY-данных Длина данных больше 16 бит. В FIFO находится 2 слова PRIMARY-данных и 2 слова SECONDARY-данных

Рис. 13-11. Как расположены данные в SPORT Receive FIFO.

Регистр статуса (состояния) SPORT (SPORTx_STAT) используется для определения, можно ли получить доступ к RX FIFO или TX FIFO путем проверки их состояния заполненности или опустошения. См. рис. 13-12.

Бит TXF в регистре состояния SPORT показывает, есть или нет место в TX FIFO. Бит RXNE показывает, есть или нет принятые слова в RX FIFO. Бит TXHRE показывает, что регистр хранения TX пуст.

Бит состояния недогрузки передачи (transmit underflow, TUVF) установится всякий раз, когда появился активный импульс TFS (сгенерированный внутри или полученный снаружи), и при этом регистр сдвига TX был пуст. Генерация внутреннего импульса TFS может быть подавлена при опустошении SPORTx_TX путем очистки бита управления DITFS в регистре конфигурации SPORT. Бит состояния TUVF является sticky-битом, работающим по алгоритму write-1-to-clear (W1C, запишите 1 для очистки), и его можно также очистить путем запрета SPORT (записью TSPEN = 0).

ADSP BF538 SPORTx STAT

Рис. 13-12. SPORTx Status Register.

Для продолжающейся передачи (TFSR = 0) бит TUVF установится по окончании передаваемого слова, если нет нового, доступного для передачи слова в регистре хранения TX.

Бит TOVF установится, когда записывается слово в TX FIFO, и он уже был переполнен. Это также sticky W1C бит, и его также можно очистить записью TSPEN = 0. Оба бита TXF и TOVF обновляются даже когда SPORT запрещен.

Когда регистр хранения RX заполнен, и новое принятое слова поступило в регистр сдвига, установится бит состояния переполнения приема (receive overflow, ROVF). От также является sticky W1C битом, и также очищается запретом SPORT (записью RSPEN = 0).

Бит RUVF установится, когда сделана попытка чтения из RX FIFO, когда он уже был пуст. Это также sticky W1C бит, и он также очищается записью RSPEN = 0. Бит RUVF обновляется даже когда SPORT запрещен.

Адреса регистров состояния SPORT:

SPORT0_STAT – 0xFFC0 0830
SPORT1_STAT – 0xFFC0 0930
SPORT2_STAT – 0xFFC0 2530
SPORT3_STAT – 0xFFC0 2630

Прерывания RX, TX и прерывание ошибки. Прерывание SPORT RX выставляется, когда RSPEN разрешен, и имеется любое не прочитанное слово в RX FIFO. Если разрешено RX DMA, то прерывание SPORT RX выключается, и тогда DMA обслуживает выборку данных из RX FIFO.

Прерывание SPORT TX выставляется, когда TSPEN разрешен, и когда в TX FIFO есть место для новых слов. Если разрешено TX DMA, то прерывание SPORT TX выключается, и тогда DMA обслуживает заполнение TX FIFO.

Прерывание ошибки SPORT выставляется, когда установлен любой из sticky-битов статуса (ROVF, RUVF, TOVF, TUVF). Биты ROVF и RUVF очищаются только записью 0 в RSPEN (запретом SPORT на прием). Биты TOVF и TUVF очищаются только записью 0 в TSPEN (запретом SPORT на передачу).

Ошибки PAB. SPORT генерирует ошибку PAB для недопустимых операций чтения или записи регистров. Такое может произойти, если:

• Произошло чтение регистра, предназначенного только для записи (например, SPORTx_TX).
• Была запись в регистр, предназначенный только для чтения (например, SPORTx_RX).
• Применены запись или чтение неправильного размера (например, 32-битное чтение 16-битного регистра).
• Сделана попытка доступа к зарезервированным адресам регистров.

Частоты всех генерируемых внутри тактов являются функцией от системной тактовой частоты (которая присутствует на выводе SCLK) и значения 16-битных регистров модуля делителя тактов (регистр делителя последовательных тактов передачи SPORTx_TCLKDIV и регистр делителя последовательных тактов приема SPORTx_RCLKDIV).

ADSP BF538 SPORTx TCLKDIV

Рис. 13-13. SPORTx Transmit Serial Clock Divider Register.

ADSP BF538 SPORTx RCLKDIV

Рис. 13-14. SPORTx Receive Serial Clock Divider Register.

Адреса регистров делителей для тактовых частот бит SPORT:

SPORT0_TCLKDIV – 0xFFC0 0808 SPORT0_RCLKDIV – 0xFFC0 0828
SPORT1_TCLKDIV – 0xFFC0 0908 SPORT1_RCLKDIV – 0xFFC0 0928
SPORT2_TCLKDIV – 0xFFC0 2508 SPORT2_RCLKDIV – 0xFFC0 2528
SPORT3_TCLKDIV – 0xFFC0 2608 SPORT3_RCLKDIV – 0xFFC0 2628

16-битный регистр делителя для генерации сигнала фрейма передачи и приема (SPORTx_TFSDIV и SPORTx_RFSDIV соответственно) задают, сколько тактов передачи или приема должно пройти, перед генерацией импульса TFSx и RFSx для синхронизации фрейма frame sync (когда эти импульсы генерируются внутри SPORT). Таким методом frame sync может использоваться для инициирования периодических передач. Подсчет последовательных тактовых циклов бит прикладывается либо к генерируемым внутренне, либо поступающим снаружи тактовым сигналам.

Адреса регистров делителей SPORT:

SPORT0_TFSDIV – 0xFFC0 080C SPORT0_RFSDIV – 0xFFC0 082C
SPORT1_TFSDIV – 0xFFC0 090C SPORT1_RFSDIV – 0xFFC0 092C
SPORT2_TFSDIV – 0xFFC0 250C SPORT2_RFSDIV – 0xFFC0 252C
SPORT3_TFSDIV – 0xFFC0 260C SPORT3_RFSDIV – 0xFFC0 262C

ADSP BF538 SPORTx TFSDIV

Рис. 13-15. SPORTx Transmit Frame Sync Divider Register.

ADSP BF538 SPORTx RFSDIV

Рис.  13-16. SPORTx Receive Frame Sync Divider Register.

[Частота тактирования бит и частота синхронизации фрейма]

Максимально допустимая тактовая частота бит (либо генерируемая внутри, либо поступающая снаружи) равна SCLK/2. Частота для тактов, генерируемых внутри, является функцией от системной тактовой частоты (system clock frequency, SCLK) и значения, записанные в 16-битные регистры SPORTx_TCLKDIV и SPORTx_RCLKDIV.

Частота SPORTx_TCLK = (частота SCLK)/(2 x (SPORTx_TCLKDIV + 1))
Частота SPORTx_RCLK = (частота SCLK)/(2 x (SPORTx_RCLKDIV + 1))

Если значение SPORTx_TCLKDIV или SPORTx_RCLKDIV было изменено при разрешенной внутренней генерации последовательных тактов бит, то изменение частоты TSCLK или RSCLK вступит в силу в начале активного перепада TSCLKx или RSCLKx, за которым следует лидирующий перепад TFSx или RFSx.

Когда выбрана внутренняя генерация frame sync (ITFS = 1 в регистре SPORTx_TCR1 или IRFS = 1 в регистре SPORTx_RCR1) и синхронизация фрейма не требуется, первый frame sync не обновит делитель тактов, если было изменено значение SPORTx_TCLKDIV или SPORTx_RCLKDIV. Обновление произведет второй frame sync.

Регистры SPORTx_TFSDIV и SPORTx_RFSDIV задают количество тактовых циклов передачи или приема, которые будут подсчитаны перед генерацией  импульса TFSx или RFSx (когда frame sync генерируется внутри). Это разрешит frame sync для инициации периодических передач. Подсчет последовательных тактов применяется либо к генерируемым внутри, либо поступающим снаружи тактам бит.

Формула для количества циклов между импульсами frame sync:

Число тактов передачи между frame sync = TFSDIV + 1
Число тактов приема между frame sync   = RFSDIV + 1

Используйте следующие выражения для определения корректного значения TFSDIV или RFSDIV по имеющейся тактовой частоте и желаемой частоте frame sync:

Частота SPORTxTFS = (частота TSCLKx)/(SPORTx_TFSDIV + 1)
Частота SPORTxRFS = (частота RSCLKx)/(SPORTx_RFSDIV + 1)

Таким образом импульсы frame sync были бы постоянно активными (для передачи если TFSDIV = 0, или для приема если RFSDIV = 0). Однако, значение TFSDIV (или RFSDIV) не должно быть меньше длины слова минус 1 (меньше значения поля SLEN в SPORTx_TCR2 или SPORTx_RCR2). Если значение будет меньше, то это приведет к обрыву текущей операции внешнего устройства или другим непредсказуемым результатам. Если SPORT не используется, то делитель TFSDIV (или RFSDIV) может использоваться как счетчик для деления внешней частоты или для генерации периодических импульсов или периодических прерываний. SPORT должен быть разрешен для этого режима работы.

Ограничения на максимальную частоту тактов. Генерируемые снаружи задержанные сигналы frame sync передачи также приведут к задержке до поступления данных на выход, и это также может ограничить максимальную частоту последовательных тактов. См. даташит на процессоры ADSP-BF538/ADSP-BF538F, чтобы получить спецификации ограничений по времени.

В следующем куске кода приведен краткий пример настройки частоты тактов бит и сигнала frame sync.

r0 = 0x00FF;
p0.l = SPORT0_RFSDIV & 0xFFFF;
p0.h = (SPORT0_RFSDIV >> 16) & 0xFFFF;
w[p0] = r0.l; ssync;
p0.l = SPORT0_TFSDIV & 0xFFFF;
w[p0] = r0.l; ssync;

Длина слова. Каждый канал SPORT (канал приема и канал передачи) независимо друг от друга поддерживают длины слова от 3 до 32 бит. Данные выровнены вправо в регистрах данных SPORT, если они меньше чем 32 бита длиной, с ориентацией на нахождение позиций LSB. Значение поля длины слова (SLEN) в регистрах SPORTx_TCR2 и SPORTx_RCR2 каждого SPORT определяют длину слова в соответствии с формулой:

Длина последовательного слова = SLEN + 1

Значение SLEN не должно быть установлено в 0 или 1; допустимы значения 2 .. 31. Непрерывное функционирование (за когда последним битом текущего передаваемого слова сразу будет находиться первый бит следующего слова) ограничено размерами слов не меньше 4 (SLEN ≥ 3).

Порядок следования бит. Имеется в виду, какой по старшинству бит появится в передаваемом (или принимаемом) слове первым - MSB или LSB. Порядок следования бит выбирается битами RLSBIT и TLSBIT в регистрах SPORTx_RCR1 и SPORTx_TCR1. Когда RLSBIT или TLSBIT = 0, то слова принимаются или передаются старшим битом (MSB) вперед. И наоборот, когда When RLSBIT (или TLSBIT) = 1, последовательные слова принимаются (или передаются) так, что первым идет LSB.

Тип данных. Поле TDTYPE в регистре SPORTx_TCR1 и поле RDTYPE в регистре SPORTx_RCR1 указывает один из 4 возможных форматов данных для одноканального или многоканального функционирования, см. таблицу 13-2.

Таблица 13-2. TDTYPE, RDTYPE и форматирование данных.

TDTYPE или RDTYPE Форматирование данных SPORTx_TCR1 Форматирование данных SPORTx_RCR1
00 Обычное функционирование Zero-fill (дополнение данных нулями)
01 Зарезервировано Sign-extended (дополнение данных знаком)
10 Компандирование μ-law Компандирование μ-law
11 Компандирование A-law Компандирование A-law

[Компандирование]

Companding (термин составлен от слов COMpressing и exPANDing, т. е. сжатие и расширение) это процесс логарифмического кодирования и декодирования данных с целью минимизации количества бит, которое должно быть отправлено. SPORT-ы поддерживают 2 наиболее широко используемые алгоритма компандирования, μ-law и A-law. Процессор компандирует данные в соответствии со спецификацией CCITT G.711. Тип компандирования может быть выбран независимо от для каждого SPORTx.

Когда компандирование разрешено, допустимые данные в регистре SPORTx_RX выровнены вправо, распакованное значение 8 принятых LSB распаковывается со знаком в 16 бит. Запись в SPORTx_TX приводит к тому, что 16-битное значение будет компрессировано в 8 LSB (расширенное знаком до ширины передаваемого слова) и записано во внутренний регистр передачи. Хотя стандарты компандирования поддерживают только 13-битные (A-law) или 14-битные (μ-law) максимальные длины слов, могут использоваться слова до 16 бит длиной. Если абсолютное значение (амплитуда) слова больше максимально допустимой, значение автоматически сжимается до максимального положительного или отрицательного значения.

Длины больше 16 бит не поддерживаются операцией компандирования.

[Опции настройки тактирования бит]

Каждый SPORT имеет сигналы тактов бит передачи (TSCLKx) и сигналы тактов бит приема (RSCLKx). Сигналы тактов конфигурируются битами TCKFE и RCKFE регистров SPORTx_TCR1 и SPORTx_RCR1. Частота тактов конфигурируется регистрами SPORTx_TCLKDIV и SPORTx_RCLKDIV.

Вывод тактов приема может быть замкнут на такты передачи, если нужно применить одно и то же тактирование для приема и передачи.

И такты передачи, и такты приема могут генерироваться независимо друг от друга внутри процессора или поступать от внешнего источника. Бит ITCLK регистра конфигурации SPORTx_TCR1 и бит IRCLK bit регистра конфигурации SPORTx_RCR1 определяют источник тактирования.

Когда IRCLK или ITCLK = 1, тактовый сигнал генерируется внутри чипа, и выводы TSCLKx или RSCLKx являются выходами. В этом случае тактовая частота определяется значением, записанным в делитель последовательных тактов (регистр SPORTx_RCLKDIV).

И наоборот, когда IRCLK или ITCLK = 0, тактовый сигнал поступает от внешнего источника на выводы входов TSCLKx или RSCLKx, и настройка делителей в регистрах SPORTx_TCLKDIV/SPORTx_RCLKDIV игнорируется. Генерируемые снаружи тактовые сигналы не нуждаются в синхронизации друг с другом или с тактовой частотой ядра процессора. Однако при этом системная тактовая частота ядра должна быть выше, чем частоты на RSCLKx и TSCLKx.

Когда SPORT использует внешние такты, он должен быть разрешен для минимально необходимого количества стабильных тактовых импульсов до того, как поступит первый активный сигнал frame sync. Невыполнение этого правила может привести неправильной работе SPORT. Подробности см. в даташите на процессор.

Первый сгенерированный внутренне frame sync произойдет с задержкой на один frame sync после готовности SPORT. Внешний frame sync может появиться как только SPORT будет готов.

[Опции настройки сигнала фрейма]

Сигналы фрейма показывают начало каждого последовательно передаваемого слова. Этими сигналами фрейма для каждого SPORT являются TFSx (transmit frame sync, сигнал фрейма передачи) и RFSx (receive frame sync, сигнал фрейма приема). Имеется некоторое количество опций настройки фрейма; эти опции настраиваются в регистрах конфигурации SPORT (SPORTx_TCR1, SPORTx_TCR2, SPORTx_RCR1 и SPORTx_RCR2). Сигналы TFSx и RFSx не зависят друг от друга, и конфигурируются по отдельности.

Работа с сигналом фрейма и без него. Использование нескольких сигналов frame sync является опциональным в обмене через SPORT. Биты управления TFSR (transmit frame sync required select) и RFSR (receive frame sync required select) определяют необходимость наличия сигналов frame sync. Эти биты находятся в регистрах SPORTx_TCR1 и SPORTx_RCR1.

Когда TFSR = 1 или RFSR = 1, сигнал frame sync требуется для каждого слова данных. Чтобы реализовать непрерывную передачу через SPORT каждое новое слово данных должно быть загружено в регистр хранения передачи SPORTx_TX до того, как будет закончена передача предыдущего слова.

Когда TFSR = 0 или RFSR = 0, соответствующий сигнал frame sync не требуется. Сигнал frame sync нужен для инициации обмена, но будет игнорироваться после первого переданного бита. Данные слов будут передаваться друг за другом, без разграничения фреймов.

Когда не требуется frame sync, прерывания или запросы DMA могут быть не обработаны достаточно часто, чтобы гарантировать постоянный, не поделенный на фреймы поток данных. Проверяйте биты статуса или проверяйте прерывание ошибки SPORT, чтобы определить недогрузку (underflow) или переполнение (overflow) данных.

На рис. 13-17 показаны передачи с фреймами, у которых следующие характеристики:

• Биты TFSR и RFSR в регистрах SPORTx_TCR1 и SPORTx_RCR1 определяют режимы с фреймами и без фреймов.
• Режим с фреймами требует наличия сигнала фрейма для каждого слова. Режим без фрейма игнорирует сигнал фрейма после первого переданного слова.
• Режим без фреймов походит для непрерывного приема.
• Активный 0 или активный 1 для frame sync выбирается битами LTFS и LRFS регистров SPORTx_TCR1 и SPORTx_RCR1.

См. также примеры диаграмм времени во врезке "Примеры диаграмм времени".

ADSP BF538 SPORTx Framed versus Unframed data

Рис. 13-17. Отличие передачи данных с фреймами и без фреймов.

Внутренние или внешние сигналы Frame Sync. И сигнал синхронизации фрейма передачи, и сигнал синхронизации фрейма приема независимо друг от друга могут либо быть сгенерированы внутри процессора, либо поступать от внешнего источника. Биты ITFS и IRFS в регистрах SPORTx_TCR1 и SPORTx_RCR1 определяют источник сигналов frame sync.

Когда ITFS = 1 или IRFS = 1 соответствующий сигнал frame sync генерируется внутри SPORT, и выводы TFSx или RFSx работают как выходы. Частота сигнала frame sync определяется значением делителя сигналов фрейма в регистрах SPORTx_TFSDIV или SPORTx_RFSDIV.

Когда ITFS = 0 или IRFS = 0, соответствующий сигнал frame sync принимается с входных выводов TFSx или RFSx, и настройка делителей в регистрах SPORTx_TFSDIV / SPORTx_RFSDIV игнорируется.

Все опции frame sync доступны для сигналов, генерируемых внутри или поступающих снаружи.

Активный уровень 0 или 1 для Frame Sync. Сигналы синхронизации фрейма могут иметь активный высокий или низкий уровень (другими словами, может опционально иметь инверсию). Биты LTFS и LRFS регистров SPORTx_TCR1 и SPORTx_RCR1 определяют логику уровней frame sync:

• Когда LTFS = 0 или LRFS = 0, соответствующий активный уровень для сигнала frame sync лог. 1.
• Когда LTFS = 1 или LRFS = 1, соответствующий активный уровень для сигнала frame sync лог. 0.

По умолчанию для frame sync активный уровень лог. 1, потому что биты LTFS и LRFS инициализируются в 0 после сброса процессора.

Активный перепад для обработки данных и сигнала фрейма. Сигнал данных и сигнал синхронизации фрейма может оцифровываться либо по нарастанию, либо по спаду тактовых сигналов SPORT. Биты TCKFE и RCKFE регистров SPORTx_TCR1 и SPORTx_RCR1 выбирают перепады для изменения и для оцифровки последовательных данных и сигнала синхронизации фрейма.

Для передатчика SPORT установка TCKFE = 1 в регистре SPORTx_TCR1 выбирает спад сигнала TSCLKx для управления данными и генерируемого внутри импульса frame sync, и выбирает фронт нарастания TSCLKx для оцифровки поступающих снаружи frame sync. Выбор TCKFE = 0 задает фронт нарастания TSCLKx для управления данными и генерируемых внутри frame sync, и выбирает спад TSCLKx для оцифровки поступающих снаружи frame sync.

Для приемника SPORT установка RCKFE = 1 в регистре SPORTx_RCR1 выбирает спад уровня RSCLKx для управления генерируемыми внутри frame sync, и выбирает фронт нарастания RSCLKx для оцифровки данных и поступающих снаружи frame sync. Настройка RCKFE = 0 выбирает фронт нарастания RSCLKx для управления генерируемыми внутри frame sync и выбирает спад уровня RSCLKx для оцифровки данных и поступающих снаружи frame sync.

Обратите внимание, что поступающие снаружи сигналы данных и frame sync должны менять свое состояние по противоположному перепаду относительно выбранного перепада для оцифровки. Например, для генерируемого снаружи frame sync производится оцифровка по нарастанию уровня тактов (бит TCKFE = 1 в регистре SPORTx_TCR1), тогда сигнал frame sync должен управляться (переключаться) по спаду уровня тактов.

Функции приема и передачи двух SPORT, соединенных друг с другом, должны всегда выбирать одинаковое значение TCKFE в передатчике и RCKFE в приемнике, так чтобы передатчик переключал данные по одному срезу, а приемник оцифровывал данные по противоположному срезу тактов.

На рис. 13-18 применена настройка TCKFE = RCKFE = 0, передатчик и приемник соединены друг с другом, используя общий друг для друга сигнал тактов и сигнал фрейма.

ADSP BF538 SPORTx TCKFE RCKFE 0 fig13 18

Рис. 13-18. Пример с TCKFE = RCKFE = 0, передатчик соединен с приемником.

На рис. 13-19 применена настройка TCKFE = RCKFE = 1, передатчик и приемник соединены друг с другом, используя общий друг для друга сигнал тактов и сигнал фрейма.

ADSP BF538 SPORTx TCKFE RCKFE 1 fig13 19

Рис. 13-19. Пример с TCKFE = RCKFE = 1, передатчик соединен с приемником.

Ранний Frame Sync против позднего (нормальная и альтернативная диаграмма времени). Сигналы frame sync могут поступать во время первого бита каждого слова данных (поздний сигнал фрейма) или во время последовательно такта сразу перед первым битом (ранний сигнал фрейма). Эту опцию конфигурируют биты LATFS и LARFS регистров SPORTx_TCR1 и SPORTx_RCR1.

Когда LATFS = 0 или LARFS = 0, сконфигурирован ранний сигнал frame sync; это считается нормальным режимом работы. В этом режиме доступен первый передаваемый бит данных и первый принимаемый бит данных оцифровывается в такте после выставленного активного сигнала frame sync, и frame sync не проверяется снова после того, как все слово передано или принято. При многоканальном функционировании это соответствует случаю, когда многоканальная задержка фрейма равна 1.

Если передача данных происходит непрерывно в режиме с ранним сигналом фрейма (другим словами, за последним битом каждого слова сразу идет первый бит следующего слова), то сигналы frame sync происходят во время последнего бита каждого слова. В режиме раннего фрейма генерируемые внутри сигналы frame sync выставляются на 1 такт. Непрерывные передачи ограничены размерами слова не меньше 4 бита (SLEN ≥ 3).

Когда LATFS = 1 или LARFS = 1, конфигурируется поздний сигнал frame sync; это считается альтернативным режимом работы. В этом режиме доступен первый бит передаваемых данных и оцифровывается первый бит принимаемых данных в одном и том же тактовом цикле, в котором выставляется сигнал frame sync. При многоканальном функционировании это соответствует случаю, когда многоканальная задержка фрейма равна 0. Принимаемые биты данных оцифровываются по перепадам тактового сигнала, но сигналы frame sync проверяются только во время первого бита каждого слова. В режиме позднего сигнала фрейма генерируемый внутри frame sync остается выставленным на всю длину слова данных. Поступающий снаружи frame sync проверяется только во время первого бита.

На рис. 13-20 показаны эти 2 режима сигнализаций фрейма. Если обобщить:

• Для битов LATFS или LARFS регистров SPORTx_TCR1 или SPORTx_RCR1: LATFS = 0 или LARFS = 0 используются для ранних frame sync, LATFS = 1 или LARFS = 1 для поздних frame sync.
• Для ранних фреймов сигнал frame sync идет впереди данных на 1 такт. Для позднего фрейма сигнал frame sync проверяется только на первом бите данных.
• Данные передаются MSB вперед (TLSBIT = 0 или RLSBIT = 0) или LSB вперед (TLSBIT = 1 или RLSBIT = 1).
• Сигналы frame sync и тактов могут генерироваться внутри SPORT или могут подаваться снаружи.

См. также примеры диаграмм времени во врезке "Примеры диаграмм времени".

ADSP BF538 SPORTx normal versus alternate framing

Рис. 13-20. Отличие нормальных (ранних) фреймов от альтернативных (с задержкой).

Передача данных независимо от сигнала фрейма. Обычно генерируемый внутри сигнал фрейма передачи (transmit frame sync, TFSx) выводится только когда в буфере SPORTx_TX есть готовые для передачи данные. Бит независимой от данных генерации frame sync передачи (DITFS) позволяет задать непрерывную генерацию сигнала TFSx, независимо от того, имеются новые данные или нет. Бит DITFS регистра SPORTx_TCR1 конфигурируют эту опцию.

Когда DITFS = 0, генерируемый внутри TFSx появляется на выходе только когда новое слово данных было загружено в буфер SPORTx_TX. Следующий импульс TFSx сгенерируется при загрузке данных в SPORTx_TX. Этот режим работы позволяет передавать данные только тогда, когда они есть в наличии.

Когда DITFS = 1, генерируемый внутри TFSx выдает импульсы с запрограммированным интервалом независимо от того, есть или нет новые данные в буфере SPORTx_TX. Независимо от наличия данных в SPORTx_TX передача начинается снова и снова с каждой выдачей TFSx. Бит статуса TUVF (transmit underflow, состояние недогрузки передачи) в регистре SPORTx_STAT установится, когда произойдет повторная передача старых данных. Бит статуса TUVF также установится, если буфер не имеет новых данных SPORTx_TX, когда пришел внешний сигнал TFSx. Обратите внимание, что в этом режиме работы данные передаются только в строго определенные моменты времени. Если используется генерируемый внутренне TFSx, одиночная запись в регистр данных SPORTx_TX требуется для начала передачи.

[Перемещение данных между SPORTx и памятью]

Передаваемые и принимаемые данные могут быть перенесены между SPORT и встроенной в кристалл памятью двумя способами: одиночными передачами размером в 1 слово или блочными передачами DMA.

Если канал DMA не разрешен для SPORT, то SPORT генерирует прерывание каждый раз, когда принято слово данных или требуется для передачи слово данных (другими словами, когда требуется вмешательство ядра для поддержания непрерывного потока данных). SPORT DMA предоставляет механизм для приема или передачи целого блока или нескольких блоков последовательных данных перед тем, как возникнет прерывание. Контроллер DMA для SPORT поддерживает передачи DMA, что позволяет ядру процессора работать, пока весь блок данных передается или принимается. Обработчик прерывания (Interrupt service routine, ISR) может вызываться для обработки блока данных вместо одного слова, что значительно уменьшает вычислительные расходы.

Подробнее про работу DMA см. [4].

Работа в режиме интерфейса Stereo Serial. SPORT поддерживает некоторые режимы передачи последовательных стереофонических цифровых данных, включая популярный формат I2S. Чтобы использовать эти режимы, установите биты в регистрах SPORT_RCR2 или SPORT_TCR2. Установка RSFSE или TSFSE в SPORT_RCR2 или SPORT_TCR2 меняет функционирование вывода frame sync на такты правого/левого канала, как это требуется для I2S и выровненных влево последовательных данных stereo. Установка этих бит разрешает SPORT генерировать или принимать специальные фреймы синхронизации стиля LRCLK. Все другие биты управления SPORT остаются действующими и должны быть настроены соответственным образом. На рис. 13-21 и 13-22 показаны диаграммы времени для режима работы stereo serial.

ADSP BF538 SPORTx Stereo Serial Modes Transmit

Рис. 13-21. Режимы SPORT Stereo Serial, передача.

 

ADSP BF538 SPORTx Stereo Serial Modes Receive

Рис. 13-22. Режимы SPORT Stereo Serial, прием.

Примечания к рисункам 13-21 и 13-22:

1. В режиме DSP канал не идентифицируется.
2. TFSx нормально работает на fS за исключением режима DSP, в котором 2 x fS.
3. Частота TSCLKx нормально равна 64 x TFS, но может работать в ускоренном режиме (BURST MODE).

Таблица 13-3 показывает несколько режимов которые могут быть сконфигурированы с использованием этих битов в регистрах SPORTx_TCR1 и SPORTx_RCR1. Таблица показывает биты на стороне приема SPORT, но соответствующие биты доступны для конфигурирования блоков передачи SPORT. Управляющее поле, которое может быть либо установлено, либо очищено в зависимости от потребностей пользователя без изменения стандарта, показаны символом X.

Таблица 13-3. Настройки режима Stereo Serial.

Поле бит Stereo Audio Serial Scheme
I2S Выравнивание влево Режим DSP
RSFSE 1 1 0
RRFST 0 0 0
LARFS 0 1 0
LRFS 0 1 0
RFSR 1 1 1
RCKFE 1 0 0
SLEN 2..31 2..31 2..31
RLSBIT 0 0 0
RFSDIV (если выбран внутренний frame sync) 2..max 2..max 2..max
RXSE (вторичный канал разрешен и доступен для RX и для TX) X X X

Обратите внимание, что большинство бит, показанные как 0 или 1, могут быть изменены в зависимости от выбора пользователя, что создает множество других "почти стандартных" режимов передачи stereo. Эти режимы могут использоваться для соединения с кодеками, у которых интерфейс незначительно отличаются от стандартного. Настройки, показанные в таблице 13-3, предоставляют прозрачный интерфейс со многими популярными кодеками.

Обратите внимание, что RFSDIV или TFSDIV все еще должны быть больше или равны SLEN. Для работы I2S значения RFSDIV или TFSDIV обычно составляют 1/64 от скорости тактов бит. С установленным RSFSE формулы для вычисления периода и частоты (это обсуждалось в разделе "Частота тактирования бит и частота синхронизации фрейма") все еще действительны, то теперь относятся к одной половине периода и к двойной частоте. Например, установка RFSDIV или TFSDIV = 31 приведет к тому, что LRCLK будет менять уровень каждые 32 тактовых цикла и будет иметь период в 64 последовательных тактовых цикла.

Бит LRFS определяет полярность вывода RFS или TFS для канала, который считается "правым" каналом. Таким образом, установка LRFS = 0 (что подразумевает, что активный сигнал лог. 1) показывает, что frame sync будет лог. 1 для "правого" канала, так что лог. 0 будет для "левого" канала. Это установка по умолчанию.

Биты RRFST и TRFST определяют, передается или принимается первое слово для левого или для правого канала. Если этот бит установлен, первое слово принимается или передается для правого канала. По умолчанию принимается или передается первым слово для левого канала.

Вторичные вывод DRxSEC и DTxSEC являются полезным расширением SPORT, который можно применять с режимом stereo. Несколько потоков данных I2S можно передавать или принимать, используя один SPORT. Обратите внимание, что выводы первичного и вторичного канала данных являются синхронными, так что они используют общие выводы тактов и LRCLK (frame sync). Стороны передачи и приема SPORT не обязательно должны быть синхронны друг с другом, но могут использовать в некоторых разработках общий тактовый сигнал. См. рис. 13-3, который показывает несколько stereo-соединений, сделанных между процессором и кодеком AD1836.

[Работа в многоканальном режиме]

SPORTx предоставляют многоканальный режим (multichannel mode) работы, в котором SPORT может обмениваться данными в системе переключения каналов по времени (time-division-multiplexed, TDM). В многоканальных соединениях каждое слово последовательного потока бит занимает отдельный канал. Каждое слово принадлежит к следующему соседнему каналу, так что, к примеру, блок из 24 слов данных может содержать одно слова для каждого из 24 каналов.

SPORT может автоматически выбирать слова для отдельных каналов, игнорируя все остальные. Доступно до 128 каналов для передачи или приема; каждый SPORT может селективно принимать или передавать данные в любого из 128 каналов. Эти 128 каналов могут быть любыми от общего количества из 1024 каналов. Каналы RX и TX должны использовать одну и ту же область из 128 каналов для селективной фильтрации каналов. SPORT может на каждом канале выполнять любое из следующих вариантов действий:

• Передача данных.
• Прием данных.
• Передача и прием данных.
• Отсутствие приема и передачи.

Компандирование данных и передачи DMA также могут использоваться в многоканальном режиме.

Вывод DTxPRI управляется всегда как выход (не переходит в третье, отключенное состояние), если SPORT разрешен (бит TSPEN = 1 в регистре SPORTx_TCR1), за исключением ситуации, когда он в многоканальном режиме, и наступил не активный слот времени. Вывод DTxSEC всегда управляются как выход (не переходит в третье, отключенное состояние), если SPORT разрешен, и также разрешен вторичный канал (бит TXSE = 1 в регистре SPORTx_TCR2), за исключением ситуации, когда SPORT находится в многоканальном режиме и наступил не активный слот времени.

В многоканальном режиме сигнал тактов бит RSCLKx может либо поступать снаружи, либо может генерироваться внутри SPORT, и это используется для обоих функций приема и передачи. Оставьте вывод TSCLKx отключенным, если SPORT используется в многоканальном режиме. Если RSCLKx предоставлен снаружи или изнутри, он будет подключен внутри чипа как на схемы приемника, так и на схемы передатчика.

Для использования многоканального режима перед разрешением работы SPORTx_TX или SPORTx_RX должны быть запрограммированы регистр выбора многоканальной передачи и регистр выбора многоканального приема SPORT. Это особенно важно в режиме DMA data unpacked, поскольку работа SPORT FIFO начинается сразу после установки RSPEN и TSPEN, разрешая оба канала RX и TX. Бит MCMEN (в регистре SPORTx_MCMC2) должен быть разрешен перед разрешением работы SPORTx_TX или SPORTx_RX. Когда запрещают работу SPORT в многоканальном режиме, сначала надо запретить TSPEN, и затем запретить RSPEN. Имейте в виду, что оба TSPEN и RSPEN должны быть запрещены до повторного разрешения. На разрешается запретить только TX или только RX.

На рис. 13-23 показан пример диаграмм времени для многоканальной передачи со следующими характеристиками:

• Используется метод TDM, где последовательные данные передаются или принимаются на разных каналах, используя одну и ту же последовательную шину.
• Можно независимо выбрать каналы передачи и приема.
• RFSx сигнализирует о начале фрейма.
• TFSx используется как сигнал разрешения передачи для внешней логики, лог. 1 только для каналов передачи.
• Прием на каналах 0 и 2, передача на каналах 1 и 2.
• Многоканальная задержка фрейма установлена в 1.

См. также примеры диаграмм времени во врезке "Примеры диаграмм времени".

ADSP BF538 SPORTx Multichannel Operation

Рис. 13-23. Работа в режиме Multichannel.

Имеется 2 регистра конфигурации многоканального режима SPORTx (SPORTx_MCMCn) для каждого SPORT (см. рис. 13-24 и рис. 13-25). Регистры SPORTx_MCMCn используются для конфигурирования многоканальной работы SPORT.

Адреса этих регистров:

SPORT0_MCMC1 – 0xFFC0 0838 SPORT0_MCMC2 – 0xFFC0 083C
SPORT1_MCMC1 – 0xFFC0 0938 SPORT1_MCMC2 – 0xFFC0 093C
SPORT2_MCMC1 – 0xFFC0 2538 SPORT2_MCMC2 – 0xFFC0 253C
SPORT3_MCMC1 – 0xFFC0 2638 SPORT3_MCMC2 – 0xFFC0 263C

ADSP BF538 SPORTx MCMC1

Рис. 13-24. SPORTx Multichannel Configuration Register 1.

WSIZE[3:0] (Window Size). Это поле бит задает нужный размер окна (значение_поля = [(размер_окна)/8 –1]).

WOFF[9:0] (Window Offset). Это поле задает смещение окна, т. е. его начальное положение среди диапазона каналов 0..1023.

ADSP BF538 SPORTx MCMC2

Рис. 13-25. SPORTx Multichannel Configuration Register 2.

MFD[3:0] (Multichannel Frame Delay). Задержка между импульсом frame sync и первым битом данных в режиме Multichannel.

FSDR (Frame Sync to Data Relationship). 0 - нормальный режим, 1 - зарезервировано, режим H.100.

MCMEN (Multichannel Frame Mode Enable). Лог. 1 разрешает режим Multichannel.

MCDRXPE (Multichannel DMA Receive Packing). Лог. 1 разрешает упаковку данных DMA на приеме.

MCDTXPE (Multichannel DMA Transmit Packing). Лог. 1 разрешает упаковку данных DMA на передаче.

MCCRM[1:0] (2X Clock Recovery Mode). Определяет режим восстановления тактов по удвоенной частоте.

0x - Bypass mode
10 - восстановление тактов 2 МГц из частоты 4 МГц
11 - восстановление тактов 8 МГц из частоты 16 МГц

Разрешение Multichannel. Установка бита MCMEN в регистре SPORTx_MCM2 разрешает многоканальный режим. Когда MCMEN = 1, работа многоканального режима разрешена, иначе запрещена.

Установка MCMEN разрешает многоканальную работу сразу как для трактов приема, так и для тракта передачи SPORT. Таким образом, если прием SPORT работает в многоканальном режиме, то и передача также должна быть в многоканальном режиме.

Когда используется многоканальный режим, не разрешайте режимы stereo serial frame sync или функцию позднего frame sync, так как эти функции не совместимы с многоканальным режимом.

Таблица 13-4 показывает зависимости бит регистров конфигурации SPORT, когда он используется в многоканальном режиме.

Таблица 13-4. Конфигурация режима Multichannel.

SPORTx_RCR1 или SPORTx_RCR2 SPORTx_TCR1 или SPORTx_TCR2 Примечание
RSPEN TSPEN Установите или очистите оба этих бита.
IRCLK - Работают независимо.
- ITCLK Игнорируется.
RDTYPE TDTYPE Работают независимо.
RLSBIT TLSBIT Работают независимо.
IRFS - Работают независимо.
- ITFS Игнорируется.
RFSR TFSR Игнорируется.
- DITFS Игнорируется.
LRFS LTFS Работают независимо.
LARFS LATFS Оба должны быть в 0.
RCKFE TCKFE Установите оба или сбросьте - у них должны быть одинаковые значения.
SLEN SLEN Установите оба поля в одинаковое значение.
RXSE TXSE Работают независимо.
RSFSE TSFSE Оба должны быть в 0.
RRFST TRFST Игнорируется.

Сигнал Frame Sync в режиме Multichannel. Все принимающие и передающие устройства в многоканальной системе должны иметь один и тот же опорный источник времени. В качестве этого используется сигнал RFSx, что показывает начало блока или фрейма многоканального потока слов.

Когда для SPORT разрешен многоканальный режим, то и передатчик, и приемник используют RFSx в качестве сигнала frame sync. Это верно и когда RFSx генерируется внутри SPORT, и верно когда RFSx поступает снаружи. Сигнал RFSx используется для синхронизации каналов и перезапуска многоканальной последовательности. Выставленный сигнал RFSx показывает начало слова данных канала 0.

Поскольку RFSx используется для обоих каналов SPORTx_TX и SPORTx_RX, когда SPORT сконфигурирован в multichannel, соответствующие пары бит в SPORTx_RCR1 и SPORTx_TCR1 и в SPORTx_RCR2 и SPORTx_TCR2 должны быть запрограммированы одинаково, с возможными исключениями для пары RXSE и TXSE и пары RDTYPE и TDTYPE. Это верно, даже когда работа SPORTx_RX не разрешена.

В многоканальном режиме автоматически устанавливается диаграмма работы RFSx, похожая на поздний (альтернативный) режим фрейма; первый бит передаваемого слова доступен и первый бит принимаемого слова оцифровывается в один и тот же такт, когда выставляется frame sync, что предоставляется установкой в 0 бита MFD.

Сигнал TFSx используется как сигнал передачи допустимых данных, активный при передаче разрешенного слова. Вывод передачи данных SPORT переходит в третье (отключенное) состояние, когда текущий слот времени не активный, и сигнал TFSx обслуживается как сигнал разрешения выхода для вывода передачи данных. SPORT управляет выводом TFSx в многоканальном режиме независимо от того, установлен или очищено бит ITFS. Вывод TFSx в многоканальном режиме все еще подчиняется установке бита LTFS. Если LTFS установлен, сигнал допустимой передачи получит активное состояние лог. 0, при этом вывод TFSx покажет активный канал.

Как только принят начальный RFSx начнется передача фрейма, все другие сигналы RFSx игнорируются контроллером SPORT, пока не будет передан полный фрейм.

Если MFD > 0, то RFSx может произойти во время последнего канала предыдущего фрейма. Это допустимо, и frame sync не игнорируется, пока задержанная точка старта канала 0 выходит за пределы полного фрейма.

В многоканальном режиме сигнал RFSx используется как опорная метка для старта блока или фрейма, после которой передача слов происходит непрерывно и больше не требуются сигналы RFS. Таким образом, генерируемые внутренне сигналы frame syncs всегда не зависят от данных.

Организация фрейма для Multichannel. Фрейм многоканального режима содержит больше одного канала, как это указано размером окна и смещением окна. Полный многоканальный фрейм состоит из каналов 1 – 1024, начинаясь с канала 0. Отдельные каналы в многоканального фрейма выбираются для SPORT комбинацией смещения окна, размером окна, и регистрами выбора многоканального режима, см. рис. 13-26.

ADSP BF538 SPORTx Relationships for Multichannel Parameters

Рис. 13-26. Взаимосвязь параметров для многоканального режима.

Примечание: длина фрейма устанавливается через делитель частоты frame sync или по внешнему периоду frame sync.

Multichannel Frame Delay. 4-битное поле MFD в регистре SPORTx_MCMC2 задает задержку между импульсом frame sync и первым битом данных в многоканальном режиме. Значение MFD соответствует задержке в циклах последовательных тактов. Задержка многоканального фрейма позволяет процессору работать устройствами, имеющими интерфейс разного типа.

Значение 0 для MFD приводит frame sync к конкуренции с первым битом данных. Максимальная величина, разрешенная для MFD, равна 15. Может произойти новый frame sync до того, как будут приняты последние данные фрейма, потому что блоки данных могут плотно прилегать друг к другу.

Размер окна. Поле размера окна (WSIZE[3:0]) определяет количество каналов, которое можно разрешить/запретить регистрами выбора многоканального режима. Этот диапазон слов называется активным окном. Количество каналов может быть любым числом в диапазоне 0 .. 15, что соответствует размеру активного окна 8 .. 128, в единицах инкремента 8; значение по умолчанию 0 соответствует минимальному размеру окна из 8 каналов. Чтобы вычислить размер активного окна от значения поля WSIZE, используйте выражение:

Количество слов в активном окне = 8 x (WSIZE + 1)

Поскольку размер буфера DMA всегда фиксирован, то можно определить малое окно (например, 32 слова), что даст буфер DMA меньшего размера (в этом примере 32 слова вместо 128 слов) для сохранения полосы пропускания DMA. Размер окна поменять нельзя, когда SPORT разрешен.

Биты выбора каналов, которые разрешены, но попадают мимо выбранного окна, будут игнорироваться.

Смещение окна. Поле смещения окна (WOFF[9:0]) задает, в каком месте диапазона из 1024 каналов находится начало активного окна. Значение 0 задает отсутствие смещения, и 896 задает самое большое значение, которое позволяет использовать все 128 каналов. Как пример, программа могла бы определить активное окно с размером 8 (WSIZE = 0) и смещением 93 (WOFF = 93). Это 8-канальное окно займет диапазон каналов от 93 до 100. Нельзя будет поменять ни смещение окна, ни размер окна, когда разрешен SPORT.

Если комбинация размера окна и смещения окна любой части окна попала бы за пределы счетчика канала, то не будет разрешен ни один из каналов фрейм, не попавших в диапазон.

10-битное поле CHNL в регистре текущего канала SPORTx (SPORTx_CHNL) показывает, какой канал сейчас обслуживается по время многоканального режима (см. рис. 13-27). Это поле имеет индикатор состояния только для чтения. Поле CHNL[9:0] инкрементируется на 1 с каждым обработанным каналом. Счетчик остановит счет на верхнем срезе выбранного окна. Регистр выбранного канала перезапускается с 0 на каждом frame sync. Как пример, для размера окна 8 и смещения 148, счетчик покажет значение между 0 и 156.

Как только размер окна завершен, счетчик канала сбросится в 0 для подготовки к следующему фрейму. Из-за задержек синхронизации между RSCLKx и тактами процессора, значение регистра канала будет приблизительным. Он никогда не опережает обслуживаемый канал, но может отставать.

Адреса этих регистров SPORT:

SPORT0_CHNL – 0xFFC0 0834
SPORT1_CHNL – 0xFFC0 0934
SPORT2_CHNL – 0xFFC0 2534
SPORT3_CHNL – 0xFFC0 2634

ADSP BF538 SPORTx CHNL

Рис. 13-27. SPORTx Current Channel Register.

Другие поля многоканального режима в SPORTx_MCMC2. Бит FSDR в регистре SPORTx_MCMC2 меняет взаимосвязь времени между frame sync и принятыми тактами. Это изменение позволяет удовлетворить требованиям протокола H.100.

Обычно (когда FSDR = 0), данные передаются на том же перепаде, когда генерируется TFSx. Например, положительный перепад TFSx приводит к передаче данных на положительном перепаде TSCLKx - либо на том же перепаде, либо на следующем, в зависимости от настройки бита LATFS.

Когда используется взаимозависимость данных и frame sync (FSDR = 1), то для frame sync ожидается изменение по спаду тактового сигнала и оцифровка по нарастанию тактового сигнала. Это верно и для случая, когда принимаемые данные оцифровываются и по отрицательному перепаду тактов приема.

Регистр выбора канала. Каналом считается многобитное слово размером от 3 до 32 бит, которое принадлежит одному из каналов TDM. Отдельные каналы можно индивидуально разрешить или запретить для выбора, какие слова будут приняты и переданы во время многоканального обмена. Слова данных из разрешенных каналов принимаются или передаются, в то время как слова запрещенных каналов игнорируются. Можно выбрать до 128 следующих друг за другом каналов из 1024 доступных. Регистры SPORTx_MRCSn и SPORTx_MTCSn используются для разрешения или запрета отдельных каналов; регистры SPORTx_MRCSn задают активные каналы приема, и регистры SPORTx_MTCSn задают активные каналы передачи.

4 регистра составляют регистр выбора для каждого из нескольких каналов (см. рис. 13-28). Каждый из 4 регистров имеет 32 бита, что соответствует 32 каналам. Установка бита разрешает этот канал, так что SPORT разрешает это слово из всего блока данных (либо для приема, либо для передачи).

ADSP BF538 SPORTx Multichannel Select Registers

Рис. 13-28. Регистры выбора каналов.

Бит выбора канала 0 всегда соответствует первому слову активного окна. Чтобы определить абсолютную позицию канала во фрейме, добавьте слова смещения окна к выбранной позиции окна. Для примера установка бита 7 в регистре MCS2 выбирает разрешенным слово 71 активного окна. Установка бита 2 в MCS1 выбирает слово 34 активного окна, и так далее.

Установка отдельного бита в регистре SPORTx_MTCSn приведет SPORT к передачи слова в определенной соответствующей позиции в потоке данных. Очистка бита в регистре SPORTx_MTCSn приведет к тому, что вывод передачи SPORT перейдет в третье состояние на время действия тайм-слота этого канала.

Установка отдельного бита в регистре SPORTx_MRCSn приведет SPORT к приему слова на позиции этого канала в потоке данных; принятое слово будет загружено в буфер SPORTx_RX. Очистка бита в регистре SPORTx_MRCSn приведет SPORT к игнорированию этих данных.

Может быть выбрано компандирование для всех каналов или ни для одного канала. Компандирование типа A-law или μ-law выбирается полем TDTYPE в регистре SPORTx_TCR1 и полем RDTYPE в регистре SPORTx_RCR1, и применяется ко всем активным каналам (см. раздел "Компандирование" для дополнительной информацией).

Регистры выбора каналов используются для разрешения или запрещения отдельных каналов. Регистры выбора каналов приема (SPORTx_MRCSn, см. рис. 13-29 и таблицу 13-5) указывают активные каналы приема. Это 4 регистра, каждый по 32 бита, что соответствует 128 каналам. Эти четыре регистра вместе формируют как бы один большой 128-битный регистр, биты которого управляют выбором каналов. Установка бита разрешает соответствующий канал так, что SPORT выбирает определенное слово из нескольких слов блока данных. Например, установка бита 0 выберет слово 0, установка бита 12 выберет слово 12, и так далее.

Установка отдельного бита в регистре SPORTx_MRCSn приведет SPORT к приему слова в соответствующей позиции потока данных; принятое слово будет загружено в буфер RX. Очистка бита в регистре SPORTx_MRCSn приведет SPORT к игнорированию этих данных.

ADSP BF538 SPORTx MRCSn

Рис. 13-29. SPORTx Multichannel Receive Select Registers.

Таблица 13-5. Привязанные к адресному пространству адреса регистров (MMR) выбора каналов приема SPORTx.

Имя регистра MMR-адрес
SPORT0_MRCS0 0xFFC0 0850
SPORT0_MRCS1 0xFFC0 0854
SPORT0_MRCS2 0xFFC0 0858
SPORT0_MRCS3 0xFFC0 085C
SPORT1_MRCS0 0xFFC0 0950
SPORT1_MRCS1 0xFFC0 0954
SPORT1_MRCS2 0xFFC0 0958
SPORT1_MRCS3 0xFFC0 095C
SPORT2_MRCS0 0xFFC0 2550
SPORT2_MRCS1 0xFFC0 2554
SPORT2_MRCS2 0xFFC0 2558
SPORT2_MRCS3 0xFFC0 255C
SPORT3_MRCS0 0xFFC0 2650
SPORT3_MRCS1 0xFFC0 2654
SPORT3_MRCS2 0xFFC0 2658
SPORT3_MRCS3 0xFFC0 265C

Регистры выбора каналов используются для разрешения или запрещения отдельных каналов. 4 регистра выбора каналов передачи многоканального режима SPORTx (SPORTx_MTCSn, см. рис. 13-30 и таблицу 13-6) указывают активные каналы передачи. Эти 4 регистра, каждый по 32 бита, соответствуют 128 каналам. Эти четыре регистра вместе формируют как бы один большой 128-битный регистр, биты которого управляют выбором каналов. Установка бита разрешает соответствующий канал, так что SPORT выберет соответствующий тайм-слот для передачи слова в многоканальном блоке данных. Например, установка бита 0 выберет слово 0, установка бита 12 выберет слово 12, и так далее.

Установка отдельного бита в регистре SPORTx_MTCSn приведет к тому, что SPORT будет передавать слово в позиции этого канала всего в общем потоке данных. Очистка бита в регистре SPORTx_MTCSn приведет к тому, что SPORT переведет вывод передачи данных в третье состояние на тайм-слоте, предназначенном для слова данных этого канала.

ADSP BF538 SPORTx MTCSn

Рис. 13-30. Регистры выбора каналов передачи SPORTx в режиме Multichannel.

Таблица 13-6. Привязанные к адресному пространству адреса регистров (MMR) выбора каналов передачи SPORTx.

Имя регистра MMR-адрес
SPORT0_MTCS0 0xFFC0 0840
SPORT0_MTCS1 0xFFC0 0844
SPORT0_MTCS2 0xFFC0 0848
SPORT0_MTCS3 0xFFC0 084C
SPORT1_MTCS0 0xFFC0 0940
SPORT1_MTCS1 0xFFC0 0944
SPORT1_MTCS2 0xFFC0 0948
SPORT1_MTCS3 0xFFC0 094C
SPORT2_MTCS0 0xFFC0 2540
SPORT2_MTCS1 0xFFC0 2544
SPORT2_MTCS2 0xFFC0 2548
SPORT2_MTCS3 0xFFC0 254C
SPORT3_MTCS0 0xFFC0 2640
SPORT3_MTCS1 0xFFC0 2644
SPORT3_MTCS2 0xFFC0 2648
SPORT3_MTCS3 0xFFC0 264C

Упаковка данных Multichannel DMA. Упаковка и распаковка данных многоканального DMA задается битами MCDTXPE и MCDRXPE в регистре конфигурации многоканального режима SPORTx_MCMC2.

Если эти биты установлены, это показывает упаковку данных. В этом случае SPORT ожидает, что данные в буфере DMA соответствуют только разрешенным каналам SPORT. Например, если MCM фрейм содержит 10 разрешенных каналов, то SPORT подразумевает наличие в буфере DMA лежащих друг за другом последовательно 10 слов для каждого фрейма. Нельзя поменять общее количество разрешенных каналов без изменения размера буфера DMA, и переконфигурирование не разрешено, пока разрешен SPORT.

Если же эти биты очищены (состояние по умолчанию, показывающее, что данные не упакованы), то SPORT ожидает в буфере DMA наличие отдельного слова для каждого канала в активном окне, независимо от того, разрешен ли этот канал в настоящее время или нет, так что размер буфера DMA должен быть равным размеру всего окна. Например, если разрешены каналы 1 и 10, и размер окна 16, то размер буфера DMA должен быть 16 слов. Данные для передачи или приема будут помещены по адресам 1 и 10 буфера, и остальная часть слов буфера DMA будет игнорироваться. Этот режим позволяет изменять количество разрешенных каналов даже во время разрешенного состояния SPORT, но с некоторой предосторожностью. Сначала нужно прочитать регистр канала, чтобы убедиться, что активное окно не обслуживается. Если счетчик канала равен 0, то можно обновить регистры выбора каналов.

[Поддержка стандартного протокола H.100]

Процессор поддерживает протокол стандарта H.100. Для его поддержки нужно установить следующие параметры SPORT.

• Установите внешний frame sync. Сигнал синхронизации фрейма генерируется внешним мастером шины.
• Установите TFSR/RFSR (требуется наличие frame sync).
• Установите LTFS/LRFS (для сигнала frame sync активный уровень лог. 0).
• Установите внешнее тактирование бит.
• Установите MCMEN (выбран многоканальный режим).
• MFD = 0 (нет задержки фрейма между frame sync и первым битом данных).
• SLEN = 7 (слова длиной 8 бит).
• FSDR = 1 (установка для конфигурации H.100, разрешение половины цикла такта раннего frame sync).

2X Clock Recovery Control. Порты SPORTx могут восстанавливать тактовую частоту данных из предоставленных входных тактов 2X. Это разрешает режимы совместимости H.100 для MVIP-90 (данные 2 Mbps) и HMVIP (данные 8 Mbps) путем восстановления 2 МГц из 4 МГц или 8 МГц из 16 МГц входящих тактов с правильным выбором фазы. Сигнал 2-битного режима (MCCRM[1:0] в регистре SPORTx_MCMC2) выбирает подходящий режим тактирования, который включает режим без деления или режим bypass для нормальной работы. Значение MCCRM = 00 выбирает режим без деления или bypass (совместимо с H.100), MCCRM = 10 выбирает деление тактов MVIP-90 (распаковка 2 МГц из 4 МГц), и MCCRM = 11 выбирает деление тактов HMVIP (распаковка 8 МГц из 16 МГц).

[Терминирование выводов/сигналов линий SPORT]

Процессор очень быстро переключает все выходные выводы, включая SPORTx. Если линии соединения данных, тактов или frame sync длиннее 6 дюймов (152 мм), рассмотрите вопрос использования последовательного терминирования для голых линий соединений точка-точка. Это может потребоваться даже когда используются низкие скорости тактов - из-за слишком крутых перепадов изменения уровней сигнала.

Ранее уже были приведены несколько диаграмм времени (см. рис. 13-17, 13-18, 13-19, 13-26 и т. д.). В этой секции содержатся дополнительные примеры, чтобы показать другие возможные комбинации опций настройки фрейма.

Эти примеры диаграмм показывают взаимоотношение между сигналами, но не масштабированы настолько, чтобы показать актуальные параметры времени процессора. Для получения действительных параметров со значениями обращайтесь к специальной документации на процессоры ADSP-BF538/ADSP-BF538F.

Эти примеры подразумевают длину слова из 4 бит (SLEN = 3). Сигналы фрейма имеют активный уровень лог. 1 (LRFS = 0 и LTFS = 0).

Примечание к рис. 13-31 .. 13-42: для регистра управления SPORT показаны обе опции внутренних фреймов. DRx представляет DRxPRI и/или DRxSEC, в зависимости от нужной конфигурации. DTx представляет DTxPRI и/или DTxSEC, в зависимости от нужной конфигурации.

Рисунки 13-31 .. 13-36 показывают организацию фрейма для приема данных.

На рис. 13-31 и 13-32 показан нормальный режим фрейма для прерывистых данных (между словами может быть любое количество импульсов тактов TSCLKx или RSCLKx) и непрерывных данных (слова идут друг за другом, так что между ними нет пустых тактов TSCLKx или RSCLKx).

ADSP BF538 SPORTx RX Normal Framing

Рис. 13-31. Прием SPORT, обычные фреймы.

ADSP BF538 SPORTx RX Continuous Normal Framing

Рис. 13-32. Непрерывный прием SPORT, обычные фреймы.

Рис. 13-33 и 13-34 показывают прерывистый и непрерывный прием с альтернативными фреймами. Эти 4 рисунка показывают требования по входу для интервалов времени внешнего frame sync, и также выходные характеристики по времени генерируемых внутренне frame sync. Обратите внимание, что выход удовлетворяет входным требованиям; таким образом, с двумя используемыми каналами SPORT один из каналов SPORT мог бы предоставить RFSx для другого канала SPORT.

ADSP BF538 SPORTx RX Alternate Framing

Рис. 13-33. Прием SPORT, альтернативные фреймы.

ADSP BF538 SPORTx RX Continuous Alternate Framing

Рис. 13-34. Непрерывный прием SPORT, альтернативные фреймы.

Рис. 13-35 и 13-36 показывают работу приема с нормальными фреймами и альтернативными фреймами соответственно, без тактирования фреймов (unframed mode). Один сигнал frame sync появляется только в начале первого слова, в момент либо на 1 такт RSCLKx перед первым битом (нормальный режим), либо в одновременно с первым битом (альтернативный режим). Этот режим подходит для ускоренных передач множества слов (непрерывный прием).

ADSP BF538 SPORTx RX Unframed Normal Framing

Рис. 13-35. Прием SPORT, без тактирования фреймов, обычные фреймы.

ADSP BF538 SPORTx RX Unframed Alternate Framing

Рис. 13-36. Прием SPORT, без тактирования фреймов, альтернативные фреймы.

Рисунки 13-37 .. 13-42 показывают фреймы для передаваемых данных, и они очень похожи на рисунки 13-31 .. 13-36.

На рис. 13-37 и 13-38, обычные фреймы показаны для прерывистых данных (любое количество тактов TSCLKx между словами) и непрерывно передаваемых данных (между словами такты TSCLKx отсутствуют). Рис. 13-39 и 13-40 показывают прерывистые и непрерывные передачи для альтернативных фреймов. Как было уже замечено по предыдущим диаграммам приема, выход RFSx удовлетворяет входным требованиям RFSx по параметрам интервалов времени.

ADSP BF538 SPORTx TX Normal Framing

Рис. 13-37. Передача SPORT, нормальные фреймы.

ADSP BF538 SPORTx TX Continuous Normal Framing

Рис. 13-38. Непрерывная передача SPORT, нормальные фреймы.

ADSP BF538 SPORTx TX Alternate Framing

Рис. 13-39. Передача SPORT, альтернативные фреймы.

ADSP BF538 SPORTx TX Continuous Alternate Framing

Рис. 13-40. Непрерывная передача SPORT, альтернативные фреймы.

Рис. 13-41 и 13-42 показывают работу передачи с нормальными и альтернативными фреймами соответственно, без тактирования фреймов (unframed mode). Одиночный импульс frame sync появляется только в момент начала первого слова, либо на 1 такт перед первым битом TSCLK (нормальные фреймы), либо одновременно с 1 битом (альтернативные фреймы).

ADSP BF538 SPORTx TX Unframed Normal Framing

Рис. 13-41. Передача SPORT, без тактирования отдельных фреймов, обычные фреймы.

ADSP BF538 SPORTx TX Unframed Alternate Framing

Рис. 13-42. Передача SPORT, без тактирования отдельных фреймов, альтернативные фреймы.

[Ссылки]

1. ADSP-BF538/ADSP-BF538F Blackfin® Processor Hardware Reference site:analog.com.
2. ADSP-BF538: интерфейс UART.
3. Blackfin ADSP-BF538.
4. ADSP-BF538: DMA.
5. ADSP-BF538: управление портами GPIO C, D, E.
6. АЦП AD7691.

 

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


Защитный код
Обновить

Top of Page