Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическиое пособие_10.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

2.10. Интерфейс i2s (Inter-ic Sound)

Это скоростной последовательный интерфейс для потоковой передачи цифровых аудио данных. В основном она используется при работе с аудио-кодеками. Процессор содержит четыре независимых I2S модуля. Надо отметить, что по одному I2S могут обмениваться только два устройства без использования адресации (поэтому их четыре), в то время I2C адресная шина с возможностью подключения большого количества устройств с разными адресами.

К основным характеристикам модуля I2S можно отнести:

-возможность одновременной передачи и приёма данных.

-наличие буферных регистров данных.

-длина слова данных может быть 8,10,12,14,16,18,20,24 или 32 бита.

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

-наличие обратной петли (loopback) данных для проверки внутренней передачи/приёма при отладке кода.

-программируемый делитель частоты передачи/приёма синхронизации каждого бита и каждого фрейма.

Принимаемые данные поступают на вход I2S RX процессора. Блок-схема приёмника включает, приёмный сдвиговый регистр Receive Shift Register, данные из которого передаются в регистр Receive Left/Right Data Registers. Для каждого канала (левого и правого) последний регистр может быть доступен как два 16-ти битных регистра (для CPU) или как 32-х битный регистр (для DMA).

Данные для передачи записываются из CPU или DMA в регистре Transmit Left/Right Data Registers. За тем они копируются в Transmit Shift Register через регистр Transmit Buffer Register и последовательно сдвигаются через внешний вывод I2S DX.

Блок управления интерфейса содержит внутренний генератор тактовых импульсов, генератор сигналов синхронизации фреймов и управление ими. Интерфейс может настраиваться на режим “master” и “slave”. В режиме “master” вырабатывается сигнал синхронизации фрейма I2S_FS и сигнал синхронизации каждого бита I2S_CLK. Эти сигналы на шине являются двунаправленными. В режиме “slave” внутренний генератор выключен. Длина фрейма определяется количеством слов, передаваемых во фрейме. Для выбора соотношения полярности сигналов синхронизации данных и фреймов выделены отдельные управляющие биты CLKPOL и FSPOL в регистре I2SSCTRL .

Обмен данными может вызывать прерывания CPU (если они разрешены в I2SINTMASK Interrupt Mask Register). Прерывание при передаче данных генерируется, когда регистр данных передатчика пуст. Прерывание при приёме данных генерируется, когда регистр данных приёмника полон. Появление прерывания вызывает установку соответствующего флага в регистре Interrupt Flag Register (I2SINTFL). В этом последнем регистре есть флаги, фиксирующие события-ошибки при обмене данных, но эти события не подключены к прерываниям процессора и могут отслеживаться путём программного опроса.

I2S управляется от основного системного тактового генератора. Неиспользуемый модуль может быть отключён от этого генератора для экономии энергопотребления через конфигурационный регистр PCGCR1. Требуемая частота синхронизации битов и фреймов программируется через делители, на вход которых подаётся частота системного генератора. Эти частоты для битов и фреймов вырабатываются только, когда I2S модуль работает в режиме “master” (MODE = 1 в регистре I2SSCTRL). Частота синхронизации определяется по соответствующим формулам, которые можно найти в описании, и во многом зависит от частоты дискретизации АЦП или аудио кодека.

Управляющими регистрами можно установить соотношения фаз синхронизирующих сигналов для бит и для фреймов.

Может использоваться эффективный режим упаковки данных в память, если размер слова меньше 32-х бит (а именно 10,12,14 или 16 бит), когда последовательно заполняются ячейки со значащими данными. Т.о. в 32-х битах могут располагаться последовательно два 12-ти битных слова.

Сброс шины I2S может производиться как программой (software reset) через регистр PRCR (данные в сдвиговых регистрах сохраняются), так и через общий сброс процессора (hardware reset). В последнем случае во всех регистрах устанавливаются данные по умолчанию.

Каждая из четырёх I2S шин поддерживает прерывания по передаче и приёму данных в процессорное ядро или DMA. Разрешения или запрет этих прерываний записывается в регистр I2SINTMASK регистр. Отдельно выделены биты-маски для моно и стерео режимов. Прерывания фиксируются в соответствующих флагах регистра I2SINTFL.

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

При работе шины с DMA прерывания процессора от шины должны быть запрещены.

Данные с I2S шины через DMA могут писаться как во внутреннее ОЗУ (DARAM, SARAM), так и во внешнее через EMIF интерфейс.