Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Virtual COM Port на STM32
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
coolbassnik
Здравствуйте граждане!
Поднял виртуальный COM порт на микроконтроллере STM32F103. Сейчас столкнулся с тем что данные приходящие по USB от компьютера теряются. Есть такое предположение что потеря данных как-то связана с несоответствием частоты тактирования МК и на стандартных скоростях могут из-за этого возникать ошибки. У меня МК тактируется от кварца 8Мгц, USB соответственно 48Мгц и само ядро на 72Мгц, скорость порта использую 115200. Сам UART я не задействую, просто шлю данные с МК на компьютер посредством виртуального СОМ порта. Знаю что для UART есть специальные кварцы с определенной частотой заточенные для минимизации ошибок, а как с этим обстоит дело если порт виртуальный?
A. Fig Lee
Цитата(coolbassnik @ Apr 25 2015, 19:18) *
Здравствуйте граждане!
Поднял виртуальный COM порт на микроконтроллере STM32F103. Сейчас столкнулся с тем что данные приходящие по USB от компьютера теряются. Есть такое предположение что потеря данных как-то связана с несоответствием частоты тактирования МК и на стандартных скоростях могут из-за этого возникать ошибки. У меня МК тактируется от кварца 8Мгц, USB соответственно 48Мгц и само ядро на 72Мгц, скорость порта использую 115200. Сам UART я не задействую, просто шлю данные с МК на компьютер посредством виртуального СОМ порта. Знаю что для UART есть специальные кварцы с определенной частотой заточенные для минимизации ошибок, а как с этим обстоит дело если порт виртуальный?


В случае виртуального порта эти скоростя до лампочки. Гдето ошибка.
Golikov A.
И да, не зависимо от выставленной скорости, вы передаете на какой-то другой, максимально возможной для USB в этой конфигурации.
mantech
Цитата(coolbassnik @ Apr 26 2015, 02:18) *
скорость порта использую 115200. Сам UART я не задействую, просто шлю данные с МК на компьютер посредством виртуального СОМ порта.


О какой тогда скорости уарта идет речь?? Просто обеспечте 48 МГц на усб и не теряйте пакеты.
Эдди
У меня была такая проблема, когда полностью заполнялся буфер USB: если что-то пыталось туда писать, пока данные передавались, то все терялось. Поставил мьютекс за запись и все стало превосходно.
Вот код
coolbassnik
Спасибо за ответы. Буду искать ошибку у себя.
VadimNic_nt
Цитата(coolbassnik @ Apr 26 2015, 11:57) *
Спасибо за ответы. Буду искать ошибку у себя.


Тоже недавно занимался подобным проектом. Добавил промежуточный кольцевой буфер между буфером USB и UART. Изменил функцию, передающую байты в UART - там проверялся флаг БУФЕР ПЕРЕДАТЧИКА ПУСТ?, я поменял на проверку флага ПЕРЕДАЧА ЗАВЕРШЕНА. Вот как то так. Использовал для проекта генератор на 16 МГц.
coolbassnik
Вроде нашел ошибку в программе. Скорей всего я слишком часто отправляю данные и переполняется буфер USB. Спасибо всем.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.