|
Контроль потока при обмене по USB для LPC1768 |
|
|
|
 |
Ответов
(1 - 8)
|
Mar 17 2013, 18:53
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(aaarrr @ Mar 17 2013, 20:50)  С CDC все проще: достаточно не забирать данные, пока процессор занят. Хост будет получать NAK'и, и, соответственно ждать. В принципе, это первое, что пришло мне в голову. Но смутило то, что подобные действия как-то косвенно управляют потоком, а не напрямую, скажем, установкой/сбросом CTS. Ну а как об этом узнает программа пользователя, передающая данные в виртуальный порт? Неужели драйвер в этом случае сам съэмулирует CTS, чтобы программа пользователя им пользовалась?
--------------------
Благодарю заранее!
|
|
|
|
|
Mar 17 2013, 18:59
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(koluna @ Mar 17 2013, 22:53)  Ну а как об этом узнает программа пользователя, передающая данные в виртуальный порт? Увы (или к счастью, не знаю) - никак. Для нее просто затянется операция записи в порт. Цитата(koluna @ Mar 17 2013, 22:53)  Неужели драйвер в этом случае сам съэмулирует CTS, чтобы программа пользователя им пользовалась? Нет.
|
|
|
|
|
May 20 2013, 14:47
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(aaarrr @ Mar 17 2013, 20:50)  С CDC все проще: достаточно не забирать данные, пока процессор занят. Хост будет получать NAK'и, и, соответственно ждать. Пытаюсь сделать как-то так... Согласно разделу "11.14.2 Data transfer for OUT endpoints" даташита, дело не в заборе данных. Правильно ли я понимаю, что если хотим, чтобы девайс слал хосту NAK, то нужно просто не очищать буфер (команда Clear Buffer)?
--------------------
Благодарю заранее!
|
|
|
|
|
May 21 2013, 08:01
|
Профессионал
    
Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061

|
Цитата(aaarrr @ May 20 2013, 21:19)  Можно не очищать буфер, можно не читать и не очищать - смотря что удобнее в конкретном случае. Цитата 11.14.2 Data transfer for OUT endpoints
... Software can now start reading the data from the USBRxData register (Table 215). When the end of packet is reached, the RD_EN bit is cleared, and the RxENDPKT bit is set in the USBDevSt register. Software now issues a Clear Buffer (refer to Table 250) command. The endpoint is now ready to accept the next packet. ... Исходя из этого не ясно, что можно не читать... может, где-то еще написано?  Попробуем. Пока не получилось. Где-то баг сидит  Кстати, а какой объем буфера у стандартного драйвера виндового (на передачу который)? Он не переполнится?
--------------------
Благодарю заранее!
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|