Перейти к содержанию
    

repstosw

Участник
  • Постов

    2 650
  • Зарегистрирован

  • Победитель дней

    2

Сообщения, опубликованные repstosw


  1. Нашёл у себя в запасах ещё один понижающий конвертер - SY8009.   В даташите пишут, что он может работать от литий-ионки.

    Сделал на нём стабилизатор тока.

     

    Подключил его к свежезаряженной литий-ионке , замеры такие:

    Напряжение батареи: 3,892 V

    Ток через светодиод 0,55A

    Напряжение на светодиоде  2,982V

    Напряжение на  резисторе FB : 0,604V - совпадает с даташитом (Vref).

     

    Далее пошли чудеса. Вместо литий-ионки запитал от повер-банка от телефона, замеры такие:

    Напряжение повербанка: 4,94V

    Ток через светодиод: 0,29A  -  WTF ???

    Напряжение на светодиоде: 2,8V

    Напряжение на резисторе FB: 0,31V - WTF ???  Почему Vref не такой как в даташите?

     

    Чем можно объяснить замеры в случае питания повербанком?  Может данная архитектура конвертера не умеет играть в стабилизатор тока?

    Cхема:

    image.png.d64f212c0dc44ba803763b5bbf7a19c5.png

     

    30 minutes ago, HardEgor said:

    Почитал. Ничего не сказано про форму и длительность выбросов, слишком секретная величина, понимаю, да) А там как раз и зарыта энергетика выбросов, увы. По хорошему форму выбросов надо смотреть на выводах передатчика.

    Передача: 12 или 15 фреймов в секунду.  Передача и приём 12 или 15 фреймов.  Время передачи = времени приёма.  Значит, время передачи = 1/(FPS*2) = 41,666 мс или 33,333 мс.  Потребление трансивера то 0,55A, то 0,05A.

    Линейный стабилизатор врежиме источника тока, запитанный от повышающего конвертера 5V, даёт постоянный ток через светодиод - я не вижу морганий(просадка яркости) в моменты передачи.

    Если же взять источник тока на базе импульсника LM2596, запитанный от повышающего конвертера 5V, то он НЕ даёт постоянный ток через светодиод - я вижу моргания(просадку яркости) в моменты передачи.

    З.Ы.  как вы догадались, передатчик запитан от того же конвертера на 5V  🙂

     

    30 minutes ago, HardEgor said:

    Зависит от. Если электролит поближе к самому передатчику поставить, то всё станет намного лучше. И импульснику не поплохеет, и выбросы будут поменьше и поглаже. А может быть тогда и электролит не понадобится, можно и керамикой обойтись. Но это вы и сами можете и посчитать и промоделировать. Технически это надо промоделировать импульсный преобразователь, потому что выбросы как я понимаю это плохое качество его работы - он не успевает отрегулировать скачки тока и если у вас 5В преобразователь, то 10% выбросы это как многовато...

    Использую вот такую байду для питания всего - делает из лития 5V,  и умеет его заряжать.  ИМХО конденсаторов на плате больше, чем достаточно:

    1.jpg.931c63cdcc3822a14c9043336dd8f6f8.jpg

  2. 13 minutes ago, HardEgor said:

    Значит надо электролит побольше поставить, чтобы сглаживал всплески, а не городить огород со всякими стабилизаторами. Нет, оно конечно стабилизатор штука нужная, но стоит решать проблему, а не замазывать её.)

    А импульснику плохо не станет?  От электролита по-больше...

    Никто ничего не замазывает.  Передатчик с током потребления от 0,5A и больше в режиме Full Duplex, который попеременно работает на приём и передачу - это не проблема, а данность.

    Прежде чем писать ответ, следует читать всю тему полностью, а не отвечать бесполезными постами на отдельный пост.

  3. 7 minutes ago, Plain said:

    Если линейный источник тока устраивает, и есть 5 В, то соберите его на ОУ и NPN с аккумулятора, при этом поделить 5 В опорного можно до любого вменяемого значения, а если ОУ взять автообнуляемый, то и до невменяемого.

    Тот повышающий конвертер 5V нельзя использовать в качестве опорного - потому что на нём как раз и происходят всплески напряжения из-за других подключенных нагрузок.

    Сюда напрашивается какой-нибудь  маломощный линейник на 1,2 - 1,5 V  + резистивный делитель с фильтрующим конденсатором.   Но это всё ещё потребует операционника - так как нужно сравнивать напряжения и высокое входное сопротивление

    10 minutes ago, Plain said:

     а если ОУ взять автообнуляемый, то и до невменяемого.

    Что такое авто-обнуляемый ОУ?

  4. Сделал стабилизатор тока на двух транзисторах:  биполярный с Ube ~ 0.6 V  и MOSFET с открытым каналом 50 мОм.

    Схема работает, но стабилизация тока начинается с напряжения 3,7V и выше.  Всё что ниже - ток через светодиод падает.

    Схема устойчива к пульсациям питающего напряжения - запитал её с повышающего DC/DC 5V, яркость светодиода не меняется, когда параллельно работает мощный передатчик (тоже запитан от этих же 5V) с частотой включения-выключения 10-20 Гц.

    Ток I = Ube/2 = 0.306 A.  На самом деле сопротивление резистора не 2 , а 2,2 Ом, что даёт ток близкий к измеренному - 0,28A

    Сюда бы какой-нибудь ИОН с более стабильным напряжением, чем переход БЭ биполярного транзистора. Да и поделить  напряжение с ИОН резистивным делителем, чтобы уменьшить сопротивление резистора в цепи истока MOSFET, для уменьшения рассеиваемой мощности.

    Резистор на 10 кОм можно отключить от питания и завести его на ШИМ, будет диммирование.

    И всё-же, почему ток через светодиод падает, при питании этого стабилизатора напряжением  меньше 3,7V?   (использовал понижающий DC/DC с регулировкой выходного напряжения).

    image.thumb.png.c989c36ca1909be104fb2b3db0492a88.png

  5. 2 hours ago, artemkad said:

    PS. Впрочем, специализированный PAM2804 явно получше будет...

    Vref = 0.1V.  И входное напряжение может быть вплоть до значения разряженной литий-ионки. Это очень хорошо!

    Один минус - микросхема уйдёт в "добрый путь", если светодиод сгорит или не будет подключен. Собственно, как и все источники тока, выполненные на базе импульсных конвертеров.  Есть там защиты разные.

    За название микросхемы - спасибо!

    Обеспечит ли эта микросхема постоянство тока через светодиод, если входное напряжение питания микросхемы будет колебаться в пределах +0,5 -0,5V с частотой 10-20 Гц? Собирал источник тока на LM2596 - светодиод менял яркость при изменении входного напряжения, что не годится. Где интересно обещанная стабилизация тока?  Правда, входное напряжение должно было быть не ниже 4,75V.

     

    1 hour ago, dxp said:

    Если вам КПД и тепловыделение не препятствуют, то это другое дело. Но линейным силовым схемам по КПД тяжело тягаться с импульсными. У линейных есть другие преимущества.

    Не сильно препятствуют.  Главное, чтобы было постоянство тока через светодиод - при снижении напряжения питания и чтобы ток не менялся от встрясок входного напряжения +/-0.5V  с частотой 10-20 Гц.

     

  6. К вопросу о КПД и рассеивания мощности впустую на тепло.  Два варианта: источник тока на базе имульсника (buck converter) и на базе линейного источника тока.

    Вопрос актуален и ценен только в разрезе того, что надо.  А надо - запитать от литий-ионки мощный белый светодиод мощностью 2 Вт на 3V.

    Остальные сферические рассуждения КПД и тепловыделения мне неинтересны.

    1) Понижающий импульсник в режиме источника тока. Не нужно его путать со стабилизатором напряжения. Ключевой момент выглядит вот так:

    image.png.f74e44dd268ef2285b03337eeb7093d2.png

    Самое злачное место здесь - входное минимальное напряжение (оно обычно не ниже 4,2V, что не даёт использовать литий-ионку) и резистор Rsense, выделение тепла на котором зависит от опорного напряжения Vref и требуемого тока для светодиода.  Лучшие конвертеры имеют Vref=<0,2V. Требуемый ток 0,5A.  Значит мощность рассеивания на резисторе: I*U = 0,25 Вт.   Рассеиванием на корпусе импульсника пренебрегаем (исходя из высокого КПД).

     

    2) А теперь вышеупомянутый  линейник CN5711 - заявлен дроп 0,12V при токе 0,5A. Значит мощность рассеивания: 0,12*0,5A = 0,06 Вт. При этом возможно запитать от литий-ионки.

     

    0,06 < 0,25

     

    Ну и кто лучше, спрашивается?

    Так что, все рассуждения о КПД имеют смысл только лишь при жёстко заданных входных условиях.  И я их обозначил в этой теме.

     

    9 hours ago, Michael58 said:

    CN5711 не имеет опции управления по ШИМ (PWM), управляется только напряжением на ISET, у этого входа есть внутренний pull up.

    Зато есть ножка CE,  которая позволяет включать-выключать, что равно управлению по ШИМ.

    В других микросхемах это работало, проверял лично сам.  На счёт линейности (% ШИМ - яркость)  не знаю, она и не нужна для моих целей.

  7. Вот ещё:  CN5711 - шедевр!  При токе 0,5A дроп всего 0,12V.  Как раз, чтобы решить проблему проклятой стабилизации тока через мощный светодиод от литий-ионки - вплоть до полного разряда аккума (светодиоду надо всего 2,9V )! )))

    image.thumb.png.06df6bf0c3ccf5abdcdc02503b54a3ce.png

     

    В даташите почему-то диммируют её странным образом - через MOSFET на резистор.  Есть же ножка CE, в неё ШИМ туда надо же...

    image.png.40e512d941b0aa4877011f28c9a2077b.png

  8. 2 hours ago, mantech said:

    Учтите "А вот при обрыве нагрузки - микросхема тут же полетела."... Как по мне не айс, диоды в обрыв уходят только в путь...

    В общем склоняюсь в сторону использования линейников. Потому что почитав вот это:

    https://forum.cxem.net/index.php?/topic/158624-светодиод-34в-и-li-ion-378v/#comments

    А потом - вот это:

    https://mysku.club/blog/aliexpress/51031.html

    понял, что один фиг  КПД что с импульсником, что с линейником будет практически одинаковым (в случае если запитать белый светодиод от литий-ионки),

     

    А использование стабилизатора напряжения вместо стабилизатора тока, приведёт к медленному нарастанию потребляемого тока светодиодом, его разогреву и выходу из строя.  Запитал светодиод напряжением 2,9V, ток был вначале 0,4A и через 2 минуты вырос до 0,5A.  И потом ещё стал медленно нарастать также, испытывать судьбу не стал - выключил (максимальный ток диода - 0,65 А).

    А токоограничивающий резистор ставить последовательно со светодиодом не хочу - это рассеивание мощности впустую + зависимость от перепадов напряжения на входе.

    image.png.c6d91fc67afff4e87039db8b06a4ea5d.png

  9. 33 minutes ago, Michael58 said:

    Дешевый вариант: MP23701

    Неплохо )))   Опорник меньше 0,2V радует.  Входное минимальное напряжение 4,2V.

    Запускал  источник тока на базе LM2595S - не вытягивает нужный ток для светодиода - вместо 0,5A получилось 0,4A. Из-за нижней границы входного напряжения - 4,75V.

     

    6 minutes ago, repstosw said:

    Осмелюсь спросить, а от литий-ионки можно сделать источник тока на 0,5A для одного белого светодиода на базе понижающего конвертера?   С Vref желательно от 0,3V или ниже.

    Вроде бы то, что нужно:  https://cxem.net/pitanie/5-300.php

    Работает на понижение и на повышение. Выскоий КПД.  И вытянет с лиий-ионки всё, что можно.

  10. Есть сверх-яркий светодиод мощностью 2 Вт, питающийся номинально от 3V.  Посоветуйте источник тока (желательно с высоким КПД) для такого светодиода.  Ток планируется использовать: 0.3 - 0.65A.

    Источник тока должен оправдывать своё назначение и не бояться бросков входного напряжения +/- 0.5V.    Входное напряжение питания - номинально 5V, на самом деле из-за просадок из-за других потребителей, могут быть мгновенные скачки до +/-0.5V. Частота скачков - 10 - 20 Гц.

    Замеры: при токе 0.5A падение напряжения на светодиоде 2,9V.

    Всякие LDO, греющиеся как утюги - не предлагать!

    Нужна именно специализированная микросхема или Buck-конвертер (понижающий)  НО с низким Uref, а то на токоустанавливающем резисторе тоже будет рассеиваться много тепла. Желателен Uref<0.3V.

    Возможность диммирование от ШИМ (PWM) обязательна!

    Есть ли такие микросхемы?

    P.S. Внимание!  Питается всего ОДИН светодиод на 3V номинально.  Использование более 1 светодиода - не нужно.

  11. В качестве первичного источника питания используется liIon аккумулятор 3,7V  3000 - 6000 mAh.

    Далее из аккумулятора делается напряжение 5V (максимальный ток нагрузки 2,1A - напряжение сохраняется до 4,96V) с помощью микросхемы-контроллера заряда-разряда аккумулятора CD42P MH343 (клон IP5306).

     

    Далее напряжением 5V  запитываются следующие узлы:

    1. Трансивер  RF4463F30 (потребление в режиме передачи 0,5-0,6A) - работает попеременно то на передачу, то на приём - скорость переключения 10 - 20 Гц.

    2. I2S усилитель мощности звука(класс D) MAX98357A (мощность 1-2 Вт)

    3. Плата с Allwinner T113-s3 (потребление до 1А)

    Далее на плате Allwinner есть свои  DC/DC Buck конвертеры - в том числе - и на 3,3V

     

    Далее напряжение 3,3V используется для запитки следующих блоков:

    1. Цифровые линии (VDDIO) интерфейсов SPI, TWI, I2S, DVP, GPIO, SD-карта

    2. Микрофон I2S

    3. Ключ на полевом транзисторе - для мощного светодиода до 2 Вт : регулировка яркости - ток 0... 0,5A - с помошью PWM, частота PWM от 1 МГц.

    4. Камера OV5640 - через LDO делаются следующие напряжения питания:  1,5V - ядро камеры(DVDD), 2.8V - для авто-фокуса камеры (мотор фокусировки линзы), 3,3V - линии DVP (VDDIO)

    5. LCD

     

    Это всё работает в макетном виде, блоки соединены проводами неоптимально.  Дисплей, камера, микрофон и наушники работают чисто - без видимой и слышимой грязи.

     

    Собственно вопросы:

    1. Насколько такой менеджмент питания корректен?

    2. Насколько допустимо питать подсветку мощного светодиода от выхода DC/DC 3,3V цифровых линий?

    3. Насколько критичны скачки потребления тока в цепи 5V выхода DC/DC из-за переключения трансивера с передачи на приём? Как это откликнется на потребителях питания 3,3V ?

    4. Есть ли смысл подсветку мощного светодиода запитать с 5V или Li-Ion через источник тока, облегчив работу DC/DC конвертеру на 3,3V? 

    5. Если запитать подсветку светодиода через источник тока на DC/DC конвертере, то 3V-светодиод горит даже при запрещённом выходе ШИМ, так как конвертер в неактивном режиме даёт Vout = Vin.   Есть ли другие конвертеры? Брать 6V-светодиод - не вариант, у него ступенька в регулировке яркости -  происходит скачок яркости при повышении % заполнения ШИМ.

  12. 19 minutes ago, mantech said:

    Так, на всякий, понижать рекомендую не ниже 3В, ибо у подавляющего большинства периферии указаны уровни, мин 2.8  норм 3  макс 3.3(3.5)В

    В данном проекте понижать уже не придётся, остаюсь на 3,3V IO.   Вопрос решился моим постом выше - для правильной работы портов камеры от 3,3V,  питание ядра камеры должно быть 1,5V - как это указано в даташите.

    image.png.ad3831a9b5a9acc0f59ea55f90093621.png

    P.S. Переношу потихоньку свой проект в релиз - на основе платы ASK100.  Вроде бы всё обошёл:

    1. Плохая разводка аналоговых цепей. Решение -  не использовать аналоговый аудиокодек, использовать устройства на I2S с разведёнными внутри аналоговыми цепями + стрессоустойчивость к просадкам питания и невосприимчивость к детектированию мощного ВЧ поля.

    2. IO порты на 3,3 V. Решение - изменить питания камеры.

    3. Отсутствие экранировки у ASK100. Решение - использовать чувствительные компоненты в экранах (трансивер RF4463F30, микрофон, усилитель).

     

    P.P.S .  Макет с проводами работает.   Два источника мощных помех, которые не влияют на работу устройства:

    1. Передатчик - потребление в режиме передачи от 0,5A. Мощность RF 1 Вт.  Учитывая Full-Duplex  переключения приём-передача с частотой 12-15 Гц

    2. Мощный светодиод подсветки для камеры в темноте - 2 Вт.  Ток до 0,65A.  Яркость управляется ШИМ.  Частота - выше 1 МГц.

    На акустику  влияния нет -  микрофон передаёт чисто,  в наушниках тоже всё чисто. Изображение с камеры тоже чистое - ряби нет во время передачи.

     

  13. 1 hour ago, repstosw said:

    Итак, вопрос остаётся открытым:  как подружить недо-плату ASK100-T113 с камерой OV5640 ?

     

    Вопрос успешно решён. Ответ дан в вышеупомянутой ссылке на схему шилда камеры от вейвшары:

    1 hour ago, repstosw said:

    Вэйвшара здесь питает IO VDD камеры на 3,3V и не парится: https://www.waveshare.com/w/upload/1/1e/OV5640-Camera-Board-Schematic.pd

     

    Нужно было повысить ещё и напряжение питания ядра камеры (DVDD) - сдуть LDO на 1,2V с платы MangoPi и поставить туда LDO на 1,5V (снял его с шилда камеры OV5647).

    Получилось вот так - на соплях, но завелось:

    1.thumb.jpg.c1586293e57bd99d0b3c1be947a43c98.jpg

     

    Работают обе камеры: OV5640 и OV5640AF.

     

    P.S. Я не знаю, зачем эти идиоты поставили LDO на 1,2V (MangoPi Dual) для ядра камеры, когда в даташите указано номинальное напряжение питания - 1,5V,  а не 1,2V.   В общем, китайцы не устают подкидывать неприятные сюрпризы...  Хорошо, что выход найден.

     

    Итого:

    Было:  VDDIO=2,8V, DVDD=1,2V

    Стало: VDDIO=3,3V, DVDD=1,5V

     

    1 hour ago, GenaSPB said:

    Это было про кнопки, которые вы собрались на GPIO сажать

    Теперь ясно.   С портами свободными (для кнопок) проблем нет.  Просто хотелось аппаратного изящества - повешать все 3/4 кнопки на 1 порт без лишних чипов )))

  14. 48 minutes ago, repstosw said:

    Надо будет  проверить на Mango Pi - перекинуть резистор:

    Проверил.  Увы, результат печальный - камера не работает:  мелькают серые полосы и всё.  Причём проверял на двух камерах: OV5640AF и OV5640.   Она хочет VDDIO 2,8V.   Питание портов 3,3V не катит.   Тем более что:

    image.png.2bb0155fdafc63ca255d71c02bbf0642.png

    В общем: бида, пичаль..... 🙁

     

    43 minutes ago, GenaSPB said:

    С минам подобного вида боремся изготовленикм своей платы...

    :biggrin:

    43 minutes ago, GenaSPB said:

    А внешний ацп постввить - mcp3208, mcp3204 не?

    Зачем? Речь о камере, которая работает через DVP с CSIC.

     

    29 minutes ago, mantech said:

    Как то видел индивидуума, что на сд карту 4В подал, и ничего, работает говорит, хотя по мне это уже экстремизм)))

    На одной модели карты работать будет, на другой - уже нет.

    29 minutes ago, mantech said:

    Вот на 1.8 для модемов уже пришлось делать конвертор

    У меня VS1033 (кодек такой от финской конторы VLSI OY) сгорела, когда вместо 1,8V VDDCORE по неосторожности подал 3,3V.  Это было давно...

     

    Итак, вопрос остаётся открытым:  как подружить недо-плату ASK100-T113 с камерой OV5640 ?

    1. Запитать VDDIO камеры 2,8V  и забить на согласование лог. уровней 2,8<=>3.3V.  Благо, что разрешение 320x240, пиксельклок и прочие сигналы там небольшие.

    2. Понизить VDD IO на самой плате 100ASK путём перепая резистора в DC/DC.  Тогда возможно другие устройства войдут в конфликт.

    3. Заменить камеру на другую, например на OV7725, которая может VDDIO 3.3V (но ждать придётся долго)

    4. Что-нибудь ещё?

  15. 21 minutes ago, repstosw said:

    Что лучше:  запитать IOVDD камеры 3,3V вместо 3V  или запитать IO VDD камеры на 3V  и работать с портами T113-s3 запитанными от 3,3V ?

    Насколько принципиальна рассогласовка логических уровней CMOS 3.3 и 3 V ?

    Вэйвшара здесь питает IO VDD камеры на 3,3V и не парится: https://www.waveshare.com/w/upload/1/1e/OV5640-Camera-Board-Schematic.pdf

    Тем более что:

    image.thumb.png.0de4aa0c8e5f9de783bca776ae787ba1.png

    Несмотря на:

    image.thumb.png.55f7d35d18eba5d0a811d00c75a88f3d.png

     

    Надо будет  проверить на Mango Pi - перекинуть резистор:

    image.png.e03c8c29f781840a3e9828f0a3a30d6c.png

  16. Модуль 100ASK_T113-Pro_Core : китайцами подложена одна неприятная мина - порт GPIO E питается напряжением 3,3V.   В то  время, как на mangoPi MQ Dual этот порт питается от LDO на 2,8V.   Потому что это нужно для DVP порта камеры OV5640.   Даташит  на камеру даёт IO VDD до 3 V, и как оно будет себя вести на 3,3V неизвестно.

    Что лучше:  запитать IOVDD камеры 3,3V вместо 3V  или запитать IO VDD камеры на 3V  и работать с портами T113-s3 запитанными от 3,3V ?

    Насколько принципиальна рассогласовка логических уровней CMOS 3.3 и 3 V ?

     

    P.S. Вторая мина от китайцев с этим модулем: не выведена ножка GPADC0 - а это значит, придётся несколько конопок вешать на разные GPIO, вместо одного.

  17. 1 hour ago, remontsofta said:

    Просто странно, что только в одном месте видел, что запускают 1920*1080 видео на этой плате. А так всё на каких-то 400*800 экранчиках...

    На V3s делал кодирование видео в H264 с камеры 1920x1080 30 FPS. Выше - камера не может, а так хоть до 60 FPS.

    А декодирование требует меньше ресурсов.

  18. 13 minutes ago, vervs said:

    В плате есть отверстие под микрофонным?

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

     

    1 hour ago, makc said:

    Как я уже написал выше, всё зависит от размера платы (количества меди). Если плата не крохотная, то лучше без подогрева этим не заниматься. Легко можно ужарить нежный MEMS.

    Размер платы  не превысит 8 x 8 см.  Четыре слоя, два внутренних слоя - сплошные плоскости - при нагреве они много тепла поглощают. Толщина 1,5 мм.  Фольга 0.18, материал FR4.

  19. 33 minutes ago, HardEgor said:

    Если вручную паять, то можно просто зубочисткой накидать пасту(просто пасту без всяких флюсов) на контакты платы более-менее равномерно и приложить микрофон(не вдавливать) к плате. Потом включить нагрев по термопрофилю (но нижний подогрев обязателен).

    Чем можно заменить нижний прогрев?  У меня нет его.   Если феном поддуть снизу, а потом сверху?  Плата в держателе, есть доступ снизу и сверху.

    И надо ли феном выравнивать поверхность залуженных дорожек на плате перед пайкой микрофона сверху?

  20. 48 minutes ago, makc said:

    Мы паяем так: лудим площадки на плате свинцовым припоем, чтобы получились небольшие бугорки припоя, наносим флюс-гель для пайки BGA в минимальном количестве на площадки, ставим микрофон и паяем феном на минимальной температуре (220-230) с нижним подогревом. Если плата совсем крохотная, то в принципе можно обойтись без нижнего подогрева, но лучше все же с ним - меньше придётся жарить микрофон. После пайки ни в коем случае ничем не мыть.

    Ну тоесть:

    1. залудили контакты на плате свинцовым припоем - до небольших бугорков

    2. нанести флюс гель на эти же площадки - для пайки BGA в совсем малом количестве

    3. установить микрофон - зафиксировать правильное положение

    4. продуть феном на 220-230 градусов

     

    У меня несколько вопросов:

    1. С контактами микрофона - точно ничего делать не надо?  Может их тоже следует залудить немного?

    2. Есть ли гаранития, если ответ в п.1 - нет, то контакт площадок с микрофона надежно схватится припоем с платы, особенно на 220 градусов?

     

    Помню, раньше паял аналогичное, но весь извёлся по нескольким причинам:

    1. Пайка была иногда ненадёжной - приходилось греть на бОльшей температуре

    2. микрофон повело при пайке - приходилось перепаивать

    3. мог затечь флюс в акустику.  Тогда как повезёт - иголкой вычищать или перепаивать новый микрофон

     

  21. Есть такой I2S-микрофон:

    image.png

    Собственно, вопрос - как его надёжно припаять на печатную плату?

    Из того что имеется в распоряжении: припой ПОС-61, паяльная паста, сплав Розе, твёрдая канифоль, жидкий паяльный флюс, этанол(мед. спирт), паяльная станция, паяльный фен с насадками.

     

    Из опасений:

    1) акустическое отверстие на стороне контактов - могут попасть отсатки флюса, спирта, канифоли...

    2) из-за соблюдения осторожности по пункту 1) - может быть неконтакт с платой из-за непропая.

     

    Итак, как методично в вышеописанных условиях надёжно припаять это?

     

  22. 35 minutes ago, GenaSPB said:

    Вообще-то в i2s размеп фрейма может быть больше чем используемре кроичкство бит. Попроьбкйте скормить усиоителю больше.

    Вообще-то я так и сделал.   Теперь  стоит задача подрезать буфер до 16 бит на семпл, чтобы сэкономить память, при этом сохранив семплы, оставив их 32 битными из-за микрофона.  Важно, не то, что я кормлю усилителю, а то, как это хранится в памяти: я хочу чтобы это были 16-битные семплы без лишнего старшего полу-слова с нулями.

    image.png.b1e334f37a56a6e4f7e7f2ba4632678c.png

    Увы, I2S не может делать разрядность семпла приёма и передачи разными - только одинаковые.

    Я хочу, чтобы семплы для усилителя брались с младших 16 бит TX_FIFO, а с микрофона записывались 32-битные семплы из RX_FIFO.

    Таким образом, иметь 16-битный буфер для усилителя и 32-битный буфер с микрофона.

     

    MAX98357A в действии.  Вместе с 2-ваттной мини-колонкой 8 Ом:

     

  23. Вопрос про DMA.

    Есть регистр TX_FIFO - он 32-битный, тип IO для DMA (адрес не инкрементируется).

    Есть буфер семплов в памяти - они 16-битные   s16 Buffer[N].

     

    Если сделать размер семпла I2S  16 бит,  то DMA-транзакции с 16-битным шагом приращения источника и приёмника работают правильно.

    Если сделать размер семпла I2S  32 бит,  то DMA-транзакции с 32-битным шагом приращения источника и приёмника работают правильно.

     

    Но если сделать размер семпла 32 бита,  а DMA-транзакции с 16-битным шагом приращения источника и приемника, то работает неправильно - я слышу голос с цифровым хрустом, потому что  в TX_FIFO попадает 2 записи с буфера - одна в его младшую часть, другая в старшую.   Проверяется это путём зануления всех четных байт в буфере  семплов.

     

    Собственно вопрос: можно ли сделать так, чтобы при копировании DMA, запись с буфера семплов шла только в младшую шасть регистра TX_FIFO, а старшая часть регистра игнорировалась?

    image.png.d50ef4a9fa222565f8ded59f1fc2c958.png

    Это нужно для того, чтобы сделать I2S семплы 32-битными(или 24-битными),  шина общая.  Микрофон поддерживает 24- и 32-битные семплы,   а усилитель - 16 битные семплы.

    Чтобы сэкономить память на усилитель (16-битные семплы), а память на микрофон была 32 битной (для поднятия усиления, младшие биты сдвинутся влево в старншие, без потери точности при усилении).

  24. On 3/23/2024 at 9:26 AM, GenaSPB said:

    прерывание на половине буфера и полное подсказывают, что речь о zero copy не идёт вообще.

    Zero copy было в самом начале. Действительно, не нужно ничего никуда копировать процессором , если DMA перебрасывает семплы с микрофона в буфер и сразу же с буфера в УНЧ.

    Но впоследствии понадобилось усиление (Digital Gain) + клиппинг ,  и пришлось делать это ручками в обработчике прерывания:

    #define SBS (32000/10)
    
    s16 IBuffer[SBS*2] __attribute__ ((aligned (64)));
    s16 OBuffer[SBS*2] __attribute__ ((aligned (64)));
    
    #define GAIN 4
    
    s32 DMA_IRQ_Handler(void *arg)
    {
    
    #if DMA_I2SI_CHANNEL < 8
                            
     u32 s=DMA_IRQ_PEND_REG0;
     DMA_IRQ_PEND_REG0=s;
                            
    #else
                            
     u32 s=DMA_IRQ_PEND_REG1;
     DMA_IRQ_PEND_REG1=s;
                            
    #endif
    
     s32 f;
    
     static u8 z=0;
    
     z|=s;
    
     if(z==0x11)f=0;
     else
     if(z==0x22)f=SBS;
     else       f=-1;
    
     if(f!=-1)
     {
      cache_inv_range((u32)&IBuffer[f],((u32)&IBuffer[f])+(SBS*sizeof(TYPE)));
    
      for(int i=0;i<sizeof(OBuffer)/sizeof(s16)/2;i++)OBuffer[f+i]=__SSAT(((s32)IBuffer[f+i])*GAIN,16);
    
      cache_flush_range((u32)&OBuffer[f],((u32)&OBuffer[f])+(SBS*sizeof(TYPE)));
    
      z=0;
     }
    
     UART_putc(s+'0');
    
     return 0;
    }

     

    On 3/23/2024 at 9:26 AM, GenaSPB said:

    Попробуйте double buffer в виде двух закольцованных друг на друга дескрипторов и прерывание по концу пакета. В отработавшем дескрипторе подменять адрес буфера.

    Такое тоже делал, работает.  Мне без разницы какой метод использовать - два дескриптора + full buffer прерывание,  или один дескриптор + два прерывания: half и full buffer.

     

    P.S. Вспомнил, в V3s когда буфер был в SRAM - работало только прерывание Full buffer. там и нужны были 2 дескриптора.    С DDR работали оба прерывания(half/full).  И здесь я уже об этом писал несколько лет назад в этой теме...

×
×
  • Создать...