PDA

Просмотр полной версии : I2C на примере TDA7419


Alex-L
23.03.2017, 23:31
Нашел в закромах незаконченный проект. В который раз хочется попробовать вникнуть в суть программирования :blush:
Читаю даташит на 7419 и нихрена не понимаю! Объясните на пальцах - что надо загнать в микробу (последовательность 1 и 0) чтобы, например, установить "мастер" громкость на 50%
???

nektomaks
23.03.2017, 23:57
в ветке про дсп для андроида были рабочие опыты, там спроси автора

skanch
24.03.2017, 04:53
Нашел в закромах незаконченный проект. В который раз хочется попробовать вникнуть в суть программирования :blush:
Читаю даташит на 7419 и нихрена не понимаю! Объясните на пальцах - что надо загнать в микробу (последовательность 1 и 0) чтобы, например, установить "мастер" громкость на 50%
???

"... Дело было в неправильном адресе. Я отправлял как в datasheet адрес 0b10001000, а надо было 7-ми битный 0b1000100." Источник (http://www.pccar.ru/showthread.php?t=24036).

Alex-L
24.03.2017, 10:45
Это я где-то читал. Нихрена вообще не понимаю!
Откуда взялося 0b ?
Дальше 1000100, а потом ведь должен быть еще 0 или 1 - RX или TX Mode ?
И эта часть посылки только адрес чипа. А где все остальное!?

Когда делали авторадио на LM7001, так там в одной строке (21 бит кажется - не помню) всегда передавались сразу все возможные параметры. Но там их сгулькинхрен было, а тут восемь страниц... Или у микробы память и передается только тот параметр, который нужно изменить?

skanch
24.03.2017, 11:09
Я понимаю так , что ты решил реанимировать свою задумку...
Наверно и это (http://radiokot.ru/circuit/audio/other/46/) тоже читал?

Alex-L
24.03.2017, 11:21
Ну насчет реанимировать не знаю... в современных реалиях это наверное не акуально и нерентабельно. Просто интересно пока для себя с этим аудиопроццом поковырятся. Возможности у него не слабые и по качеству, говорят, очень даже ничего....
"Наверно и это тоже читал?" - видел, читал по диагонали, пока не вникал.

skanch
24.03.2017, 11:30
Правда там на PIC-ах реализация... На AVR не попадались. Поинтересуйся у Server164 - он вроде реализовал свой проект (http://www.pccar.ru/showthread.php?t=24036) на этой микре...

skanch
24.03.2017, 11:57
Вот, к стати документик (http://www.pccar.ru/attachment.php?attachmentid=47082&stc=1&d=1490342169) из проекта на PIC...

Alex-L
24.03.2017, 12:31
Ага! Вот вроде начинаю немного вкуривать :)
Значит чтобы, например, выбрать вход SE1 с уровнем 0Дб - я должен послать в чип следующее:
0b10001000 0b00000000 0b10000001
Правильно?
Остальные настройки сохраняются в чипе? Т.е. посылается только то, что нужно изменить?
Что такое: Testing Mode, Auto Zero Remain, Auto Increment Mode ?
Testing Mode - понятно, что тестовый режим. В чем это выражается?

Alex-L
24.03.2017, 12:35
Блин! А что за "b" ? Как послать "b" ?

awtoap
24.03.2017, 12:45
Ахаха это в си говорит, что значение представлено в двоичном виде...можешь его преобразовать в десятичный и шестнадцатеричный(префикс вроде 0х вместо 0b) через приложение калькулятор

Alex-L
24.03.2017, 13:24
Уже допер :) Значит чтобы, например, выбрать вход SE1 с уровнем 0Дб - я должен послать в чип следующее (двоичный код):
<старт> 10001000 00000000 10000001 <стоп>
Ну разумеется без пробелов. Старт-стоп посылки - изучаю... Правильно?

Остальные настройки сохраняются в чипе? Т.е. посылается только то, что нужно изменить?
Что такое: Testing Mode, Auto Zero Remain, Auto Increment Mode ?
Testing Mode - понятно, что тестовый режим. В чем это выражается?

Alex-L
26.03.2017, 23:03
awtoap! Ты не смейся, ты научи! Ты ж эту микробу имел, да с приправой :) :)

awtoap
27.03.2017, 13:23
Спрашивай что нужно, но я то на паскале програмлю, а не на си.

Alex-L
29.03.2017, 12:33
Щас пока о программировании речь не идет. Пока пытаюсь понять как управляется чип - что в него засылать для получения какого-либо результата. Так же лениво и не спеша разрабатываю максимально универсальную отладочную плату для него.

Повторю вопросы, интересующие в данный момент:

1. Чтобы, например, выбрать вход SE1 с уровнем 0Дб - я должен послать в чип следующее (двоичный код):
<старт> 10001000 00000000 10000001 <стоп>
Ну разумеется без пробелов. Старт-стоп посылки - изучаю... Правильно?

2. Остальные настройки сохраняются в чипе? Т.е. посылается только то, что нужно изменить?

3.Что такое: Testing Mode, Auto Zero Remain, Auto Increment Mode ?
Testing Mode - понятно, что тестовый режим. В чем это выражается?

