Шаманъ 1 30 марта, 2017 Опубликовано 30 марта, 2017 · Жалоба Интересно ли кому, что в итоге была за проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 30 марта, 2017 Опубликовано 30 марта, 2017 (изменено) · Жалоба У меня только одна мысль А что, в конце все оказалось не в кварце? Мне - интересно. ps: глянь на STM32F723 (STM32F723zetg6) - со встроенной HS физикой для USB HS Изменено 30 марта, 2017 пользователем Genadi Zawidowski Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 30 марта, 2017 Опубликовано 30 марта, 2017 (изменено) · Жалоба А что, в конце все оказалось не в кварце? Мне - интересно. Поменял я кварц на 12МГц (на 8 закончились), и ... ничего - по прежнему отваливается через 10..20сек. Ну думаю может что-то не то и с этим, поставил 24.576МГц - стало лучше, но всеравно - минут 5..10 и хост на старом компе (под WinXP) отказывается принимать данные. Начал рассматривать разводку платы (речь про модуль Core7XXI от Waveshare), ну это просто жесть - вся земля порезана, переходных отверстий мало, вдобавок они маленького диаметра (0.3 что-ли), а самое главное земля к которой подключаются конденсаторы опорного генератора делает такую большую загогулину в пол платы, прежде чем доберется до процессора. Сигнал сброса тоже блуждает по плате, пока не дойдет до кнопки, причем кондер стоит со стороны кнопки (правда с этой цепью проблем нет). Далее, по питанию стоит кучка керамики 0.1мкФ и один тантал аж в 1мкФ. Резистор ООС опорного генератора зачем-то 10МОм. Ну и ноги к которым подключен кварц вытянуты на разъем платы. Взял я ножик, паяльник и: 1. Заменил танталовый к-р 1.0мкФ на 10мкФ керамику. 2. Заменил резистор в ООС на 200кОм (как рекомендуют в датащите). 3. Добавил еще один 10мкФ керамический конденсатор по питанию в том месте где подключается питание USB у процессора. 4. Отрезал проводники от кварца на разъем платы. Это сделало работу немного стабильнее. Но самое сильное влияние оказали перемычки - соединил ими землю около кварца с землей около процессора и с другой стороны два разрезанных полигона земли. С этими перемычками проработало 5часов (думал уже вот оно), потом правда всеравно отвалилось, но похоже это и есть проблемное место. Да, чем выше частота кварца, тем стабильнее работа, что объяснимо - коэффициент умножения ФАПЧ меньше и всякой срани тоже меньше на выходе ФАПЧ в итоге. В общем причина в кривой разводке модуля. Кстати судя по плате следующие грабли ждут с АЦП, но там точность особая мне не нужна, метод лечения я уже продумал. Но в итоге думаю придется этот модуль переделать на свой, и наверное в 4х слоях - как всегда, хочешь сделать хорошо, сделай сам... Но для экспериментов и этот сойдет. Да, с внутренним генератором проработало сутки без проблем, т.е. с ним таких проблем нет совсем. ps: глянь на STM32F723 (STM32F723zetg6) - со встроенной HS физикой для USB HS О! USB2.0 это хорошо. Я так понимаю это проба, прежде чем это дело появится в high-end камнях. Изменено 30 марта, 2017 пользователем Шаманъ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 30 марта, 2017 Опубликовано 30 марта, 2017 · Жалоба Проконтролируй конденсаторы на внутреннем источнике процессора (те что 2.2 uF должны быть) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 30 марта, 2017 Опубликовано 30 марта, 2017 · Жалоба Да, и конденсаторы на кварце. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 30 марта, 2017 Опубликовано 30 марта, 2017 · Жалоба Проконтролируй конденсаторы на внутреннем источнике процессора (те что 2.2 uF должны быть) Это было первое, что я сделал - показывали по 2.5мкФ. Да и если бы здесь была проблема, то наверное сбоила бы программа на МК, а она не сбоит - просто проходят ошибки после чего хост перестает опрашивать девайс. На кварце не мерял, но с нормальной платой соединение двух полигонов земли проводом влиять на поведение программы не должно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 31 марта, 2017 Опубликовано 31 марта, 2017 · Жалоба Ну и так сказать happy end истории. Решил вчера поглядеть, а что же делается на выходе PLL. Прямого выхода понятно у меня нет, но PCLK на TFT идет с одной из двух PLL. Подключил частотомер, смотрю: 1. Без перемычек частота скачет около +-1кГц (усреднение за 1сек) 2. С перемычками частота скачет в пределах +-10Гц (усреднение за 1сек) Тут я провел эксперимент - отключил TFT, частота стоит как влитая, подключил - опять скачет. И вспомнилась мне неприметная фраза из раздела 7.1 мануала про I/O compensation cell и power supply noise reduction. Активировал эту фичу и, о чудо, PLL стала стабильно работать вне зависимости от нагрузки на I/O линии. USB тоже на старой машине теперь не отваливается (по крайней мере восемь часов сегодня и пять вчера отработало все без сбоев). Короче мораль истории, если у Вас задействовано много I/O линий, которые переключаются с достаточно высокой частотой, включайте I/O compensation cell. На этом похоже моя история с USB заканчивается, да модуль (два СОМ порта и дуплексная аудиокарта) получился 4.7кБ во флеше (из них примерно 0.5кБ дескрипторы) и 124байта ОЗУ. Можно было еще чуть флеша сэкономить, но я в угоду удобству программирования и красоте кода сделал обработку запросов через "карты обработчиков" и макросы, что немного раздуло код (думаю где-то на 300..500байт). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 31 марта, 2017 Опубликовано 31 марта, 2017 · Жалоба Спасибо! буду обращать внимание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Booger 0 23 августа, 2019 Опубликовано 23 августа, 2019 · Жалоба Добрый день! Помогите разобраться с такой вещью. Стэк STM32_USB_Device_Library V1.2.1, контроллер stm32F407. USB FS Device, CDC Class. На компе Windows 7, драйвер от ST. Хочу принимать большие объемы данных. И происходит такая странная вещь. При отправки маленьких объемов (до 64 байт), всё хорошо, назовем их команды. Отправляю комбинацию 266 байт одной посылкой в консоле, назовем её конфигурацией. При отправки одной конфигурации, получается отправить несколько раз (5-10 раз) одну и туже конфигурацию, далее всё глохнет. Ошибка в консоли WriteFile function failed (win error code:31) При отправки другой конфигурации (тоже 266 байт, только сами данные другие), сразу глохнет с той же ошибкой. После возникновения этой ошибки, прием устройством полностью прекращается, при этом отправка на хост продолжает работать. При возникновении этой ошибки принимаются не все данные, т.е. должны приехать 4 раза по 64 байта и один раз 10 байт, а приходит только 3 раза по 64 байта и всё стопается, иногда, очень редко, только 2 раза по 64 байта. Если попробовать отправить ещё хоть что-то, то консоль зависает, новых данных устройство не получает. Видимо, виндовый драйвер уже не собирается ничего отправлять. Вижу это в функции uint8_t usbd_cdc_DataOut (void *pdev, uint8_t epnum). Не могу понять, как эта ошибка зависит от самих данных? С данными я, пока, ничего не делаю, просто складываю в FreeRTOS-ную очередь в функции VCP_DataRx, пробовал и вообще ничего с ними не делать. И не понимаю, что за "гонки" происходят? Моя догадка такая, прилетает очередная партия данных, а DCD_EP_PrepareRx при этом ещё не успел выполнился. В этом случае устройство, наверное, должно что-то отправить хосту, типа NAK или ещё что-то и хост переповторить отправку последнего блока или я неправильно понимаю? Пока не подтвердить, не опровергнуть свою догадку не получилось, медленно расковыриваю стэк. Буду очень признателен за любые подсказки. И ещё, есть какое-нибудь ПО для "прослушки" USB порта, чтобы понять что там ходит, включая все служебные USBные команды? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 августа, 2019 Опубликовано 23 августа, 2019 · Жалоба 5 минут назад, Booger сказал: И ещё, есть какое-нибудь ПО для "прослушки" USB порта, чтобы понять что там ходит, включая все служебные USBные команды? USBTrace Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Booger 0 23 августа, 2019 Опубликовано 23 августа, 2019 · Жалоба 27 minutes ago, jcxz said: USBTrace Хорошая штука, спасибо! Очень помогло! Выяснил, что моё устройство отвечает STALL и после этого хост "бросает вёсла". Как я понимаю, если устройство отвечает так, то это совсем всё плохо, поэтому хост и перестает слать данные. Осталось выяснить, что такое случилось, что моему устройству поплохело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 27 августа, 2019 Опубликовано 27 августа, 2019 · Жалоба On 8/23/2019 at 9:13 AM, Booger said: И ещё, есть какое-нибудь ПО для "прослушки" USB порта, чтобы понять что там ходит, включая все служебные USBные команды? Если хочется бесплатно, то Microsoft Message Analyzer. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
retro55 0 4 сентября, 2019 Опубликовано 4 сентября, 2019 (изменено) · Жалоба Подскажите пожалуйста, как можно узнать подключено мой stn32f205 к компу по usb-cdc или нет. При сбросе камня второй раз он в функцию CDC_Init_FS почему-то не попадает. И как сделать, чтоб usb переходил также как и весь камень в режим low_power, если я пишу строчку hpcd_USB_OTG_FS.Init.low_power_enable = ENABLE ; // то usb вообще не работает. Изменено 4 сентября, 2019 пользователем retro55 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 4 сентября, 2019 Опубликовано 4 сентября, 2019 · Жалоба Конкретно за этот чип не скажу, не пользовался. Но у других STM32 есть прерывания по Suspend и Resume. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
retro55 0 4 сентября, 2019 Опубликовано 4 сентября, 2019 · Жалоба 44 minutes ago, VladislavS said: Конкретно за этот чип не скажу, не пользовался. Но у других STM32 есть прерывания по Suspend и Resume. Suspend вызывается при подключении и отключении от USB , а rezume не вызывается при включении или отключении от USB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться