04.02.2014, 23:12
|
|
Временная регистрация
Регистрация: 08.12.2006
Сообщений: 84
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
"Поднять" USB на stm32f4-discovery с помощью Keil
Здравствуйте,
перехожу на stm32 с mega и xmega.
Диодом поморгал и в цикле и по таймеру.
Но не ради этого затеян переход.
Для начала нужно "поднять" USB, примеры вроде есть, но или не под мой чип или не под эту среду, поэтому создаю проект с нуля по образу и подобию как в примерах. Начинаю с простого - HID.
Итог один - всё компилируется, заливается, однако когда подключаю устройство к компьютеру, только загорается зеленый диодик наличия питания по usb, а в компьютере ничего не происходит, ни каких новых устройств не появляется.
Что делаю:
Создаю новый проект, выбираю чип STM32F401VC, подключаю компоненты:
Редактирую RTE_Device.h
Согласно
Сгенерированный ей system_stm32f4xx.c подкидываю в проект вместо имеющегося
Редактирую USBD_Config_0.c
Редактирую USBD_Config_HID_0.h
(см scr5.png в миниатюрах, 5-е изображение не вставляется)
Создаю main.c как в других примерах:
Код:
|
#include "cmsis_os.h"
#include "rl_usb.h"
int main (void) {
USBD_Initialize (0); /* USB Device 0 Initialization */
USBD_Connect (0); /* USB Device 0 Connect */
while (1) { /* Loop forever */
osDelay(100); /* 100 ms delay for sampling buttons */
}
} |
Создаю USBD_User_HID_0.c
Код:
|
#include "rl_usbd.h"
#include "usb_hid.h"
void USBD_HID0_Initialize (void) {
}
void USBD_HID0_Uninitialize (void) {
}
int32_t USBD_HID0_GetReport (uint8_t rtype, uint8_t req, uint8_t rid, uint8_t *buf) {
switch (rtype) {
case HID_REPORT_INPUT:
switch (rid) {
case 0:
switch (req) {
case USBD_HID_REQ_EP_CTRL: // Explicit USB Host request via Control OUT Endpoint
case USBD_HID_REQ_PERIOD_UPDATE: // Periodic USB Host request via Interrupt OUT Endpoint
// ToDo: update buffer for report data, example:
// buf[0] = 0; // Data Value = 0
// buf[1] = 5; // Data Value = 5
// return (2); // Data Size = 2 bytes
break;
case USBD_HID_REQ_EP_INT: // Called after USBD_HID_GetReportTrigger to signal
// data obtained.
break;
}
break;
}
break;
case HID_REPORT_FEATURE:
break;
}
return (0);
}
bool USBD_HID0_SetReport (uint8_t rtype, uint8_t req, uint8_t rid, const uint8_t *buf, int32_t len) {
uint8_t i;
switch (rtype) {
case HID_REPORT_OUTPUT:
for (i = 0; i ‹ 4; i++) {
//if (*buf & (1 ‹‹ i))
// LED_On (i);
//else
// LED_Off (i);
}
break;
case HID_REPORT_FEATURE:
break;
}
return true;
}
//! [code_USBD_User_HID] |
Всё это компилирую и заливаю.
Что я мог забыть? Сделать не правильно?
|
|
|
|
04.02.2014, 23:15
|
|
Временная регистрация
Регистрация: 08.12.2006
Сообщений: 84
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: "Поднять" USB на stm32f4-discovery с помощью Keil
Прикладываю так же проект целиком.
|
|
|
|
04.02.2014, 23:46
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
|
Re: "Поднять" USB на stm32f4-discovery с помощью Keil
Сообщение от kaf-0
|
Итог один - всё компилируется, заливается, однако когда подключаю устройство к компьютеру, только загорается зеленый диодик наличия питания по usb, а в компьютере ничего не происходит, ни каких новых устройств не появляется.
|
То есть подключаем к OTG разьему комп , стряпаем HID device и пытаемся что то получить?
Сообщение от kaf-0
|
Что делаю:
Создаю новый проект, выбираю чип STM32F401VC, подключаю компоненты:
|
STM32F4 discovery ???? Ничего не напутал?
__________________
Осторожно , злой кот
|
|
|
|
04.02.2014, 23:49
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: "Поднять" USB на stm32f4-discovery с помощью Keil
Да походу забыл 1.5K на USBDP подать.
|
|
|
|
04.02.2014, 23:54
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
|
Re: "Поднять" USB на stm32f4-discovery с помощью Keil
Сообщение от Easyrider83
|
Да походу забыл 1.5K на USBDP подать.
|
Паш, там встроенный пуллап.
__________________
Осторожно , злой кот
|
|
|
|
05.02.2014, 00:04
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: "Поднять" USB на stm32f4-discovery с помощью Keil
Сообщение от dosikus
|
Паш, там встроенный пуллап.
|
Если он включен, устройство должно по крайней мере подключиться. Пусть даже и не работать.
|
|
|
|
05.02.2014, 00:42
|
|
Временная регистрация
Регистрация: 08.12.2006
Сообщений: 84
Сказал спасибо: 5
Сказали Спасибо 13 раз(а) в 10 сообщении(ях)
|
Re: "Поднять" USB на stm32f4-discovery с помощью Keil
Ребят, я вроде знаю разницу между otg, хостом и девайсом, только причем тут это? Изначально с заводской прошивкой устройство работало как мышка, двигало курсор снимая данные с датчиков ускорения. Так что аппаратно всё правильно и компьютер к правильному порту подключаю.
Вот фотка моей платы:
На ней именно такой чип, как я указал ранее.
Или я упускаю какую-то очевидную вещь?
|
|
|
|
05.02.2014, 09:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: "Поднять" USB на stm32f4-discovery с помощью Keil
Сообщение от kaf-0
|
Для начала нужно "поднять" USB, примеры вроде есть, но или не под мой чип или не под эту среду, поэтому создаю проект с нуля по образу и подобию как в примерах. Начинаю с простого - HID.
.....
Что я мог забыть? Сделать не правильно?
|
Я бы робко порекомендовал для начала все-таки запустить пример. Следущими действиями уже будут попытки разобраться, что и как в нем организовано и взаимосвязано. И напоследок уже начать "обтесывать" глыбу, отсекая лишнее для вас.
Опять-таки на мой взгляд, внеся изначально достаточно много неявных изменений вы обречены на долгие поиски "что там не так?"
Если вы сможете в начале пути выяснить "или не под мой чип или не под эту среду" - это уже будет больше чем полдела.
__________________
С уважением,
Vic / ut1wpr
Последний раз редактировалось ut1wpr; 05.02.2014 в 09:33.
|
|
|
|
05.02.2014, 09:49
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
|
Re: "Поднять" USB на stm32f4-discovery с помощью Keil
ut1wpr, Угу , обтесывать пример с SPL это долго,нудно и безрезультатно.
Есть пример на Keil'овскую демо борду -MCBSTM32F400
Находиться здесь :
Keil\ARM\Pack\Keil\STM32F4xx_DFP\1.0.5\Boards\Keil \MCBSTM32F400\Middleware\USB\Device\HID
__________________
Осторожно , злой кот
|
|
|
|
05.02.2014, 10:48
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: "Поднять" USB на stm32f4-discovery с помощью Keil
Проверьте в режиме отладки установлен ли бит 12 PPWR в регистре OTG_FS Host port control and status register (OTG_FS_HPRT)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:39.
|
|