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

Vaffanculo

Members
  • Постов

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

  • Посещение

Информация

  • Город
    Culo del Mondo

Электроника

  • Стаж в электронике
    Не связан с электроникой
  • Сфера радиоэлектроники
    микроконтроллеры
  • Оборудование
    cervello

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения Vaffanculo

Новичок

Новичок (1/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. Всем привет! Встала передо мной задача передать USB трафик по радио. Хочется сделать что-то типа USB-донгла, который вставляется в компьютер и общается с ответым устройством по радио. К ответному устройству своим родным кабелем должен подключаться существующий USB-девайс. Функционал USB-хаба не требуется, работа идет только с одним конечным устройством. Задача минимум - поддержать Low Speed режим. Вопросов много, начну с главного. Реально ли сделать все это не занимаясь разбором USB пакетов, а просто передавая их как есть? То есть МК в режиме девйса получает от хоста пакет, вырабатывает прерывание, обработчик которого забирает буфер и выдает команду радиомодулю на передачу содержимого буфера. Со стороны устройства все то же самое, только МК работает в режиме хоста. Ну и в обратном направлении подобным же образом. Выбор микроконтроллера. Он должен позволять работать с голыми пакетами напрямую, чтоб не было всяких фокусов с прибитыми гвоздями VID и PID. Насколько я понимаю, не каждый МК с поддержкой USB умеет работать в режиме хоста. Поскольку это нужно только на одном конце, получается, что микроконтроллеры могут быть разными для донгла и для девайса. Ну и цена вопроса имеет значения. STM32 внезапно подорожали в разы. Присматриваюсь к китайскому CH559 Подойдет ли для радиообмена NRF24L01? Он вроде бы не сильно много потребляет по сравнению с WiFi. Если нет, то что вместо него? По блютусу делать не хочу, там не получится сделать так, чтобы компьютер видел конечное устройство ровно так, как он его видит при подключении кабелем, то есть драйвера устройство не опознают. Или я не прав? Спасибо.
  2. Привет всем! Имеется МК ESP32, который будет управлять трёхканальным мультиплексором 74HC4053, где все каналы имеют по две линии. Из трёх каналов используется только два. Оба используемых канала должны переключаться синхронно. ESP32 может выбрать либо одну из двух линий мультиплексора (при помощи ESP32::IO34), либо вообще может его выключить, подав на ESP32::IO35 высокий уровень. Ещё есть внешние устройства, состояние которых определяет какие линии мультиплексора разрешено задействовать микроконтроллеру в настоящий момент. Это решается при помощи блока U3, который берет сигналы от внешних устройств, а также уровень с ESP32::IO34, и вычисляет можно ли включить ту линию, которую просит микроконтроллер. Если нет, то мультиплексор выключается путем подачи на его вход U2::E высокого уровня. По сути U3 реализует логическое выражение от трех параметров. Далее. То, хочет ли микроконтроллер задействовать мультиплексор (ESP32::IO35), и то, разрешено ли ему это сделать (U3::PIN_5), соединяется через ИЛИ и попадает на вход U2::E мультиплексора. Идея в том, чтобы аппаратно не дать ESP32 полезть туда, куда сейчас нельзя. Теперь о проблеме. Микроконтроллеру нужно будет знать, можно ли ему лезть туда, куда он хочет, или нет. Для этого я хочу использовать ножку ESP32::IO35 поочередно на вход и на выход. Когда она настроена на выход, то все должно быть так, как описано выше. А когда она настроена на вход, то 1. Микроконтроллер читает то, что у него на ESP32::IO35, и получает значение U3::PIN_5. То есть сумеет узнать можно ему работать или нет. 2. Уровень на U2::E равен уровню U3::PIN_5. Это чтобы мультиплексор не включился когда это запрещено. Как такое сделать не задействуя другие выводы ESP32? Спасибо.
  3. Друзья, спасибо всем вам за участие, за советы и за критику. В процессе обсуждения я переосмыслил задачу, и теперь сформулирую новые вопросы в отдельной ветке.
  4. @Armenn Из этих сдвоенных диодов, которые можно в наших краях найти, что лучше подойдет для замены D1 и D2? Учитывая, что питание 3,3 В. BAT54S.215 BAT54SW.115 BAR43SFILM BAS40-04-DIO BAS70-04 BAS70-04W.115 BAT30SWFILM BAT54XY.115
  5. @Armenn Извините, что не прокомментировал сразу, но я пока не разобрался как он работает.
  6. @Yurkin2015 Пытаюсь разобраться как ваша схема работает, но пока не особо успешно. Симулятор подтверждает правильность частично. Установка Е=1 работает как описано. А вот для сброса Е=0, если верить симулятору, нужно после перевода ноги в выход чтобы на ней был ноль. Если там единица, то Е остаётся единицей пока на входе не появится ноль. То есть переход 0-1 не требуется. Записал небольшое кино про это. Номинал конденсатора в нанофарадах? И вот чего я совсем не понял, так это как работает обратная связь через R2. simulation.wmv
  7. То есть достаточно поставить перед S0 и S1 триггер Шмитта и проблема решится?
  8. Собрал пока в симуляторе. Вроде бы работает. Но есть два момента. Во-первых, смущает выходная часть, я не уверен что можно вот так просто соединить выходы компараторов. Во-вторых, при таком подходе на входы S0 и S1 мультиплексора будет подаваться промежуточное напряжение в 1,65 В. Вроде бы документация и утверждает, что при высоком уровне на входе ENABLE от уровней на S0 и S1 ничего не зависит, но все равно мне это не кажется хорошей идеей. Или всё же можно?
  9. Чтобы вопрос был понятней, вот чего нужно добиться. ESP32 GPIO | Мультиплексор SELECT | Мультиплексор ENABLE | ------------------+----------------------+----------------------| на выход, высокий | высокий | низкий | на выход, низкий | низкий | низкий | на вход | не важно | высокий | ------------------+----------------------+----------------------|
  10. Спасибо, конечно, но как это отвечает на исходный вопрос?
  11. Привет всем! Имеется мультиплексор 74HC4053 на три канала один к двум. Один канал не используется. Переключение остальных двух каналов должно происходить одновременно. Для управления этим мультиплексором есть ровно одна ножка микроконтроллера (ESP32). Теперь нужно сделать так, чтобы МК мог отключить мультиплексор, подав ему на вход E высокий уровень. Добиться этого я надеялся путем переключения соответствующего GPIO в режим input, чтобы не тратить вторую ножку МК. То есть нужно придумать как превратить 0 или 1 в режиме "на выход" в низкий уровень, а режим "на вход" в высокий уровень. Как это сделать? Спасибо.
×
×
  • Создать...