Перейти к содержанию
    

Virtual COM Port на STM32

Здравствуйте граждане!

Поднял виртуальный COM порт на микроконтроллере STM32F103. Сейчас столкнулся с тем что данные приходящие по USB от компьютера теряются. Есть такое предположение что потеря данных как-то связана с несоответствием частоты тактирования МК и на стандартных скоростях могут из-за этого возникать ошибки. У меня МК тактируется от кварца 8Мгц, USB соответственно 48Мгц и само ядро на 72Мгц, скорость порта использую 115200. Сам UART я не задействую, просто шлю данные с МК на компьютер посредством виртуального СОМ порта. Знаю что для UART есть специальные кварцы с определенной частотой заточенные для минимизации ошибок, а как с этим обстоит дело если порт виртуальный?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте граждане!

Поднял виртуальный COM порт на микроконтроллере STM32F103. Сейчас столкнулся с тем что данные приходящие по USB от компьютера теряются. Есть такое предположение что потеря данных как-то связана с несоответствием частоты тактирования МК и на стандартных скоростях могут из-за этого возникать ошибки. У меня МК тактируется от кварца 8Мгц, USB соответственно 48Мгц и само ядро на 72Мгц, скорость порта использую 115200. Сам UART я не задействую, просто шлю данные с МК на компьютер посредством виртуального СОМ порта. Знаю что для UART есть специальные кварцы с определенной частотой заточенные для минимизации ошибок, а как с этим обстоит дело если порт виртуальный?

 

В случае виртуального порта эти скоростя до лампочки. Гдето ошибка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И да, не зависимо от выставленной скорости, вы передаете на какой-то другой, максимально возможной для USB в этой конфигурации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скорость порта использую 115200. Сам UART я не задействую, просто шлю данные с МК на компьютер посредством виртуального СОМ порта.

 

О какой тогда скорости уарта идет речь?? Просто обеспечте 48 МГц на усб и не теряйте пакеты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня была такая проблема, когда полностью заполнялся буфер USB: если что-то пыталось туда писать, пока данные передавались, то все терялось. Поставил мьютекс за запись и все стало превосходно.

Вот код

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответы. Буду искать ошибку у себя.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде нашел ошибку в программе. Скорей всего я слишком часто отправляю данные и переполняется буфер USB. Спасибо всем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...