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

STM32 CDC RTS DTR

Имеется имплементация CDC на STM32F070 близкая к примеру из Куба. Вроде все бы не плохо, но мне надо управлять  RTS и DTR. Когда программа (на Windows) выставляет или снимает DTR, честно приходит CDC_SET_CONTROL_LINE_STATE и 2 бита показывают  RTS и DTR. Но когда программа выставляет/снимает RTS, ничего не происходит. Но если поменять DTR, то оба бита правильные. 

Для контроля взял FT323RT и той же программой менял состояние  RTS. Ножка реагирует сразу. В чем тут дело? Драйвер кривой?

 

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


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

4 hours ago, alexf said:

на Windows

Какой?

 

4 hours ago, alexf said:

Драйвер кривой?

На XP и W7 такого точно не замечалось.

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


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

1 hour ago, aaarrr said:

На XP и W7 такого точно не замечалось.

 

Это поведение USB CDC на всех виндах.
Решение - либо считать текущее состояние RTS и ставить вместе с DTR либо хранить и ставить так ж две линии.
К драйверам FT232/CP210xx никакого отношения не имеет.


void CComtestDlg::OnChRts() 
{
	UpdateData(TRUE);
	VERIFY(::EscapeCommFunction(g_hSerialPort, m_bRTS ? SETRTS : CLRRTS));
	VERIFY(::EscapeCommFunction(g_hSerialPort, m_bDTR ? SETDTR : CLRDTR));	// после этой строки выводится изменённое состояние RTS (иначе по USB CDC нет команды SET_CONTROL_LINE_STATE)
}

 

Изменено пользователем GenaSPB

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


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

8 часов назад, alexf сказал:

Для контроля взял FT323RT и той же программой менял состояние  RTS. Ножка реагирует сразу. В чем тут дело? Драйвер кривой?

Советую посмотреть как происходит управление RTS-ом в "той же программе".

Особенно обратить внимание на SetCommState() и его аргумент lpDCB. Особенно на lpDCB->fDtrControl, lpDCB->fRtsControl и всё что связано с управлением потоком.

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


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

Я получил что заслужил за то что не описал достаточно подробно проблему: правильные но не помогающие ответы. А проблема вот в чем. Есть радио модуль XBee. В нормальном режиме он управляется через только RX/TX. Но для перепрошивки должны быть подключены еще и  RTS и DTR. Я поставил модуль на свою плату, где связь идет через CDC на STM32. Доступа к внутреностям драйверов и программы обновления прошивки нет. Код на STM32 естественно в моих руках, но если нет никакого сигнала на который я мог бы реагировать, то не понятно что можно сделать. Но хотелось бы пользоваться еще одним внешним USB to serial интерфесом для перепрошивки. 

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


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

1 hour ago, alexf said:

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

В любом случае придется привязываться к каким-то внешним событиям: открытие порта на специфической скорости, изменение DTR, если оно предшествует RTS и т.п.

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


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

А штатным софтом вообще удвалось прошить через переходники со стандартным виндовым драйвером?

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


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

Раньше продавали переходник на USB и все перешивалось как надо.  Правдо было дело давно. Попробую подключить через FT232 и посмотреть.

P.S. Да, через стандартный переходник на FT232R все прекрасно работает. Очевидно они используют RTS и DTR чтобы управлять режимом и надо уметь дергать RTS в реальном времени. Чего, похоже, драйвер на WIndows 10 не делает.

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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