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

    

deni

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о deni

  • Звание
    Участник

Контакты

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

Информация

  • Город
    Москва
  1. Изменить стек слоев. Сделать ближе опорный слой от которого считаете диф. пару.
  2. STM32F407 и USB с BULK

    Для Bulk лучше использовать класс WinUSB. Тогда можно использовать драйвер winusb в Windows и linusb в Linux, и работать уже из пользовательского режима.
  3. Вопросы начинающих 2017 г.

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

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

    ЦитатаКак это можно сделать? С уважением, Ефанов Сергей А в чем проблема вызвать из другой задачи netconn_write? Функции netconn сделаны для работы в многозадачной среде.
  10. 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 реализованы сокеты, там аналогично сделано.
  11. stm32f407 проблемы с usb

    Если программа терминал не закрыла порт после отключения устройства, то при новом подключении порт будет занят и драйвер не сможет его использовать. Это характерно для драйвера usbser.sys в Windows, причем порт в диспетчере устройств будет отображаться как исправный.
  12. Применяли ТИМ242 на скоростях от 1200 до 64000 Если ваша аппаратура будет работать с ЗАС, то есть требование по ограничению спектра сигнала (7 страница ГОСТ), которое нужно выполнять.
  13. Цитата(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.
  14. класс 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 для этого интерфейса, откуда и можно узнать номер порта
  15. Проблема в драйвере usbser.sys, он не регистрирует отправку событий PnP. Можно обкостылить добавив в .inf файл драйвер фильтр serenum.sys. Но возникнут другие проблемы: потеряется цифровая подпись от ST и этот драйвер предназначен для обнаружения PnP устройств на COM порту. При добавлении serenum.sys, Windows при некоторых последовательностей байт может находить мышки, трекболы и.т.д. Проблема в usbser.sys решена в Windows 10, там уведомления о подключении и отключении присылаются. Переходники от FTDI и Prolific используют свои драйверы, за место usbser.sys. Они даже не USBCDC класс. При использовании serenum.sys уведомления будут приходить только при регистрации класса GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR. Номер COM порта можно узнать из реестра, открыв ключ реестра с помощью SetupDiOpenDevRegKey.