Jump to content

    

deni

Участник
  • Content Count

    37
  • Joined

  • Last visited

Community Reputation

0 Обычный

About deni

  • Rank
    Участник

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Москва

Recent Profile Visitors

1480 profile views
  1. USB OTG

    1. Устройство не должно потреблять больше 100мА пока хост его не сконфигурирует. Для USB 2.0 не больше 500 мА. Сколько устройство потребляет указать в конфигурационном дескрипторе. 2. Какой нибудь из USB HID class, выбрать из тех про который знает ОС на смартфоне.
  2. Изменить стек слоев. Сделать ближе опорный слой от которого считаете диф. пару.
  3. STM32F407 и USB с BULK

    Для Bulk лучше использовать класс WinUSB. Тогда можно использовать драйвер winusb в Windows и linusb в Linux, и работать уже из пользовательского режима.
  4. Цитата(Димон Безпарольный @ Jan 10 2018, 17:59) Как разделить слой пасты на 4 части? Такое вообще возможно? Заказчик просит разделить слой пасты на 4 части оставив сам PAD нетронутым. Насколько понимаю заказчику необходимо, чтоб в трафарете для паяльной пасты большие отверстия (как центральный пад корпуса QFN) были разделены на несколько меньших. Штатного инструмента для этого кажется нет, здесь придется или править компонент в либе или использовать скрипт. Когда-то такой делал, если надо могу поискать. Скриптом можно сразу в PCB редакторе разбить без правки библиотеки.
  5. Цитата(-=TRO=- @ Dec 14 2017, 00:09) jcxz, в принципе я был готов, что под задачу понадобится более мощный МК, но первую урезанную по характеристикам тренировочную версию буду ваять на том что есть. К тому же, попытки впихнуть не впиховываемое, в рамках конкретной задачи, сильно мотивирует к углубленному изучению, что для начинающего самое оно. Я думаю не стоит впихивать невпихумое, как правильно здесь написали надо брать что-то другое. В F1 у DMA нет FIFO, и длинные инструкции типа входа в прерывание будут давать слишком большой джиттер. Если хочется именно STM32, на F4 можно попробовать, поместив буфер в отдельный блок ОЗУ.
  6. Здесь можно почитать подробней про DMA в STM32 - AN2548 Using the STM32F101xx and STM32F103xx DMA controller По приоритетам обслуживания CPU и DMA в STM32 одинаковые, и если не будет 100% загрузки шины, то запросы будут выполняться довольно точно.
  7. Цитата(jcxz @ Dec 13 2017, 21:05) Можно взять другой МК, имеющий внешнюю 16-разрядную шину и выдавать на неё при помощи DMA требуемый поток. А если в этом МК ещё и стоит хороший контроллер DMA, умеющий передачи "свЯзным списком", то его вообще можно запрограммировать так, чтобы он брал скажем два первых 16-битных слова с фиксированного адреса, а третье слово - из вашего кольцевого буфера. И чем выдача на шину выигрышние выдачи в порт GPIO через DMA? Цитата(jcxz @ Dec 13 2017, 21:05) Автор не озвучил частоту выдачи. Он озвучил цену за плату в 2$. И этот светодиод где-то и работает до мегагерца максимум.
  8. Да и с 3 каналами DMA нормальное решение от одного таймера, первый настроить только на выдачу 1, второй по буферу, третий - 0. В STM32 таймер не может управлять целым портом.
  9. Lwip: netconn TCP app

    Можно пройти отладчиком во внутрь функции и посмотреть где возникает ошибка и возвращается ERR_VAL.
  10. Lwip: netconn TCP app

    ЦитатаКак это можно сделать? С уважением, Ефанов Сергей А в чем проблема вызвать из другой задачи netconn_write? Функции netconn сделаны для работы в многозадачной среде.
  11. Lwip: netconn TCP app

    Можно включить в LWIP таймауты, тогда из функции netconn_recv будет выходить через указанное время, даже если ничего не принято. #define LWIP_SO_RCVTIMEO 1 // accept, receive #define LWIP_SO_SNDTIMEO 1 // send Если надо прервать ожидание netconn_recv из другой задачи, во FreeRTOS можно включить опцию #define INCLUDE_xTaskAbortDelay 1 и вызовом xTaskAbortDelay(hTask) разблокировать задачу. И насколько помню в lwip/port/sys_arch.c ожидание из очереди без таймаута там зачем-то обернуто в цикл, хотя документация на FreeRTOS говорить что вызов xQueueReceive с portMAX_DELAY бесконечный. Так что если не убрать цикл, задача опять заблокируется. И есть вариант вообще без надобности не блокировать задачу вызовом netconn_recv, для этого при создании соединение использовать netconn_new_with_proto_and_callback и назначить callback, в котором допустим взводить семафор. Сколько раз был вызван callback c NETCONN_EVT_RCVPLUS, столько раз и надо вызвать netconn_recv. Посмотрите как в LWIP реализованы сокеты, там аналогично сделано.
  12. stm32f407 проблемы с usb

    Если программа терминал не закрыла порт после отключения устройства, то при новом подключении порт будет занят и драйвер не сможет его использовать. Это характерно для драйвера usbser.sys в Windows, причем порт в диспетчере устройств будет отображаться как исправный.
  13. Применяли ТИМ242 на скоростях от 1200 до 64000 Если ваша аппаратура будет работать с ЗАС, то есть требование по ограничению спектра сигнала (7 страница ГОСТ), которое нужно выполнять.
  14. Цитата(prottoss @ Feb 10 2017, 20:16) Всем доброго времени суток. Я тоже сталкивался с проблемой, когда терминальная программа (для СОМ-портов), при внезапном отключении устройства теряла порт и при повторном подключении его не находила. Вот в этом и стоит вопрос, что программе терминалу нужно по большей части только читать из порта, а ReadFile не завершается с ошибкой, если устройство отключить. Программа просто продолжает читать из порта ноль байт. Не получается отследить момент когда устройство отсоединено. И если не успеть закрыть порт, до того как устройство вставили повторно, получим Error = 2 при вызове CreateFile. К ошибке приводит только запись с отличным от нуля количеством байт. Такое поведение характерно только для usbser.sys. Цитата(hd44780 @ Feb 11 2017, 21:47) И драйвера CDC тут ни при чём. У меня HID device, соответственно никаких ST-шных дров нет вообще, а симптомы те же. Отключаемый pull-up должен помочь. Правда руки до этого у меня ещё не дошли . На него винда всегда корректно реагирует. Как раз драйвер CDC очень даже причем. ST драйвера никогда не писала, их драйвер для CDC это только цифровая подпись для stmcdc.inf, чтоб с их VID PID установить usbser.sys который уже имеется в Windows. Для HID устанавливается функциональный драйвер по классу устройств, и для его привязки не важен VID PID.
  15. класс Ports для USB CDC ACM начал поддерживаться только с десятки, поэтому уведомления в десятке будут приходить. https://msdn.microsoft.com/en-us/library/wi...0(v=vs.85).aspx Communications and CDC Control (02h) Цитата(Mazay @ Feb 10 2017, 15:13) Видимо придется при получении событий об добавлении/удалении устройств перезапрашивать у Винды список портов. Причем замечена одна особенность с китайским переходником USB<->COM CH340. Если порт открыт в терминалке и выдернуть переходник, то сообщение об удалении Порта приходит. Но в реестре он остается в списке имеющихся портов и можно писать в него не получая ошибки. Удаляется он из списка портов только после того, как его закрыли. Поэтому по приходу событий DBT_DEVICEARRIVAL и DBT_DEVICEREMOVECOMPLETE просто перечитать реестр не помогает. Порт еще будет присутствовать. Надо или разбирать тип DBT_DEVTYP_PORT для извлечения Имени, или получать список портов функцией SetupDiEnumDeviceInfo(). Насколько помню до Windows 10 usbser.sys кроме DBT_DEVNODES_CHANGED в WM_DEVICECHANGE ничего больше не присылает. Если всё же приходят DBT_DEVICEARRIVAL и DBT_DEVICEREMOVECOMPLETE, то все порты перебирать не обязательно. Номер порта можно получить из реестра зная путь к интерфейсу. lParam указывает на DEV_BROADCAST_HDR, для интерфейса он будет типа DBT_DEVTYP_DEVICEINTERFACE DBT_DEVTYP_DEVICEINTERFACE->dbcc_name это путь к устройству SetupDiOpenDeviceInterface даст интерфейс SetupDiGetDeviceInterfaceDetail даст инфу по интерфейсу SetupDiOpenDevRegKey откроет ключ в HKLM\SYSTEM\ControlSet\Enum\USB для этого интерфейса, откуда и можно узнать номер порта