16.02.2021, 11:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 7,755
Сказал спасибо: 2,666
Сказали Спасибо 2,629 раз(а) в 1,944 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от worldmasters
|
куча проводов особенно для спи
|
Хм, 4-5 проводов - это куча... Даже если дифпроводами для какого-нибудь скоростного варианта SPI - ну, добавится еще несколько земляных проводов.
Сообщение от worldmasters
|
Скиньте что нибудь относительно полезное и недорогое
|
Были тут темы с обсуждением выбора цифрового ослика. Свой я порекомендовать не могу - очень он уже старый, кое-чего полезного отсутствует, да и обошелся он тогда дорого по сегодняшним меркам. Сейчас жалею, что не взял тогда 4- канальный Тектроникс или LeCroy - платила за мой осцилл другая фирма, зря пожалел их деньги
|
|
|
|
16.02.2021, 13:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,671
Сказал спасибо: 130
Сказали Спасибо 1,074 раз(а) в 517 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Цитата:
|
но там как то все громоздко получилось. куча проводов особенно для спи
|
SPI - это 2-3 провода не считая земли.
И вообще - логический анализатор очень хорошее средство отладки и отлова своих косяков.
Написал, зашил в чип - не работает. И через ЛА можно глянуть:
1) скорость, протокол, стартовые/стоповые биты.
2) Что вообще передается. Осмысленные данные или мусор.
3) Что получаем в ответ и что видим в программе.
Ибо ситуация типа "обмена нет" может иметь огромную кучу причин, и понять ситуацию бывает очень сложно.
|
|
|
Сказали "Спасибо" DanilinSA
|
|
|
16.02.2021, 18:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,484
Сказал спасибо: 401
Сказали Спасибо 2,215 раз(а) в 1,313 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от worldmasters
|
Да и для большинства задач прикладного уровня это излишне.
|
Ну вот. А был бы даже недорогой лог.анализатор, вы бы увидели вот такую картину (вложение) - периодически возникающий NAK, и стали бы задумываться - а чой то так?
Вот реально, почему так? Почему при запросах от хоста с частотой 500 Гц часть запросов остаются без ответов. Аааа воооот! Давайте разберемся, как работает USB в микроконтроллере. В двух словах скажу, что когда нет новых данных для передачи, а запрос от хоста пришел, конечная точка выставляет NAK (not ack). Хост понимает это как "ну нету данных сейчас" и повторит запрос в следующем интервале. Отсюда у вас и получаются непонятные цифры частоты обновлений, вроде ставите одно число, а получаете другое.
Ну и как думаете, почему так происходит? А помните, я же ранее писал - у вас частота опроса акселерометра может быть ниже, чем частота запросов хоста. Ну вот и получили. Причем, у вас она не в кратное число раз ниже, а "примерно".
Акселерометр крайне желательно опрашивать именно по событию евоного прерывания INT, чтобы получать именно свежие данные, а не дважды одно и то же. Почему? Да потому, что для последующей фильтрации нужны бы свежие данные, а не дважды одно и то же. Без фильтрации показания акселерометра вообще ерунда.
Ну и вот докучи еще вам картинка: интервалы запросов от хоста = 2 мс (каждый второй кадр), а интервалы опроса акселерометра и записи в конечную точку = 6 мс. На картинке как раз это и видим (см.счетчик кадров). Два запроса от хоста остаются без ответа.
Таким образом, частота опроса от хоста никак не увеличивает частоту поступления данных, данные в хост поступают с частотой загрузки их в конечную точку.
И вы там как-то спрашивали, типа какая там разница - HID или CDC? Так вот в том и разница. Что HID использует Interrupt-передачи и частота их определена строго рамками фрейма. В фрейме не может быть более одной передачи. А CDC напротив, используя Bulk-передачи (массовые), в каждом фрейме может передавать несколько пакетов с той частотой, с которой запрашивает хост. Таким образом, можно передавать неограниченное число байт с желаемой скоростью, лишь бы это помещалось в полосу пропускания.
Последний раз редактировалось NewWriter; 16.02.2021 в 23:02.
|
|
|
Эти 3 пользователя(ей) сказали Спасибо NewWriter за это сообщение:
|
|
|
17.02.2021, 10:17
|
|
Гражданин KAZUS.RU
Регистрация: 21.02.2007
Сообщений: 551
Сказал спасибо: 37
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от NewWriter
|
А был бы даже недорогой лог.анализатор
|
Да есть анализатор, но видимо слишком недорогой чтобы анализировать USB. Да и зачем??
Сообщение от NewWriter
|
Почему при запросах от хоста с частотой 500 Гц часть запросов остаются без ответов.
|
ну и пусть. Кому от этого жить стало хуже??
Сообщение от NewWriter
|
Акселерометр крайне желательно опрашивать именно по событию евоного прерывания INT
|
Аксель настроен на выборку с частотой 208 Hz. После успешной выборки он выставляет флаг об этом.
Программа этот флаг считывает и только если есть считывает заданное количество байт из FIFO.
Сообщение от NewWriter
|
Таким образом, частота опроса от хоста никак не увеличивает частоту поступления данных, данные в хост поступают с частотой загрузки их в конечную точку.
|
Но тем не менее если менять интервал опроса в дескрипторе то это напрямую отражается на кадрах/сек.
Сообщение от NewWriter
|
И вы там как-то спрашивали, типа какая там разница - HID или CDC?
|
Это был риторический вопрос. Моя задача не требует каких то особых извратов с USB. Повторюсь что необходимое и достаточное условие это поступление кадров на компьютер с частотой не менее 200 кадров. И второе это пользовательская работа. И второе это снижение трудозатраты целевого пользователя на установку или решение каких либо проблем. По сути все должно быть в стиле Plug&Play без всяких драйверов, утилит и прочего барахла.
Есть одна конкретная задача предоставить данные с устройства на комп 200 раз в сек. Зачем уходить от ее решения и филосовствовать на тему работы USB? В условиях современной экономики никому не нужно идеализированное решение. Необходимо решение которое будет выполнять поставленные задачи с наименьшими трудозатратами. Софт имеет свойство изменятся под нужны пользователя. Пользователи порой сами толком не понимают что им нужно и склонны часто менять постановку задачи. Поэтому тратить миллион человеко/часов на вылизывание кода на уровне сигналов просто экономически не выгодно. За это время целевой пользователь может остыть и задача может оказаться неактуальной.
А так конечно красиво расписали. Профи, тут не поспоришь.
|
|
|
|
17.02.2021, 11:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 7,755
Сказал спасибо: 2,666
Сказали Спасибо 2,629 раз(а) в 1,944 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от worldmasters
|
Аксель настроен на выборку с частотой 208 Hz.
...
конкретная задача предоставить данные с устройства на комп 200 раз в сек. ...В условиях современной экономики
|
Нажмите, чтобы открыть спойлер
Ну да, и будут пропадать ежесекундно 8 выборок! А это - 4%. 4%, Карл! Как-то не очень экономично...
|
|
|
|
18.02.2021, 09:30
|
|
Гражданин KAZUS.RU
Регистрация: 21.02.2007
Сообщений: 551
Сказал спасибо: 37
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от Yuri222
|
Нажмите, чтобы открыть спойлер
Ну да, и будут пропадать ежесекундно 8 выборок! А это - 4%. 4%, Карл! Как-то не очень экономично...
|
На конечную цель эти потери не повлияют вообще никак. Даже не могу представить себе задачи где бы потеря этих 4% как то масштабно могла бы повлиять на ситуацию.
|
|
|
|
18.02.2021, 09:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.02.2013
Сообщений: 1,013
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от worldmasters
|
ну и пусть. Кому от этого жить стало хуже??
|
Ну например Хосту (то есть компьютеру). Если пофантазировать, то можно предположить, что когда device (stm32) не готов отправлять данные по запросу на хост, он должет отвечать NAC. Предположим что STM32 этого не далеет.
Тогда предположим что драйвер USB ингорирует эту тему на Win7 а на Win10 у него включается ожидание хоть какого то ответа от STM32 по таймауту (надо почитать доки по USB про это). Поэтому вместо 200 запросов хост успевает сделать только 60 (остальное время он ожидает получить хоть чего нить от STM32).
Логический анализатор очень сильно бы помог.
Здесь сложились 2 вещи - кривенький USB на STM32 и особенности работы драйвера на Win10.
|
|
|
|
18.02.2021, 10:00
|
|
Гражданин KAZUS.RU
Регистрация: 21.02.2007
Сообщений: 551
Сказал спасибо: 37
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от dgrishin
|
Здесь сложились 2 вещи - кривенький USB на STM32 и особенности работы драйвера на Win10.
|
С новым дескриптором то как то все нормально встало. Хотя интервал то не изменился опроса.
|
|
|
|
18.02.2021, 17:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,484
Сказал спасибо: 401
Сказали Спасибо 2,215 раз(а) в 1,313 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Нууу ээээ... Хотите - читайте материалы по формату дескриптора репортов (отчетов) HID. Не хотите - подбирайте методом тыка. Время, затраченное на метод тыка, равно времени на изучение спецификации.
В HID-е, при исправности всего остального, вся гадость заключается именно в дескрипторе репортов. Потому что именно он определяет назначение пришедшей информации.
|
|
|
|
19.02.2021, 09:49
|
|
Гражданин KAZUS.RU
Регистрация: 21.02.2007
Сообщений: 551
Сказал спасибо: 37
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
|
Re: STM32_HID Windows 10 Low Speed
Сообщение от NewWriter
|
Нууу ээээ... Хотите - читайте материалы по формату дескриптора репортов (отчетов) HID.
|
Ну нормально же общались, че началось то?
Читаю я мануалы в силу своих возможностей, но весь этот USB инопрешленцами сделан. Про дескрипторы читал, пытался даже сам что то написать, но стандартная логика там видимо не работает. В итоге то что я писал дает стабильно ошибку 10 на компе.
Если уж прям совсем бы было все плохо то всегда есть вариант CDC да и то. С хидом проблем не было пока 10 не появилась с каким то своим новым драйвером.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:00.
|
|