Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 и USB (практика)
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Ср мар 03, 2021 08:48:38

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 293 ]     ... , , , 14,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вт авг 25, 2020 19:43:31 
Первый раз сказал Мяу!

Зарегистрирован: Пн авг 24, 2020 19:13:24
Сообщений: 21
Рейтинг сообщения: 0
Спасибо за помощь. Оказалось, что проблема и правда в юарте: у меня почему-то не отправляются (или не принимаются в консоль) байты 0x11, 0x12, 0x13. Буду сейчас для начала с этим пытаться разобраться


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Пт сен 18, 2020 20:27:26 
Первый раз сказал Мяу!

Зарегистрирован: Пн авг 24, 2020 19:13:24
Сообщений: 21
Рейтинг сообщения: 0
Здравствуйте.
Теперь столкнулся с такой проблемой - получаю URB_interrupt in запросы от хоста на первую оконечную точку после того, как передал дескриптор репорта, но все ответы (девайс -> хост) имеют статус USBD_STATUS_XACT_ERROR (смотрю через WIRESHARK), хотя я даже не могу получить прерывание по ней. Все дескрипторы для клавиатуры брал вот отсюда https://www.usb.org/sites/default/files/hid1_11.pdf стр. 66 с небольшими изменениями, чтобы убрать один интерфейс под мышь. В системе устройство определяется корректно. В прикрепленном файле - скрин логов wireshark. Пробовал использовать разные оконечные точки для прерываний, двигать btable, но ничего не изменилось. Есть ли какой совет, что в такой ситуации делать?
Спасибо


Вложения:
Захват из USBPcap2.png [82.67 KiB]
Скачиваний: 89
Вернуться наверх
 
Друзья! Скоро Новый Год! Китайский! Но мы работаем и в праздники тоже!

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Сб сен 19, 2020 06:26:24 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
Продолжать курить как работает USB. Хост САМ забирает данные из конечных точек.

Вот код от простенького HID. По нажатию кнопки на плате переключается состояние светодиода. Состояние светодиода отображается на хосте.

Код:
Key key;

int main()
{
  uint8_t report[2]={5,0};  // Report ID 5
 
  for(;;)
  {   
    if(key.pressed())
    {
      report[1]=report[1]?0:1;
      if(report[1]) LED::On(); else LED::Off();
      usb.WriteEP<1>(report,sizeof(report));
    }
  }
}


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Сб сен 19, 2020 12:19:29 
Первый раз сказал Мяу!

Зарегистрирован: Пн авг 24, 2020 19:13:24
Сообщений: 21
Рейтинг сообщения: 0
Я понимаю, что хост сам забирает данные, но чтобы микроконтроллер передал их, мне же все равно нужно разрешить передачу. На данный момент - после того как я передал дескриптор репорта и обработал сет репорт - я заполняю буффер данных передачи для первой точки репортом, в btable указываю размер передаваемых данных и устанавливаю тип точки - interrupt. Затем разрешаю передачу данных для этой точки. Как я понимаю, теперь когда хост пошлет interrupt запрос, то устройство должно будет отправить данные из буфера. Но в итоге передать данные у меня не получается. Что касательного Вашего примера, то что делает функция WriteEP? Просто заполняет PMA?


Вернуться наверх
 
Запускаем новый BLE 5.2-чип BlueNRG-LP от STMicroelectronics

Любая разработка начинается с чтения документации и изучения доступных средств разработки. Данный материал целиком посвящен средствам разработки, включая детальные инструкции по запуску вашего первого приложения на BlueNRG-LP. Описана работа с отладкой STEVAL-IDB011V1, набором инструментов и пакетом ПО позволяющим разработчику быстро войти в курс дела.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Сб сен 19, 2020 18:09:14 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
WriteEP делает всё то же самое что и при отправке дескрипторов, только в 1-ю точку. Пишет в буфер, указывает длину и ставит статус TX_VALID. После этого хост сам всё заберёт.


Вернуться наверх
 
Революция в силовой электронике. Начало

