Как выбрать режим master или slave в I²S (I2S)?

Участники I²S могут быть ведущими или подчиненными. Мастер должен предоставить часы, а ведомый должен принять часы.

Хотелось бы знать, как, из каких соображений принимается это решение.

Я думаю, вы сами ответили на свой вопрос: мастер должен предоставить часы, а раб должен их принять.

Ответы (3)

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

Более конкретно: в системе I2S чаще всего вы найдете три типа компонентов: ЦАП, АЦП и MCU (или SoC). Большинство ЦАП, которые я видел, не могут вести себя как мастера. Микроконтроллеры обычно универсальны и могут вести себя как оба. АЦП также очень часто могут вести себя как оба.

Причина в следующем: если вам нужен SoC и ЦАП (множество приложений), SoC, как правило, будет иметь сложную систему тактирования (с полностью настраиваемыми PLL и прочим), что делает его подходящим для роли мастера. . Таким образом, ЦАП не должен выступать в роли ведущего устройства. Для приложений с SoC и ADC вы также захотите, чтобы SoC был ведущим по той же причине. Однако в некоторых других приложениях вы можете захотеть иметь АЦП, которые напрямую подключены к ЦАП (без промежуточных SoC). Вот почему, как правило, АЦП также могут вести себя как ведущие (но в этом случае параметры тактирования обычно менее гибкие, чем с SoC).

Итак, чтобы ответить на ваш вопрос, для типичного приложения, использующего SoC, SoC будет основным. Если у вас нет I2S SoC (у вас есть только АЦП+ЦАП), АЦП, безусловно, должен быть ведущим.

Примечание. Конечно, ADC/DAC/SoC — не единственные устройства, которые можно найти в системе I2S. Но для других типов устройств часто можно применить то же обоснование. Например: передатчики S/PDIF часто являются только ведомыми, а приемники обычно могут действовать как ведущие или ведомые.

Для наилучшего качества звука выберите в качестве ведущего устройство, которое обеспечивает максимальное отсутствие джиттера MCLK, BCLKи LRCLK. В идеале используйте внешний генератор для MCLK. MCU может быть не в состоянии получить требуемую тактовую частоту без джиттера [1]. Например, если MCU также обрабатывает USB. Если кодек имеет нечетные режимы аудиоинтерфейса, часто проще настроить MCU для их поддержки.

[1] https://community.nxp.com/thread/108968#comment-109440

Я считаю, что в I2S есть передатчики и приемники. А Мастер — это тот, кто производит часы. В сценарии с несколькими передатчиками и приемниками это становится немного неясным. Вот что говорится в найденной здесь спецификации I2S :

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