alexf 0 17 августа, 2019 Опубликовано 17 августа, 2019 · Жалоба Имеется имплементация CDC на STM32F070 близкая к примеру из Куба. Вроде все бы не плохо, но мне надо управлять RTS и DTR. Когда программа (на Windows) выставляет или снимает DTR, честно приходит CDC_SET_CONTROL_LINE_STATE и 2 бита показывают RTS и DTR. Но когда программа выставляет/снимает RTS, ничего не происходит. Но если поменять DTR, то оба бита правильные. Для контроля взял FT323RT и той же программой менял состояние RTS. Ножка реагирует сразу. В чем тут дело? Драйвер кривой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 17 августа, 2019 Опубликовано 17 августа, 2019 · Жалоба 4 hours ago, alexf said: на Windows Какой? 4 hours ago, alexf said: Драйвер кривой? На XP и W7 такого точно не замечалось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 17 августа, 2019 Опубликовано 17 августа, 2019 (изменено) · Жалоба 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) } Изменено 17 августа, 2019 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 172 17 августа, 2019 Опубликовано 17 августа, 2019 · Жалоба 8 часов назад, alexf сказал: Для контроля взял FT323RT и той же программой менял состояние RTS. Ножка реагирует сразу. В чем тут дело? Драйвер кривой? Советую посмотреть как происходит управление RTS-ом в "той же программе". Особенно обратить внимание на SetCommState() и его аргумент lpDCB. Особенно на lpDCB->fDtrControl, lpDCB->fRtsControl и всё что связано с управлением потоком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexf 0 17 августа, 2019 Опубликовано 17 августа, 2019 · Жалоба Я получил что заслужил за то что не описал достаточно подробно проблему: правильные но не помогающие ответы. А проблема вот в чем. Есть радио модуль XBee. В нормальном режиме он управляется через только RX/TX. Но для перепрошивки должны быть подключены еще и RTS и DTR. Я поставил модуль на свою плату, где связь идет через CDC на STM32. Доступа к внутреностям драйверов и программы обновления прошивки нет. Код на STM32 естественно в моих руках, но если нет никакого сигнала на который я мог бы реагировать, то не понятно что можно сделать. Но хотелось бы пользоваться еще одним внешним USB to serial интерфесом для перепрошивки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 17 августа, 2019 Опубликовано 17 августа, 2019 · Жалоба 1 hour ago, alexf said: ...если нет никакого сигнала на который я мог бы реагировать, то не понятно что можно сделать В любом случае придется привязываться к каким-то внешним событиям: открытие порта на специфической скорости, изменение DTR, если оно предшествует RTS и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 18 августа, 2019 Опубликовано 18 августа, 2019 · Жалоба А штатным софтом вообще удвалось прошить через переходники со стандартным виндовым драйвером? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexf 0 18 августа, 2019 Опубликовано 18 августа, 2019 · Жалоба Раньше продавали переходник на USB и все перешивалось как надо. Правдо было дело давно. Попробую подключить через FT232 и посмотреть. P.S. Да, через стандартный переходник на FT232R все прекрасно работает. Очевидно они используют RTS и DTR чтобы управлять режимом и надо уметь дергать RTS в реальном времени. Чего, похоже, драйвер на WIndows 10 не делает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться