USB

32-разрядные микроконтроллеры разработки ОАО "НИИЭТ"

Модераторы: pip, _sva_

Ответить
Сергей
Сообщения: 5
Зарегистрирован: 25 янв 2018, 15:10
Предприятие: АО "Корпорация "ВНИИЭМ"

USB

Сообщение Сергей » 01 мар 2018, 15:27

На основе проекта, выложенного в репозитории, работы с USB, сделал вот такую инициализацию USB контроллера.

void Usb_Init(void)
{
NT_COMMON_REG->PER_RST0 |= 1 << COMMON_REG_PER_RST0_USBPHYRST_Pos;

// NT_COMMON_REG->USB_CTRL = 0x05;
//выберем частоту 24 МГц
//тактируется от входа CLK_USB
//разрешим синхронизацию
NT_COMMON_REG->USB_CTRL = (1 << COMMON_REG_USB_CTRL_FSEL_Pos) | (1 << COMMON_REG_USB_CTRL_CLKEN_Pos);

NT_USBDevice->USB_IRQ_ENB = (1 << USBDevice_USB_IRQ_ENB_SOFINTEN_Pos) | \
(1 << USBDevice_USB_IRQ_ENB_RESSTATUSINTEN_Pos) | \
(1 << USBDevice_USB_IRQ_ENB_RESUMEINTEN_Pos) | \
(1 << USBDevice_USB_IRQ_ENB_SUSPENDINTEN_Pos);

NT_USBDevice->IRQ_ENB_L = 1 << USBDevice_IRQ_ENB_L_USBBUSINTEN_Pos;

NT_USBDevice->USB_OPER = 0x00;
NT_USBOTG->OTG_IRQ_STAT &= ~(1 << USBOTG_OTG_IRQ_STAT_A_BUSREQ_Pos);
NT_USBOTG->OTG_IRQ_STAT |= 1 << USBOTG_OTG_IRQ_STAT_B_BUSREQ_Pos;

NVIC_ClearPendingIRQ(USBOTG_IRQn);
NVIC_EnableIRQ(USBOTG_IRQn);
}
При подключении отладочной платы к компьютеру ничего не происходит. Компьютер даже не определяет, что к нему что-то подключилось.
Что нужно сюда добавить или что-то исправить, чтобы компьютер определил, что к нему по USB подключилось неизвестное устройство.

Аватара пользователя
Лашкевич
Сообщения: 113
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: USB

Сообщение Лашкевич » 17 апр 2018, 14:55

У нас USB заработал на основе примера, смотрите исходники проекта https://bitbucket.org/niietcm4/motorcontroldemo
Может быть тактирование запрещено или в аппаратной части проблемы.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

Сергей
Сообщения: 5
Зарегистрирован: 25 янв 2018, 15:10
Предприятие: АО "Корпорация "ВНИИЭМ"

Re: USB

Сообщение Сергей » 21 май 2018, 12:54

Почему в Вашем примере в функции
void USB_enable_peripheral (void)
Вы используете такую запись
NT_COMMON_REG->PER_RST1 |= (1<<3); //clear reset from usb phy
когда как usb phy согласно документации находится в регистре PER_RST0

Аватара пользователя
Лашкевич
Сообщения: 113
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: USB

Сообщение Лашкевич » 22 май 2018, 12:00

Сложно сказать, давно это было. Выглядит как ошибка по Вашим словам, однако наш программист, который это писал, сказал что не помнит уже ничего.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

bkolbov
Сообщения: 115
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: USB

Сообщение bkolbov » 22 май 2018, 12:15

Сергей писал(а):
21 май 2018, 12:54
Почему в Вашем примере в функции
void USB_enable_peripheral (void)
Вы используете такую запись
NT_COMMON_REG->PER_RST1 |= (1<<3); //clear reset from usb phy
когда как usb phy согласно документации находится в регистре PER_RST0
Возможно пример писался под совсем старую версию хедера и по старой документации, еще до массовой правки имен регистров, когда сделали, чтобы все регистры с номером вели нумерацию с нуля. Регистры PER_RST1, PER_RST2 стали впоследствии PER_RST0, PER_RST1.

Disona
Сообщения: 9
Зарегистрирован: 06 дек 2016, 11:18
Предприятие: НПФ Вектор
Откуда: Москва
Contact:

Re: USB

Сообщение Disona » 22 май 2018, 12:23

Добрый день, я вспомнил.
Как уже было сказано выше, работа с USB основана на готовом примере от НИИЭТ - многие операции были скопированы из примера не глядя. Поэтому, действительно, ошибки могут присутствовать и, возможно, это одна из них.
Пример, на основе которого мы внедрили USB - https://bitbucket.org/niietcm4/example_ ... T/GCC/USB/
Конкретный файл, имитирующий Virtual COM Port:
https://bitbucket.org/niietcm4/example_ ... VCP/main.c

Там тоже сброс осуществляется через регистр RST1 в функции "SystemInit()". Я предполагаю, что это действительно неверно, но пример работает, т.к. где-то в других местах происходит этот сброс.

Касательно последнего поста от bkolbov:
Возможно пример писался под совсем старую версию хедера и по старой документации, еще до массовой правки имен регистров, когда сделали, чтобы все регистры с номером вели нумерацию с нуля. Регистры PER_RST1, PER_RST2 стали впоследствии PER_RST0, PER_RST1.
Я посмотрел проект на bitbucket - нет, там заголовочники уже новые.
С уважением, Дмитрий Шпак
ООО "НПФ Вектор"

Сергей
Сообщения: 5
Зарегистрирован: 25 янв 2018, 15:10
Предприятие: АО "Корпорация "ВНИИЭМ"

Re: USB

Сообщение Сергей » 22 май 2018, 14:27

Используется ли у Вас вход CLK_USB (23 нога контроллера, вход PA0). Если да, то на какую частоту установлен генератор.
Есть предположение, что не работает тактирование от OSC_CLK, так как у меня не заработал Ваш пример на плате от "Мехатроника про", где вход CLK_USB не используется.

Аватара пользователя
Лашкевич
Сообщения: 113
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Contact:

Re: USB

Сообщение Лашкевич » 23 май 2018, 18:23

наша схемотехника доступна у нас на сайте http://motorcontrol.ru/production/contr ... _nt32m4f1/
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/

Bond
Сообщения: 3
Зарегистрирован: 18 фев 2018, 21:27
Предприятие: ООО "ГАМЕМ"

Re: USB

Сообщение Bond » 29 май 2018, 22:01

Год назад, в проекте USB Virtual Com Port, выложенному в репозитории, был обнаружен "баг".
После запуска программы при подаче питания на процессор и подключения его по USB к Windows, устройство не распознается Windos-ом.
После рестарта процессора через вывод "reset" без снятия питания, работает без замечаний. В Linux-е, как отмечалось год назад, такого эффекта не наблюдалось. Обсуждение этой проблемы год назад возникло в репозитории при участии авторов самой программы, но продолжения не последовало.
На днях сам "наступил на эти же грабли". Танцы с бубном ни к чему не привели.
Кто нибудь знает решение этой проблемы ?

Ответить

Вернуться в «32-разрядные микроконтроллеры на ядре ARM Cortex»

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

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