CustomHID, SMT32FCubeMX, Kонечные коллекции не обнаружены.
- FantasyDD
- Нашел транзистор. Понюхал.
- Сообщения: 165
- Зарегистрирован: Чт фев 19, 2015 17:26:19
- Откуда: СССР
CustomHID, SMT32FCubeMX, Kонечные коллекции не обнаружены.
У меня камень stm32f103c8 уже неделю не могу найти рабочий пример CustomHID, а скомпилированый с SMT32FCubeMX CustomHID говорит в win8.1 64 “Запуск этого устройства невозможен. (Код 10) Найдена лишняя конечная коллекция, или конечные коллекции не обнаружены.”
В какую сторону рыть подскажите, очень очень надо передавать и принимать информацию с этого камня
В какую сторону рыть подскажите, очень очень надо передавать и принимать информацию с этого камня
- Реклама
- Pavel_1978
- Опытный кот
- Сообщения: 830
- Зарегистрирован: Пт ноя 16, 2007 11:21:37
- FantasyDD
- Нашел транзистор. Понюхал.
- Сообщения: 165
- Зарегистрирован: Чт фев 19, 2015 17:26:19
- Откуда: СССР
Re: CustomHID, SMT32FCubeMX, Kонечные коллекции не обнаружен
В SMT32FCubeMX очень много вкусностей, поддержка как минимум 2 компиляторов самого Кейла и IAR.
В приведенном примере только EmBlocks, ну или все самому собирать в других средах, я понимаю для профессионала этот пример проще.
Исходники в архиве. https://mega.co.nz/#!1UAXlTLQ!XbTa2KTuo ... 3WoVNKEc0E
Что не так, подскажите, очень очень надо.
В приведенном примере только EmBlocks, ну или все самому собирать в других средах, я понимаю для профессионала этот пример проще.
Исходники в архиве. https://mega.co.nz/#!1UAXlTLQ!XbTa2KTuo ... 3WoVNKEc0E
Что не так, подскажите, очень очень надо.
Re: CustomHID, SMT32FCubeMX, Kонечные коллекции не обнаружен
Поменяй размер буфера на 256. Мне помогло с CDC
static uint8_t buff_RX[256];
static uint8_t buff_TX[256];
static uint8_t buff_RX[256];
static uint8_t buff_TX[256];
- FantasyDD
- Нашел транзистор. Понюхал.
- Сообщения: 165
- Зарегистрирован: Чт фев 19, 2015 17:26:19
- Откуда: СССР
Re: CustomHID, SMT32FCubeMX, Kонечные коллекции не обнаружен
Все разобрался, es131245 все таки чутье программиста у тебя, спасибо за наводку. Проблема была в размере отсылаемой информации.
в USB HID есть дескриптор протокола он описывает какую информацию мы передаем и получаем.
в файле usbd_custom_hid_if.c указать
Далее нужно указать его длину
в файле usbd_conf.h
дескриптор сконфигурирован под демо программу USB HID Demonstrator от ST
----------------------С ЭТОГО МОМЕНТА НЕ ПРОВЕРЯЛ --------------------------------
Далее нужно реагировать на эти события, в том же файле usbd_custom_hid_if.c
гдето так
Еше раз спасибо за поддержку es131245 и Pavel_1978, и всем котам много валерьянки
в USB HID есть дескриптор протокола он описывает какую информацию мы передаем и получаем.
в файле usbd_custom_hid_if.c указать
Код: Выделить всё
__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
{
0x06, 0x00, 0xff, // USAGE_PAGE (Generic Desktop)
0x09, 0x01, // USAGE (Vendor Usage 1)
0xa1, 0x01, // COLLECTION (Application)
0x85, 0x01, // REPORT_ID (1)
0x09, 0x01, // USAGE (Vendor Usage 1)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0xb1, 0x82, // FEATURE (Data,Var,Abs,Vol)
0x85, 0x01, // REPORT_ID (1)
0x09, 0x01, // USAGE (Vendor Usage 1)
0x91, 0x82, // OUTPUT (Data,Var,Abs,Vol)
0x85, 0x02, // REPORT_ID (2)
0x09, 0x02, // USAGE (Vendor Usage 2)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0xb1, 0x82, // FEATURE (Data,Var,Abs,Vol)
0x85, 0x02, // REPORT_ID (2)
0x09, 0x02, // USAGE (Vendor Usage 2)
0x91, 0x82, // OUTPUT (Data,Var,Abs,Vol)
0x85, 0x03, // REPORT_ID (3)
0x09, 0x03, // USAGE (Vendor Usage 3)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0xb1, 0x82, // FEATURE (Data,Var,Abs,Vol)
0x85, 0x03, // REPORT_ID (3)
0x09, 0x03, // USAGE (Vendor Usage 3)
0x91, 0x82, // OUTPUT (Data,Var,Abs,Vol)
0x85, 0x04, // REPORT_ID (4)
0x09, 0x04, // USAGE (Vendor Usage 4)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x04, // REPORT_COUNT (4)
0x81, 0x82, // INPUT (Data,Var,Abs,Vol)
0xc0 // END_COLLECTION
};в файле usbd_conf.h
Код: Выделить всё
#define USBD_CUSTOM_HID_REPORT_DESC_SIZE 79----------------------С ЭТОГО МОМЕНТА НЕ ПРОВЕРЯЛ --------------------------------
Далее нужно реагировать на эти события, в том же файле usbd_custom_hid_if.c
Код: Выделить всё
static int8_t CUSTOM_HID_OutEvent_FS (uint8_t event_idx, uint8_t state)
{
/* USER CODE BEGIN 6 */
return (0);
/* USER CODE END 6 */
}Код: Выделить всё
switch(event_idx)
{
case 1: /* LED1 */
(state == 1) ? HAL_GPIO_WritePin (GPIOD,GPIO_PIN_12 ,GPIO_PIN_SET ) : HAL_GPIO_WritePin (GPIOD,GPIO_PIN_12 ,GPIO_PIN_RESET );
break;
case 2: /* LED2 */
(state == 1) ? HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13 ,GPIO_PIN_SET ) : HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13 ,GPIO_PIN_RESET );
break;
case 3: /* LED3 */
(state == 1) ? HAL_GPIO_WritePin (GPIOD,GPIO_PIN_14 ,GPIO_PIN_SET ) : HAL_GPIO_WritePin (GPIOD,GPIO_PIN_14 ,GPIO_PIN_RESET );
break;
default:
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_12 ,GPIO_PIN_RESET );
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13 ,GPIO_PIN_RESET );
HAL_GPIO_WritePin (GPIOD,GPIO_PIN_14 ,GPIO_PIN_RESET );
break;
}
return (0);Еше раз спасибо за поддержку es131245 и Pavel_1978, и всем котам много валерьянки
- Реклама
- FantasyDD
- Нашел транзистор. Понюхал.
- Сообщения: 165
- Зарегистрирован: Чт фев 19, 2015 17:26:19
- Откуда: СССР
Re: CustomHID, SMT32FCubeMX, Kонечные коллекции не обнаружен
Я прав или нет? Передавать можно максимум 1 байт и его REPORT_ID.
Re: CustomHID, SMT32FCubeMX, Kонечные коллекции не обнаружен
Слышал что 64 бита поэтому я на CDC 
- FantasyDD
- Нашел транзистор. Понюхал.
- Сообщения: 165
- Зарегистрирован: Чт фев 19, 2015 17:26:19
- Откуда: СССР
Re: CustomHID, SMT32FCubeMX, Kонечные коллекции не обнаружен
Все верно, нагуглил
, 64 байта и принимать и передавать можно.
Меня смущало что в CUSTOM_HID_OutEvent_FS (uint8_t event_idx, uint8_t state) переменная state один байт.
Код от CubeMX немного рассредоточен но вникнуть можно, немного подправил код и заработало, туда и обратно 64 байта - 1 idx .
Мне нравится HID своей гибкостью и если можно так сказать бездрайверностью
Меня смущало что в CUSTOM_HID_OutEvent_FS (uint8_t event_idx, uint8_t state) переменная state один байт.
Код от CubeMX немного рассредоточен но вникнуть можно, немного подправил код и заработало, туда и обратно 64 байта - 1 idx .
Мне нравится HID своей гибкостью и если можно так сказать бездрайверностью