Что привлекает в SiC по сравнению с кремнием, и какие особенности делают компоненты SiC часто используемыми, несмотря на более высокую стоимость в сравнении с кремниевыми высоковольтными устройствами? – Объясняет специалист ведущего разработчика силовых приборов из карбида кремния, компании Infineon.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Сб сен 19, 2020 21:44:15 
Первый раз сказал Мяу!

Зарегистрирован: Пн авг 24, 2020 19:13:24
Сообщений: 21
Рейтинг сообщения: 0
Видимо где-то из-за невнимательности не могу найти ошибку, потому что сделал все как и при отправке дескрипторов, но почему-то данные из первой точки не уходят.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 20, 2020 00:01:08 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
Показывай инициализацию ep1 и функцию отправки.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 20, 2020 00:16:19 
Друг Кота
Аватар пользователя

Карма: 3
Рейтинг сообщений: 122
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3109
Рейтинг сообщения: 0
И дескриптор интерфейса.
Может в нем нет данных о точке или они некорректные.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 20, 2020 14:51:54 
Первый раз сказал Мяу!

Зарегистрирован: Пн авг 24, 2020 19:13:24
Сообщений: 21
Рейтинг сообщения: 0
В общем вот весь код. Немного изменил, чтобы основную часть перенести в main файл. Инициализация первой оконечной точки после ресета происходит на 298 и 301 строках.

Добавлено after 2 hours 53 minutes 18 seconds:
Забыл в коде указать COUNT_TX для первой точки, но если указать, то все равно не работает


Вложения:
main.txt [11.52 KiB]
Скачиваний: 61
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 20, 2020 15:10:43 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
Хорошо, даже отлично, нет, просто замечательно! Что всё это не у меня :)

Я продираться через такое количество мэджикнамберсов не буду. Сравните как можно даже дескрипторы понятно описать.


А за такое вообще увольнять без выходного пособия. Что записано в регистр? Какой бит ожидается?
Код:
usb.ep0r.write(0x0210);
while usb.ep0r.get_bit(7) == 0 {};
Я в RM не полезу выяснять.

И собственно главный вопрос. В какой строке вы репорт отправляете?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 20, 2020 16:04:21 
Первый раз сказал Мяу!

Зарегистрирован: Пн авг 24, 2020 19:13:24
Сообщений: 21
Рейтинг сообщения: 0
"Я продираться через такое количество мэджикнамберсов не буду. Сравните как можно даже дескрипторы понятно описать."
Опыта программирования у меня не так уж и много. Век живи - век учись, как говорится.

"А за такое вообще увольнять без выходного пособия. Что записано в регистр? Какой бит ожидается?"
В регистре прием и передача находятся в состоянии nak, когда я записываю единицу, то перевожу передачу в состояние valid. Поскольку в мануале не рекомендуют чтение + запись, то я методом подбора нашел такое значение, чтобы корректно передавать данные. Далее жду пока устройство не переключит флаг в состояние корректной передачи.

"И собственно главный вопрос. В какой строке вы репорт отправляете?"
Я пытаюсь его отправить только один раз. В строке 298 ( write_pma(&[0xc0, 0x00, report_size, 0x00, 0x00, 0x01, 0x00, 0x84], 8); ), где я указываю размер репорта и в строке 301, когда я разрешаю передачу данных. Если я правильно понимаю, то в следующий раз, когда хост запросит данные из первой точки, устройство уже будет готово их отдать (поскольку я не записал в буфер отправки никакие значения, то отправятся все нули), но ничего не отправляется.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 20, 2020 16:25:11 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
Я пытаюсь его отправить только один раз.
В обработчике ресета? До прохождения энумерации?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 20, 2020 16:54:33 
Первый раз сказал Мяу!

Зарегистрирован: Пн авг 24, 2020 19:13:24
Сообщений: 21
Рейтинг сообщения: 0
"В обработчике ресета? До прохождения энумерации?"
Получается, что да. Я думал, что можно в самом начале настроить контрольную точку, а когда хосту понадобится данные, то она уже будет готова их отдать. Просто по control sequence я достаточно много источников информации нашел, а вот что делать после пытался уже сам догадаться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 20, 2020 20:20:42 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
Что делать дальше зависит от реализуемого класса. Тут творчески надо подойти. В случае с HID самое сложное правильный Report Descriptor сделать и формат репортов чтобы соответсвовал дескриптору. А так то передавать данные легко.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 27, 2020 18:21:50 
Первый раз сказал Мяу!

Зарегистрирован: Пн авг 24, 2020 19:13:24
Сообщений: 21
Рейтинг сообщения: 0
Перенес код инициализации первой точки в место перед отправкой дескриптора отчета. Вот что получилось

Код:
write_pma(&[0xc0], 8); // Пишу по адресу 0x4000_6000 + 8 * 2 значение 0xc0 - оффсет буфера передачи для первой оконечной точки
write_pma(&report, 192); // Заполняю буфер передачи репортом
write_pma(&[report.len() as u8], 10); // Пишу по адресу 0x4000_6000 + 10 * 2 размер передаваемых данных
usb.ep1r.write(0x0630); // Разрешаю передачу данных для первой оконечной точки, устанавливая STAT_TX в valid


Но отправить данные из этой точки все равно не получается. Всё та же XACT ERROR. Если инициализировать точку после отправки репорта, то ничего не меняется.
И еще такой вопрос: через некоторое время после того, как устройству не удалось отправить ответ на interrupt, host начинает снова запрашивать дескриптор устройства. Так и должно быть, или это связано с неправильной энумерацией?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 27, 2020 18:41:21 
Собутыльник Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 641
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2641
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Если хост видит, что девайс общается не по этикету, он пошлет его сбросом и начнет все заново (до трех раз).
Если все нормально, дескриптор устройства запрашивается два раза, сначала только его кусок, потом полностью.
Да, когда приходит команда установить адрес девайса, надо ответить ZLP как от безадресного устройства и только потом установить адрес.
Это я сходу что вспомнил, надеюсь правильно.
С 107 МК я чето пока подзавязал разбираться,а со 103 давно делал. Кстати, в этой же теме разбирались как у 103 USB робит , Kellya, Вы читали этот топик полностью? Тут вроде все про 103 и USB разжёвано и как раз на любительском уровне, по мере появления времени и желания ковырялись с коллегами.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 27, 2020 19:34:32 
Первый раз сказал Мяу!

Зарегистрирован: Пн авг 24, 2020 19:13:24
Сообщений: 21
Рейтинг сообщения: 0
"Вы читали этот топик полностью?"
Да, с этого и начинал, мне очень помогло - получилось сделать так, чтобы устройство корректно отображалось в диспетчере устройств. Но для этого достаточно работы с нулевой точкой, а вот что делать с точкой interrupt in, я так и не разобрался, может быть невнимательно все прочитал. Хотя вроде бы настраиваю её аналогично нулевой точке


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 27, 2020 19:45:02 
Собутыльник Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 641
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2641
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Я помню, что interrupt у меня что-то получилось, но потом понял что мне хватает для общения устройства типа HID через "фьючи" более чем. ISX себе CDC забубекал.
Что у меня с interrupt было, точно не помню, но хост регулярно запросы слал (т.е. работало). Вроде с конфигурировать не сложно было, может есть тут в теме? И еще где-то есть ссылка (наверное в начале топика) на параллельную тему, может там что есть А я стал общаться с девайсом через фьючи, потому что мне так проще оказалось приложение под винду написать для обмена.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 27, 2020 19:54:00 
Первый раз сказал Мяу!

Зарегистрирован: Пн авг 24, 2020 19:13:24
Сообщений: 21
Рейтинг сообщения: 0
"Что у меня с interrupt было, точно не помню, но хост регулярно запросы слал"
Вот, у меня тоже хост шлет регулярно запросы к первой точке, но корректно ответить на них у меня почему-то (не разобрался) не получается. Пробую клавиатуру написать, если это как-то важно


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 и USB (практика)
СообщениеДобавлено: Вс сен 27, 2020 19:58:41 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
Неужели в сети рабочий пример HID для f103 не ищется? Да хоть тем же кубом сгенерить и разбираться.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 293 ]     ... , , , 14,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y