Участники I²S могут быть ведущими или подчиненными. Мастер должен предоставить часы, а ведомый должен принять часы.
Хотелось бы знать, как, из каких соображений принимается это решение.
Обычно решение просто определяется возможностями компонентов, которые вы пытаетесь собрать: все компоненты не могут быть главными.
Более конкретно: в системе 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 для их поддержки.
Я считаю, что в I2S есть передатчики и приемники. А Мастер — это тот, кто производит часы. В сценарии с несколькими передатчиками и приемниками это становится немного неясным. Вот что говорится в найденной здесь спецификации I2S :
... передатчик в качестве ведущего должен генерировать битовую синхронизацию, сигнал выбора слова и данные. Однако в сложных системах может быть несколько передатчиков и приемников, что затрудняет определение ведущего. В таких системах обычно имеется мастер системы, управляющий потоком цифровых аудиоданных между различными ИС. Таким образом, передатчики должны генерировать данные под управлением внешних часов и, таким образом, действовать как ведомые устройства.
Маркус Мюллер