Программный USB на STM8 (Часть 3)
Давненько ни чего не писал, собственно ни чего и не делал. Месяц назад родилась вторая дочка, теперь вообще времени нет для хобби, нянькаюсь :)
За два года с момента публикации по данной теме обращались с вопросами только товарищи из Китая, похоже только им интересна эта разработка ;)
Мне самому USB не очень интересен, поэтому я ни чего не делал с момента публикации. Код как был сырой так и остался.
Последнее время количество писем с просьбой помочь “запустить” увеличилось, особенно от товарища по имени James.
Решил помочь ему, нашел платку, прошил подключил к USB хабу и устройство определилось без проблем.
Далее подключил напрямую к ПК и устройство не определилось, что меня удивило. Я ранее проверял работу с ПК.
Потом я вспомнил, что больше года назад я обновил ПК, поменял мать и процессор.
Достал осциллограф и стал смотреть чего там происходит на линиях данных.
Оказалось, что самый первый импульс синхропакета (SYNC) периодически имел длину меньше положенной. Уменьшение было до двух раз. Что и приводило к ошибкам приема.
Исправил эту ошибку изменив фронт захвата сигнала с нарастающего на спадающий (по линии D+).
Так же на новом ПК интервалы между запросами короче и нехватало времени для перехода в режим приема, исправил.
Исходный код доступен на GiHub: github.com/ZiB/STM8S-USB
Будут вопросы пишите, форма обратной связи в меню сайта (см. выше).
Внимание!!! Код СЫРОЙ, без оформления и тщательной проверки.
comments powered by Disqus