Ноябрь
29.03.2017, 16:14
Вот такую инициализацию 7419 делаю при включении

void data_init_default(void)
{
// SndAmp
SND_AMP_CONFIG[Main_source_selector].subadress = 0x00; //0b00000000;
SND_AMP_CONFIG[Main_source_selector].data = 0x83; //0b10000110; // Source: QD/SE: SE3 + GAIN 0 dB + AutoZero OFF
SND_AMP_CONFIG[Main_loudness].subadress = 0x01; //0b00000001;
SND_AMP_CONFIG[Main_loudness].data = 0xC0; //0b11000000; // Soft-step = OFF + High boost = OFF + Center frequency = Flat + 0 db
SND_AMP_CONFIG[Soft_mute_clock_generator].subadress = 0x02; //0b00000010;
SND_AMP_CONFIG[Soft_mute_clock_generator].data = 0xFD; //0b11111101; // Soft-mute OFF + Pin and IIC + Clock fast mode = off
SND_AMP_CONFIG[Volume].subadress = 0x03; //0b00000011;
SND_AMP_CONFIG[Volume].data = 0xA2; //0b10100010; // -18 dB + Soft-step = OFF
SND_AMP_CONFIG[Treble].subadress = 0x04; //0b00000100;
SND_AMP_CONFIG[Treble].data = 0x80; //0b10000000; // Internal Vref + 0 db
SND_AMP_CONFIG[Middle].subadress = 0x05; //0b00000101;
SND_AMP_CONFIG[Middle].data = 0x00; //0b00000000; // 0 db
SND_AMP_CONFIG[Bass].subadress = 0x06; //0b00000110;
SND_AMP_CONFIG[Bass].data = 0x00; //0b00000000; // 0 db
SND_AMP_CONFIG[Second_source_selector].subadress = 0x07; //0b00000111;
SND_AMP_CONFIG[Second_source_selector].data = 0x07; //0b00000111; // Rear Speaker Source = main source + 0 db + Source selector = mute
SND_AMP_CONFIG[Subwoofer_middle_bass].subadress = 0x08; //0b00001000;
SND_AMP_CONFIG[Subwoofer_middle_bass].data = 0xFF; //0b11111111; // off
SND_AMP_CONFIG[Mixing_gain_effect].subadress = 0x09; //0b00001001;
SND_AMP_CONFIG[Mixing_gain_effect].data = 0xF7; //0b11110111; // off + Subwoofer = ON
SND_AMP_CONFIG[Speaker_attenuator_left_front].subadress = 0x0A; //0b00001010;
SND_AMP_CONFIG[Speaker_attenuator_left_front].data = 0x80; //0b10000000; // gain 0 dB + Soft-step = OFF
SND_AMP_CONFIG[Speaker_attenuator_right_front].subadress = 0x0B; //0b00001011;
SND_AMP_CONFIG[Speaker_attenuator_right_front].data = 0x80; //0b10000000; // gain 0 dB + Soft-step = OFF
SND_AMP_CONFIG[Speaker_attenuator_left_rear].subadress = 0x0C; //0b00001100;
SND_AMP_CONFIG[Speaker_attenuator_left_rear].data = 0x80; //0b10000000; // gain 0 dB + Soft-step = OFF
SND_AMP_CONFIG[Speaker_attenuator_right_rear].subadress = 0x0D; //0b00001101;
SND_AMP_CONFIG[Speaker_attenuator_right_rear].data = 0x80; //0b10000000; // gain 0 dB + Soft-step = OFF
SND_AMP_CONFIG[Mixing_level_control].subadress = 0x0E; //0b00001110;
SND_AMP_CONFIG[Mixing_level_control].data = 0x80; //0b10000000; // gain 0 dB + Soft-step = OFF
SND_AMP_CONFIG[Subwoofer_attenuator].subadress = 0x0F; //0b00001111;
SND_AMP_CONFIG[Subwoofer_attenuator].data = 0x80; //0b10000000; // gain 0 dB + Soft-step = OFF
SND_AMP_CONFIG[Spectrum_analyzer_clock_source_AC_mode].subadress = 0x10; //0b00010000;
SND_AMP_CONFIG[Spectrum_analyzer_clock_source_AC_mode].data = 0x5F; //0b01011111; // AC coupling after In gain + Clock source = internal
SND_AMP_CONFIG[Testing_audio_processor].subadress = 0x11; //0b00010001;
SND_AMP_CONFIG[Testing_audio_processor].data = 0x00; //0b00000000; // testing mode OFF
Write_config();
}

awtoap
29.03.2017, 22:14
AutoZero непонятно, AutoIncrement после записи в какой-то регистр внутренний счетчик перемещается на следующий регистр...короче можно заполнить все регистры за одну передачу без явного указания номера регистра. Проще говоря записываешь в 0 регистр(субадрес) при этом взводишь в субадресе 5 бит (итого это будет не 0 регистр, а 16) и записываешь данные, после записи внутри счетчик уже указывает на следующий регистр (первый) и опять шлешь данные и так далее сколько есть регистров в микре. Выглядит так: старт--адрес чипа--16--данные--данные(сколько регистров)--стоп

Обычная запись: старт--адрес чипа--субадрес--данные--стоп.

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