Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Электроника - это просто Теоретические и практические вопросы для начинающих электронщиков.

 
Опции темы
Непрочитано 18.10.2018, 13:46  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Вопрос гуру USB (относительно USB CDC)

Пытаюсь из STM32F042 сделать "эмулятор" PL2303 (а потом и ch340 можно так же эмулировать). Отчасти рабочий код (сильно непричесанный, за основу взял чужой пример для HID, поэтому комментарии на русском пока еще).
При подключении МК ядро считает его PL2303, udev загружает соответствующий модуль и чтение/запись нормально работает. Однако, совершенно непонятными для меня остались две вещи:
1) каким образом менять скорость USART (ведь CDC можно использовать не только для общения с МК, но и для изменения параметров каких-нибудь его интерфейсов, в т.ч. какого-нибудь вспомогательного USART): ни до, ни после сообщения SET_LINE_CODING нет пакетов, хоть чем-то похожих на установку скорости;
2) зачем нужна EP1 (interrupt IN), если компьютер ее вообще не использует?
Реклама:
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 18.10.2018, 16:33  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Вопрос гуру USB (относительно USB CDC)

Смотрю wireshark'ом: после запроса SET_LINE_CODING идет нулевой запрос Control IN, у которого после 64 байт самого запроса еще 7 байт данных!
Как их вытащить?
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 19.10.2018, 19:32  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Вопрос гуру USB (относительно USB CDC)

Я - клинический идиот!
Убил целую неделю безрезультатно.
Все, не буду пытаться сделать то, что вообще не понимаю ни на йоту! Чтение RM, даташитов, исходников ST'шных библиотек ни к чему не привело. Как из SETUP-пакета извлечь не только данные самого пакета, но и дополнительно передаваемые данные, я не смог.
Похоже, водка дает о себе знать: мозг у меня совсем деградировал...
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 20.10.2018, 08:54  
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Вопрос гуру USB (относительно USB CDC)

Сообщение от eddy Посмотреть сообщение
Как из SETUP-пакета извлечь не только данные самого пакета, но и дополнительно передаваемые данные, я не смог.
Смутно уже припоминаю, давненько было.
Но, вроде, в EP0 после SETUP_PACKET сразу же лежат данные, которые передаются вместе с ним. wLength в Setup пакете указывает, сколько данных нужно читать. Если данные не помещаются в одном пакете, то продолжение будет в следующем Setup пакете (вроде, называются data stage) и т.д.
https://www.keil.com/pack/doc/mw/USB...transfers.html
Как-то так.
P.S. Правильно вот так: первый setup пакет содержит только заголовок. Из него надо считать wLengths, а далее ждать следующего пакета и уже из него читать данные. Уже плохо помню, а рыться лень.

Последний раз редактировалось pambaru; 20.10.2018 в 09:35.
pambaru вне форума  
Непрочитано 20.10.2018, 09:32  
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Вопрос гуру USB (относительно USB CDC)

Да, похоже setup пакет всегда 8 байт, а далее идет нужное кол-во DATA пакетов.
Припоминаю, что для чтения данных из EP0 после получения Setup нужно было ждать следующего пакета.
1. The Setup Stage is where the request is sent.
2. The optional Data Stage consists of one or multiple IN or OUT transfers.
3. Status Stage reports the status of the overall request
https://www-user.tu-chemnitz.de/~heh...b4.htm#Control

Да, вот сейчас порылся в старом проекте на кипарисе.
После чтения SETUP пакета я читал wLength, потом ждал, пока в EP0 не наберется нужного кол-ва данных, потом считывал их и отправлял Handshake (ACK).
Вот что в мануале на кипарис написано:
The STATUS stage consists of an empty data packet with the opposite direction of the data stage, or
an IN if there was no data stage. This empty data packet gives the device a chance to ACK, NAK, or
STALL the entire CONTROL transfer.
Т.е. ACK надо отправлять не после получения первого пакета Setup, а после получения всего пакета данных, включая пакеты Data!!!
pambaru вне форума  
Сказали "Спасибо" pambaru
mike-y-k (21.10.2018)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по USB контроллеру foma24 Микроконтроллеры, АЦП, память и т.д 10 05.01.2011 04:40
USB CDC realid Микроконтроллеры, АЦП, память и т.д 9 08.06.2009 18:51
Генератор импульсов на 12Fxxx (Вопрос к Гуру( спецам)) vi-gor Микроконтроллеры, АЦП, память и т.д 15 15.11.2008 05:46
Вопрос к Гуру Snixers Микроконтроллеры, АЦП, память и т.д 1 09.04.2006 23:46


Часовой пояс GMT +4, время: 16:46.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot