Easyelectronics.ru

Электроника для всех
Текущее время: 28 сен 2020, 04:04

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Дурацкие вопросы про USB на stm32f103
СообщениеДобавлено: 02 июн 2012, 23:53 
Старожил
Аватара пользователя

Зарегистрирован: 14 окт 2011, 15:46
Сообщения: 221
Откуда: Новосибирск
Привет!

Решил поразбираться с USB. Взял за основу проект отсюда - http://we.easyelectronics.ru/STM32/stm3 ... porta.html
Все гут, все работает, COM-порт есть, данные ходят. По пути еще много чего почитал про USB, но осталось несколько моментов неясных (нигде не нашел по ним описания):

1. Зачем нужно 4 end-point-а для COM-порта, если 0 - control, 1 - прием (в хост), 2 - ???, 3 - передача (от хоста).
на 1 и на 3 endpoint-ы есть обработчики (в usb_endp.c), а на второй - только описание, но никакой обработки нету. зачем заводить end-point если мы его игнорируем? Или это какое-то требование для Virtual COM портов?

2. В том же usb_endp.c есть такой define:
Код:
#define VCOMPORT_IN_FRAME_INTERVAL             5

Все его используют не задумываясь, но я не нашел ответа - почему посылать нужно данные на каждый 5 фрейм? Это чтобы шину не грузить или я чего-то не понимай?

3. В файле usb_conf.h есть указание буфферов:
Код:
/*-------------------------------------------------------------*/
/* --------------   Buffer Description Table  -----------------*/
/*-------------------------------------------------------------*/
/* buffer table base address */
/* buffer table base address */
#define BTABLE_ADDRESS      (0x00)

/* EP0  */
/* rx/tx buffer base address */
#define ENDP0_RXADDR        (0x40)
#define ENDP0_TXADDR        (0x80)

/* EP1  */
/* tx buffer base address */
#define ENDP1_TXADDR        (0xC0)
#define ENDP2_TXADDR        (0x100)
#define ENDP3_RXADDR        (0x110)

Это что за буфера? И что за BTABLE? Это адреса в памяти для приема данных? Просто явно они как-то не используются, передаются в структурах...

Спасибо за ответы!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дурацкие вопросы про USB на stm32f103
СообщениеДобавлено: 03 июн 2012, 23:02 
Заглядывает иногда

Зарегистрирован: 01 июн 2010, 11:04
Сообщения: 139
По поводу
kab писал(а):
0 - control, 1 - прием (в хост), 2 - ???, 3 - передача (от хоста)


2 - это управление портом: установка/чтение LINE_CODING (кол-во бит, битрейт, и т.д.), установка/чтение состояния управляющих линий.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дурацкие вопросы про USB на stm32f103
СообщениеДобавлено: 03 июн 2012, 23:12 
Старожил
Аватара пользователя

Зарегистрирован: 14 окт 2011, 15:46
Сообщения: 221
Откуда: Новосибирск
хм, а почему тогда обработчика нету? или это просто некий дефолтный обработчик?
даже в оригинальном примере есть только EP1_Callback и EP3_Callback...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дурацкие вопросы про USB на stm32f103
СообщениеДобавлено: 04 июн 2012, 01:12 
Старожил

Зарегистрирован: 30 апр 2010, 22:56
Сообщения: 1589
Откуда: Киев
kab писал(а):
хм, а почему тогда обработчика нету? или это просто некий дефолтный обработчик?
даже в оригинальном примере есть только EP1_Callback и EP3_Callback...


А потому что он не нужен в большинстве случаев. В виртуальном ком-порту битрейт и прочие старт-стопы - фикция. за разбивку байтов по битам отвечает "стек" USB.
Оно может быть полезно, когда у нас устройство представляет собой переходник юсб-ком порт. Вот тогда имеет смысл настройка битрейта - физиологически настраивается внешний usart. Если посмотреть аппнот, из которого собсно делался пример, то там так и сделано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дурацкие вопросы про USB на stm32f103
СообщениеДобавлено: 05 июн 2012, 00:48 
Старожил
Аватара пользователя

Зарегистрирован: 14 окт 2011, 15:46
Сообщения: 221
Откуда: Новосибирск
Спасибо, вычитал в аппноуте для чего EP2 и почему оно не используется по факту...

3 вопрос вроде бы тоже закрыт - это некие адреса в периферии USB (по адресу 0x4000....) по которым читаем/пишем.
видимо, для разных EP нужно задавать разные, повкуриваю еще.

а вот на 2 вопрос ответа так и не нашел... в аппноуте тоже тишина...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 


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


Кто сейчас на конференции

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


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB