coolbassnik 0 25 апреля, 2015 Опубликовано 25 апреля, 2015 · Жалоба Здравствуйте граждане! Поднял виртуальный COM порт на микроконтроллере STM32F103. Сейчас столкнулся с тем что данные приходящие по USB от компьютера теряются. Есть такое предположение что потеря данных как-то связана с несоответствием частоты тактирования МК и на стандартных скоростях могут из-за этого возникать ошибки. У меня МК тактируется от кварца 8Мгц, USB соответственно 48Мгц и само ядро на 72Мгц, скорость порта использую 115200. Сам UART я не задействую, просто шлю данные с МК на компьютер посредством виртуального СОМ порта. Знаю что для UART есть специальные кварцы с определенной частотой заточенные для минимизации ошибок, а как с этим обстоит дело если порт виртуальный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 26 апреля, 2015 Опубликовано 26 апреля, 2015 · Жалоба Здравствуйте граждане! Поднял виртуальный COM порт на микроконтроллере STM32F103. Сейчас столкнулся с тем что данные приходящие по USB от компьютера теряются. Есть такое предположение что потеря данных как-то связана с несоответствием частоты тактирования МК и на стандартных скоростях могут из-за этого возникать ошибки. У меня МК тактируется от кварца 8Мгц, USB соответственно 48Мгц и само ядро на 72Мгц, скорость порта использую 115200. Сам UART я не задействую, просто шлю данные с МК на компьютер посредством виртуального СОМ порта. Знаю что для UART есть специальные кварцы с определенной частотой заточенные для минимизации ошибок, а как с этим обстоит дело если порт виртуальный? В случае виртуального порта эти скоростя до лампочки. Гдето ошибка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 26 апреля, 2015 Опубликовано 26 апреля, 2015 · Жалоба И да, не зависимо от выставленной скорости, вы передаете на какой-то другой, максимально возможной для USB в этой конфигурации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 26 апреля, 2015 Опубликовано 26 апреля, 2015 · Жалоба скорость порта использую 115200. Сам UART я не задействую, просто шлю данные с МК на компьютер посредством виртуального СОМ порта. О какой тогда скорости уарта идет речь?? Просто обеспечте 48 МГц на усб и не теряйте пакеты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 26 апреля, 2015 Опубликовано 26 апреля, 2015 · Жалоба У меня была такая проблема, когда полностью заполнялся буфер USB: если что-то пыталось туда писать, пока данные передавались, то все терялось. Поставил мьютекс за запись и все стало превосходно. Вот код Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
coolbassnik 0 26 апреля, 2015 Опубликовано 26 апреля, 2015 · Жалоба Спасибо за ответы. Буду искать ошибку у себя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vn821202 0 26 апреля, 2015 Опубликовано 26 апреля, 2015 · Жалоба Спасибо за ответы. Буду искать ошибку у себя. Тоже недавно занимался подобным проектом. Добавил промежуточный кольцевой буфер между буфером USB и UART. Изменил функцию, передающую байты в UART - там проверялся флаг БУФЕР ПЕРЕДАТЧИКА ПУСТ?, я поменял на проверку флага ПЕРЕДАЧА ЗАВЕРШЕНА. Вот как то так. Использовал для проекта генератор на 16 МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
coolbassnik 0 26 апреля, 2015 Опубликовано 26 апреля, 2015 · Жалоба Вроде нашел ошибку в программе. Скорей всего я слишком часто отправляю данные и переполняется буфер USB. Спасибо всем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться