Easyelectronics.ru

Электроника для всех
Текущее время: 23 сен 2018, 19:34

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



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • 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
Сообщения: 385
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
Сообщения: 385
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 часов


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

Сейчас этот форум просматривают: //Mt, 45893569365


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

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

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