Easyelectronics.ru

Электроника для всех
Текущее время: 18 июл 2018, 00:21

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



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: STM32F407 и USB
СообщениеДобавлено: 06 июл 2018, 16:30 
Старожил

Зарегистрирован: 11 фев 2016, 18:17
Сообщения: 333
На каком основании хост может "передумать" забирать данные?

Кстати, еще вопрос: как мы отправляем пакеты нулевой длины? Ведь фактической записи в DFIFO нет. В библиотеке записываются биты PKTCNT = 1 и XFRSIZ = 0 в регистр DIEPTSIZx. Больше ничего делать не надо?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407 и USB
СообщениеДобавлено: 06 июл 2018, 21:49 
Заглядывает иногда

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 198
ElecDron писал(а):
Кстати, еще вопрос: как мы отправляем пакеты нулевой длины?

Точно так же как и ненулевой, только в fifo не пишем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407 и USB
СообщениеДобавлено: 06 июл 2018, 23:31 
Старожил

Зарегистрирован: 11 фев 2016, 18:17
Сообщения: 333
Хм... в моем понимании функция записи данных - это просто запись в FIFO:
Код:
void ep0write(uint32 value) // для записи в КТ0
{
    USB.DFIFO0.write(value);
}
Я что-то упустил?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F407 и USB
СообщениеДобавлено: 07 июл 2018, 00:05 
Заглядывает иногда

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 198
ElecDron писал(а):
Хм... в моем понимании функция записи данных - это просто запись в FIFO
FIFO это всего лишь буфер для данных.
ElecDron писал(а):
Я что-то упустил?
Мне кажется даташит почитать упустили. Этот момент там расписан подробно. Про ZLP в случае совпадения размера посылки с размером конечной точки тоже.
Код:
    USB_OTG_INEP(EPNum)->DIEPTSIZ = USB_OTG_DIEPTSIZ_PKTCNT(1) | USB_OTG_DIEPTSIZ_XFRSIZ(cnt);
    USB_OTG_INEP(EPNum)->DIEPCTL |= USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA;
    if(cnt) WriteFIFO(EPNum, pData, cnt);


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу Пред.  1, 2, 3, 4

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


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

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


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

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

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