Александр Козлов @alcotel
Инженер-электронщик
Информация
- В рейтинге
- 2 211-й
- Откуда
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Embedded Software Engineer, Разработчик электроники
Lead
От 280 000 ₽
Electronics Development
Development of printed circuit board
FPGA
Programming microcontrollers
Sound processing
То, что предлагается для STM32 из коробки задарма - это просто обёртки для того же вкладывания числа в регистр. Кроме изучения библиотек всё равно приходится также читать доку на чип. Не пользователь Вы. Большинство вещей из так называемого "хардваре абстракшын" нихрена не "абстракшын", и часто даже не получается перенести код между разными семействами STM32F0, F1, F4.
В общем, если хотите не задумываясь сделать типа
echo "42" > /dev/i2s1
это другой уровень программной поддержки, мегабайты стороннего кода и вряд-ли бесплатно. Но говорят, тоже бывает. Слышал, даже на Python как-то люди для мк пишут.
Вы взяли аудио-ЦАП. Они гарантированно хорошо воспроизводят звуковые частоты 20Гц-20кГц, но имеют ряд недостатков для других применений. Собственно, за счёт недостатков и получается сделать 16- или более -битный ЦАП таким дешёвым.
Аудио-ЦАП имеет право вообще не пропускать постоянную составляющую сигнала на выход. В звуковом тракте это не нужно, и бывает даже вредно. Но это в описании на конкретный чип надо смотреть. Некоторые DC-составляющую пропускают, некоторые - нет.
Точность выходного напряжения - никакая. У тех аудио-ЦАП и кодеков, с которыми я работал, по описанию повторяемость +-10% даже между двумя стерео-каналами. Для аудио-применений этого достаточно, но для других - не всегда. Тоже можете в описании к вашему чипу проверить.
Это сигма-дельта-ЦАП. Внутренняя структура у него очень простая, напоминает ШИМ. И линейность очень хорошая для аудио. Но чтобы он вообще работал, ему нужна тактовая частота. Причём желательно достаточно чистая, иначе фокуса не получится. И синхронная с данными, а не абы-какая. Потому что на этой частоте работает антиалайзинговый фильтр.
В выбранной Вами СТМке, как я понял, и так есть 2 встроенных ЦАП. Если не нужна большая скорость регулировки напряжения - во всех мк есть ШИМ. Аудио-ЦАП - штука, оптимизированная для конкретной задачи, и натягивание её на другие задачи требует внимательного прочтения описания.
Прошивка осцилла тоже обновляется, косяки исправляются. Там в основе обычный ARM с линуксом, обновляется с флешки. Но на конкретно эту модель производитель забил, и российский представитель мне тоже ничем не помог. Пришлось поискать тот, для которого на 4pda много прошивок выложено.
Закрутить шкалу, естественно, самому можно. Но так-то и график самому нарисовать недолго.
Надеюсь, допилят. Пожелаю авторам удачи, но пока пожалуй пройду мимо.
Существуют такие. Но большой популярности я не заметил. И комиссия у них конская. Проще крипту на карту вывести через интернет-обменник удалённо.
Hidden text
Вот помню ещё, был у меня осциллограф Hantek MSO5202D. У него в принципе довольно глюкавая прошивка была, но безумные китайские программисты сделали переключение шкалы времени с множителями 2, 4, 8, 20, 40, 80... мкс/деление. На 8 я жутко плевался, и от осцилла в итоге избавился.
Для десятичной системы счисления, логично, что удобна сетка с делителями числа 10 - в уме считать проще. В логарифмическом масштабе, бывает, удобно ещё число 3, т.к. примерно равно sqrt(10). Недесятичные данные (дата, время, угол) имеют свои нюансы.
Итого вариантов оказывается не так много, в 99,9% всё уже придумано. Если что-то нужно совсем хитрое, то пользователь уже сам настраивает.
В GNUPlot, например как-то же всё работает. А тут тем более не поделка программиста-самоучки, а
За то, что люди кодят не подумав, я, например, не готов платить.
Очень
уё..удобный и логичный авто-выбор шкалы. Моск из глаз совсем не вытекает, и нет желания отрывать руки за такое.Не только у Вас такое видел, кстати. Labview, например, таким же автоскейлом страдает. Видимо, в мире, где космические корабли бороздят просторы, и нейросети пишут код, это какая-то безумно сложная задача - расставить на линейке удобные цифры.
sarcasm=off
Интересно, может это как-то связано с разборкой дисков по этому сценарию?)
https://habr.com/ru/news/807611/
Интересный штук. Для негромкой озвучки рабочего места прям в самый раз.
Кстати, раз уж за USB взялись, можно же не передавать аналоговый сигнал по отдельному проводу, а USBшный аудио-кодек тоже в шкатулку положить. С али что нибудь, или начинка от дохлых USB-наушников.
Дешманские USB-наушники за 100₽ ведь г-но не потому, что кодек такой. А потому, что механика и акустика там упрощённые - резонансы, адская нелинейность, надёжность. Вполне честные 16-битные кодеки китайцы-то давно научились делать нормально.
-- Чем занята?
-- Смотрю, как
деревья растутлампы в усилке нарабатывают на отказ.-- Всё суетишься? (c)
Сразу после выключения все токи через транзистор сохраняются. Поэтому он остаётся таким же открытым и ненасыщенным, пока ток катушки не рассосётся.
Почти весь ток катушки в этой схеме отправится также через эмиттер в коллектор. Главное, чтобы транзистор проглотил пиковую мощность - на нём теперь будет падать не 0,6 В, а 5+0,6+0,6. Но не долго.
А через базу в защитный диод мк пойдёт ток, уменьшенный на его коэфф. усиления. Если катушка реле запасла ток 70 мА, то в мк пойдёт всего 0,5 мА. Я думаю, вполне допустимо.
Моветон - такой себе аргумент. Что не запрещено даташитом, принципами самой КМОП-технологии, или хотя-бы удобством переносимости - то разрешено.
Тут не законодательство РФ работает, а законы физики. Которые за взятку нарушать не получается. Извиняюсь - лирическое отступление было)
Пускать небольшой ток через защитные диоды, если они есть - вполне штатный режим работы для КМОП. Исключения в КМОПе - аналоговые мультиплексоры типа 74HC4051..53, или входы АЦП мк. Сгорать не сгорают, но начинается джопа с соседними аналоговыми сигналами - открываются паразитные BJT, и все аналоговые сигналы соединяются. Это на пальцах, но подробности пока сам не расковыривал.
Кстати, мк тут без АЦП. Для полноценной имитации стиралки не хватает подогрева воды и единственного и неповторимого аналогового NTC-термодатчика в 10 кОм)
Мне одному кажется, что в этот раз китайцы перебдели? Обычно наоборот, не доливают)
R38 и R40 лишние, т.к. эта подтяжка уже есть в самом мк. А даже если подтяжки и нет, всё равно ток базы почти нулевой будет. И если транзистор его усилит в 200 раз, реле не сработают. Если транзисторы стоят рядом с мк, особой чувствительности к помехам не ожидается.
R39 и R41 тоже не нужны, т.к. ток базы в схеме с ОК и так будет ровно таким, как надо. А именно = ток реле / коэфф. усиления транзистора.
И диоды D5 и D6 в схеме с ОК вообще-то тоже лишние. Когда реле выключаются, на базах что-то в районе VCC. Запасённый в катушке ток откроет транзисторы, и они сами ограничат выброс напряжения.
Эх, вот в наше время...)
Думаете, 48 лет назад люди не делали проходное у.г., как сейчас? Делали, просто оно сломалось и забылось.
Думаете, что из современных разработок вообще ничего не проживёт 48 лет? А откуда вы знаете? Вон даже сама Intel не особо верила в успех однокристальных микропроцессоров. А как всё в итоге повернулось)
"Ошибка выжившего" - это называется.
Да, как раз через те самые LFSR. Схема скремблер-дескремблер. Если на вход скремблера подать "1", то при отсутствии ошибок на выходе дескремблера тоже будет "1".
"Полином", который задаёт схему скремблирования - это просто побитовое представление мест в LFSR, где установлен XOR. Поэтому модуль со своим полиномом генерится автоматически в коде, без использования сторонних программ.
Оставалось только сделать список "хороших" полиномов. И в электронной таблице сгенерить текстовый файл распиновки. Это всё автоматизируется.
Под видео должна быть надпись: "Инженерам - не смотреть. Может задеть за живое, внезапные вреды, остерегайтесь детей")
Студенческий деСтрой-отряд, мля)
На самом деле идея очень крута. Компилируется это всё за секунды, и не нужно специализированное оборудование за $∞ для тестов. Спасибо, буду пользовать.
У меня один раз была похожая задачка - собрать тест для многопроводного кабеля между двумя платами с ПЛИС. Я тогда нагенерил PRBS и тестеров к ним. Про UART не догадался, хотя в загашнике уже имелось всё необходимое.
Я больше вот про что:
Ну как-бы изначально цель работы-то была - выяснить распиновку. А с текущим кодом выходит, что группы из 2-4 ног выдают наружу одинаковые паттерны. Цель-то в итоге достигнута?
Других значений в uart_data не записывается. Сброса нет, начального значения сигнала uart_data хотя-бы для симулятора - тоже нет. И компилятор такой думает: "А нахера он это сделал? Что он имел в виду? А он ещё и варнинги игнорирует? Тогда пох, сделаю сигнал константой, имею право!".
Нет там регистра, короче. Был бы - появился бы в списке занятых ресурсов в Total registers. А сейчас там чётко:
256 шт. cycled_uart_transmitter.Tx +
8 шт. clk_div_250.count +
4 шт. cycled_uart_transmitter.i +
1 шт. clk_div_250.clk_out = 269
Баланс сошёлся прямо по-бухгалтерски)
А откуда уверенность, что именно осцилл принял правильно, а не терминал?)
Осцилл и UART-приёмник просто не понимают, где именно старт- и стоп- биты, поэтому ставят их рандомно. Тот же паттерн 0.01010101.1 любой приёмник имеет право принять с циклическим сдвигом:
001010101100101010110010101011 или
001010101100101010110010101011 или
001010101100101010110010101011 или
001010101100101010110010101011, и это всё разные цифры. Короче:
Давайте делать паузы в словах... (с)
И не надо мутить воду:
То, что в коде записано, это селектором называется. Или мультиплексором.
Полноценны UARTовский регистр сдвига в этой задаче занял бы намного больше ресурсов ПЛИС. А так выходит, что каждому паттерну достаточно храниться в одной LUT. Метод весьма хорош.
Я пользуюсь этими:
https://aliexpress.ru/item/1005004971890033.html
https://www.avito.ru/moskva/zapchasti_i_aksessuary/can_usb_interfeys_analog_can_hacker_cantact_2236305908
Первый - с гальванической изоляцией. Оба в линуксе из-коробки определяются, как сетевые интерфейсы. С python-can и can-utils дружат, но надо ставить версии после 2022 года.
На приём работают отлично. А вот на передачу, если в сети никого живого нет, появляется нюанс.
Ещё вот такой взял, с другим логическим интерфейсом:
https://aliexpress.ru/item/1005002828512259.html
но пока руки не дошли испробовать.
А можно узнать, что это, и где купить?
В живых устройствах встречал только ферриты. Но в статьях разработчиков ленточные тоже видел в ККМ. Там частоты, вроде, пониже, чем в DCDC, но ток подмагничивания большой.