sPave
Well-known member
Коллеги, приветствую. Собираю информацию, как добавить к небольшому проекту активных колонок на ADAU1701 Blouetooth приемник на базе ESP32.
Скетч ESP32 подготовил, заставил делать ресемплинг из 44.1 в 48, вижу SDATA, BCLK(1.5МГц вместо обычных 3мГц), вижу LR.
Смущает, что я вижу BCLK, LR даже, когда в скетче прописаy режим slave.
По задумке(думаю, это правильно), хочу что бы все тактировал ADAU.
Вопросы:
1. Режим (master\slave) I2S порта (который рядом с портом I2C) определяется наличием перемычки кварца и играет роль и галочка в регистрах?
2. Режим (master\slave) этой галочкой можно задать только для исходящего I2S потока?
3. В регистрах выставил Right-Justefied 16bit (правильно ли это?).
Пользовался reflex+1701, хотел для проверки поставить ESP32 вместо Reflex и тактировать от него, но для запуска ESP32 в режиме Мастера, смущает его BCLK в 1.5мГц. Подозреваю, нужно что-то сделать с Programm Letght.
Не поделится ли кто мыслями\наработками по этой теме. Пока сомневаюсь даже в коммутации, перемычку кварца запаял.
Мой скетч(только для I2C управления, не для BT):
Скетч ESP32 подготовил, заставил делать ресемплинг из 44.1 в 48, вижу SDATA, BCLK(1.5МГц вместо обычных 3мГц), вижу LR.
Смущает, что я вижу BCLK, LR даже, когда в скетче прописаy режим slave.
По задумке(думаю, это правильно), хочу что бы все тактировал ADAU.
Вопросы:
1. Режим (master\slave) I2S порта (который рядом с портом I2C) определяется наличием перемычки кварца и играет роль и галочка в регистрах?
2. Режим (master\slave) этой галочкой можно задать только для исходящего I2S потока?
3. В регистрах выставил Right-Justefied 16bit (правильно ли это?).
Пользовался reflex+1701, хотел для проверки поставить ESP32 вместо Reflex и тактировать от него, но для запуска ESP32 в режиме Мастера, смущает его BCLK в 1.5мГц. Подозреваю, нужно что-то сделать с Programm Letght.
Не поделится ли кто мыслями\наработками по этой теме. Пока сомневаюсь даже в коммутации, перемычку кварца запаял.
Мой скетч(только для I2C управления, не для BT):
#include <Wire.h>
#define ADAU1701_I2C_ADDR 0x34 // I2C-адрес ADAU1701, убедитесь, 0x68 правильный ли(подозрен-е, 0x34 верный адрес)
//#define ADAU1701_I2C_ADDR (0x68 >> 1) & 0xFE // I2C-адрес ADAU1701, копипаст адреса из проекта с ГитХаб
#define MUTE_REG_ADDR 0x0016 // Адрес регистра MuteNoSlewAlg2mute
// Настройка подтягивающих резисторов пинов для I2C на моей плате не нужна
#define I2C_SCL_PIN 16
#define I2C_SDA_PIN 17
void setup() {
Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN); // Инициализация I2C с заданными пинами
}
void loop() {
// Включаем Mute
Wire.beginTransmission(ADAU1701_I2C_ADDR);
Wire.write((MUTE_REG_ADDR >> 8) & 0xFF); // Старший байт адреса
Wire.write(MUTE_REG_ADDR & 0xFF); // Младший байт адреса
Wire.write(0x00); // Данные для Mute включения
Wire.write(0x80);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
delay(2000);
// Выключаем Mute
Wire.beginTransmission(ADAU1701_I2C_ADDR);
Wire.write((MUTE_REG_ADDR >> 8) & 0xFF); // Старший байт адреса
Wire.write(MUTE_REG_ADDR & 0xFF); // Младший байт адреса
Wire.write(0x00); // Данные для Mute выключения
Wire.write(0x00);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
delay(2000);
}
#define ADAU1701_I2C_ADDR 0x34 // I2C-адрес ADAU1701, убедитесь, 0x68 правильный ли(подозрен-е, 0x34 верный адрес)
//#define ADAU1701_I2C_ADDR (0x68 >> 1) & 0xFE // I2C-адрес ADAU1701, копипаст адреса из проекта с ГитХаб
#define MUTE_REG_ADDR 0x0016 // Адрес регистра MuteNoSlewAlg2mute
// Настройка подтягивающих резисторов пинов для I2C на моей плате не нужна
#define I2C_SCL_PIN 16
#define I2C_SDA_PIN 17
void setup() {
Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN); // Инициализация I2C с заданными пинами
}
void loop() {
// Включаем Mute
Wire.beginTransmission(ADAU1701_I2C_ADDR);
Wire.write((MUTE_REG_ADDR >> 8) & 0xFF); // Старший байт адреса
Wire.write(MUTE_REG_ADDR & 0xFF); // Младший байт адреса
Wire.write(0x00); // Данные для Mute включения
Wire.write(0x80);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
delay(2000);
// Выключаем Mute
Wire.beginTransmission(ADAU1701_I2C_ADDR);
Wire.write((MUTE_REG_ADDR >> 8) & 0xFF); // Старший байт адреса
Wire.write(MUTE_REG_ADDR & 0xFF); // Младший байт адреса
Wire.write(0x00); // Данные для Mute выключения
Wire.write(0x00);
Wire.write(0x00);
Wire.write(0x00);
Wire.endTransmission();
delay(2000);
}
Вложения
-
16,6 КБ Просмотры: 84
Последнее редактирование: