контроллер панели управления на STM32

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

контроллер панели управления на STM32

Сообщение merkwurdigliebe » 04 июн 2017, 06:33

про то, как делаю контроллер мембранной клавиатуры от Fagor 8035M с USB HID интерфейсом к компу.

тяжело что-то мне даются библиотеки HAL под STM32, с использованием которых генерит код STM32CubeMX. убил целый день на светодиоды. оказалось, что перепутал местами вызовы MX_DMA_Init() и MX_TIM2_Init(). из-за этого запись в регистры DMA контроллера в TIM2_Init() не работала, так как он включался позже... но, в итоге, заработало. остался на плате с stm32f103 один (!) ниспользуемый пин - повесил на него цепочку WS2812B: RGB светодиоды со встроенным контроллером. цепляются последовательно тремя проводами, адресуются независимо, 24бит цвет. количество (для панели управления, во всяком случае) можно считать неограничено.

контроллер панели управления на STM32 leds.jpg
merkwurdigliebe
Опытный
 
Сообщения: 180
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 122

Re: контроллер панели управления на STM32

Сообщение N1X » 04 июн 2017, 07:13

А ЖКшка тоже от панели кстати есть? А то такую мелкую еще найти нужно... Там же дюймов 10 или 12 диагональ вроде...
Аватара пользователя
N1X
Мастер
 
Сообщения: 2381
Зарегистрирован: 16 фев 2015, 21:19
Откуда: Беларусь, Гомель
Репутация: 1157
Настоящее имя: Владимир

Re: контроллер панели управления на STM32

Сообщение merkwurdigliebe » 04 июн 2017, 07:30

8", IPS, 1024x768. типа ткой:

http://www.ebay.com/itm/292126880089

но окно придется как-то подрезать миллиметров на 5 - перекрывает картинку. оно в оригинале под ЭЛТ...
merkwurdigliebe
Опытный
 
Сообщения: 180
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 122

Re: контроллер панели управления на STM32

Сообщение PKM » 04 июн 2017, 11:13

N1X писал(а):А ЖКшка тоже от панели кстати есть? А то такую мелкую еще найти нужно... Там же дюймов 10 или 12 диагональ вроде...

Их полно у китайцев
merkwurdigliebe писал(а):но окно придется как-то подрезать миллиметров на 5 - перекрывает картинку. оно в оригинале под ЭЛТ...

Или интерфейс на экране уменьшить

А как галетник подключен?
Аватара пользователя
PKM
Почётный участник
Почётный участник
 
Сообщения: 4094
Зарегистрирован: 31 мар 2011, 18:11
Откуда: Украина
Репутация: 624
Медальки:
Настоящее имя: Андрей

Re: контроллер панели управления на STM32

Сообщение aftaev » 04 июн 2017, 11:50

merkwurdigliebe писал(а):но окно придется как-то подрезать миллиметров на 5 - перекрывает картинку.

А Lcnc в 8" залазиит, или будешь свой axis делать? У меня 10" и для Lcnc маловато как то.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 27241
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 4394
Медальки:

Re: контроллер панели управления на STM32

Сообщение merkwurdigliebe » 04 июн 2017, 15:26

PKM писал(а):Или интерфейс на экране уменьшить


а можно как-то в иксах рабочее поле на экране уменьшить? чтобы края растра не использовались. как оверскан на на теликах был... надо погуглить

PKM писал(а):А как галетник подключен?


как потенциометр к АЦП
контроллер панели управления на STM32 rot-switch.jpg


aftaev писал(а):А Lcnc в 8" залазиит, или будешь свой axis делать?


в 1024x768 да, но мелковато получается. да, хочу GUI перерисовать в перспективе...
merkwurdigliebe
Опытный
 
Сообщения: 180
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 122

Re: контроллер панели управления на STM32

Сообщение UAVpilot » 04 июн 2017, 15:47

merkwurdigliebe писал(а):а можно как-то в иксах рабочее поле на экране уменьшить? чтобы края растра не использовались. как оверскан на на теликах был... надо погуглить

В смысле разрешение оставить прежнее, а размер пикселей уменьшить?.. :)

Есть чипы для LCD, умеющие преобразовывать картинку в меньшее разрешение (апроксимация). Например у меня есть мониторы с реальным разрешением 1024x768, но умеющие показывать FullHD картинку.

merkwurdigliebe писал(а):в 1024x768 да, но мелковато получается. да, хочу GUI перерисовать в перспективе...

gmocappy помещается...
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15317
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3738
Медальки:
Настоящее имя: Сергей

Re: контроллер панели управления на STM32

Сообщение aftaev » 04 июн 2017, 15:56

UAVpilot писал(а):gmocappy помещается...

merkwurdigliebe, свое сделает по круче, а Nick САМ обещанный допишет :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 27241
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 4394
Медальки:

Re: контроллер панели управления на STM32

Сообщение merkwurdigliebe » 04 июн 2017, 16:31

UAVpilot писал(а):merkwurdigliebe писал(а):
а можно как-то в иксах рабочее поле на экране уменьшить? чтобы края растра не использовались. как оверскан на на теликах был... надо погуглить

В смысле разрешение оставить прежнее, а размер пикселей уменьшить?..

Есть чипы для LCD, умеющие преобразовывать картинку в меньшее разрешение (апроксимация). Например у меня есть мониторы с реальным разрешением 1024x768, но умеющие показывать FullHD картинку.


нет, масштабирование не пойдет - пикселы должны остаться пикселами. нужно размер фреймбуфера ограничить, скажем до 962х744. и чем раньше в процессе загрузки линукса это произойдет - тем лучше. в идеале вообще бы в EDID прописать, но боюсь что не получится с таким кривым размером.
Последний раз редактировалось merkwurdigliebe 04 июн 2017, 17:26, всего редактировалось 1 раз.
merkwurdigliebe
Опытный
 
Сообщения: 180
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 122

Re: контроллер панели управления на STM32

Сообщение UAVpilot » 04 июн 2017, 16:50

merkwurdigliebe писал(а):нужно размер растра ограничить, скажем до 962х744

В конфиге xorg укажи любое желаемое разрешение. Но это не поможет "впихнуть" в это разрешение прикладной интерфейс.

merkwurdigliebe писал(а):в идеале вообще бы в EDID прописать, но боюсь что не получится с таким кривым размером.

Можно, но не так просто. Только ради чего?..
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15317
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3738
Медальки:
Настоящее имя: Сергей

Re: контроллер панели управления на STM32

Сообщение merkwurdigliebe » 04 июн 2017, 17:18

в общем, как минимум можно ограничить картинку так:

xrandr --fb 962x744 --output VGA1 --mode 1024x768 --transform 1,0,-16,0,1,-12,0,0,1

с иксовым конфигом потом поробую.

UAVpilot писал(а):Можно, но не так просто. Только ради чего?..


ради того, чтобы сообщения BIOS, GRUB и линуксовой текстовой консоли не уходили за видимый край экрана, а были видны.

а что конкретно не просто? прошить I2C EEPROM и подключить к линиям DDC Clock, DDC Data на DVI разъеме - совсем не сложно. но сомневаюсь что там можно описать штуку, аналогичную xrandr...

наверное попробую сделать так:
указать в EDID единственное поддерживаемое разрешение 800х600. масштабирование в LCD панели можно выключить, тогда картинка будет в середине экрана. а в иксах принудительно прописать 962x744
merkwurdigliebe
Опытный
 
Сообщения: 180
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 122

Re: контроллер панели управления на STM32

Сообщение UAVpilot » 04 июн 2017, 22:56

merkwurdigliebe писал(а):а что конкретно не просто?

Нестандартное разрешение.
1. Робот не может ответить отказом на предложение человека выпить или своим бездействием допустить, чтобы человек напился один.
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 15317
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 3738
Медальки:
Настоящее имя: Сергей

Re: контроллер панели управления на STM32

Сообщение merkwurdigliebe » 05 июн 2017, 01:23

ну и что, что нестандартное?
либо это возможно и оно будет работать как я хочу, либо невозможно и работать не будет. я вот пока не знаю. надо взять и попробовать. очень просто, на самом деле ;)
merkwurdigliebe
Опытный
 
Сообщения: 180
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 122

Re: контроллер панели управления на STM32

Сообщение merkwurdigliebe » 07 сен 2017, 19:31

запилил, наконец, панельку. STMку так и оставил в виде модуля, в панельке не перфборде. теперь бы время найти с интерфейсом че-нить сделать, с Axis совсем грустно...

https://youtu.be/Shkv0kA-pYg
Вложения
контроллер панели управления на STM32 panel1.jpg
контроллер панели управления на STM32 panel2.jpg
контроллер панели управления на STM32 panel3.jpg
контроллер панели управления на STM32 panel4.jpg
контроллер панели управления на STM32 panel5.jpg
контроллер панели управления на STM32 panel6.jpg
контроллер панели управления на STM32 panel7.jpg
контроллер панели управления на STM32 yop1.jpg
контроллер панели управления на STM32 yop2.jpg
merkwurdigliebe
Опытный
 
Сообщения: 180
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 122

Re: контроллер панели управления на STM32

Сообщение aftaev » 07 сен 2017, 19:45

merkwurdigliebe писал(а):теперь бы время найти с интерфейсом че-нить сделать, с Axis совсем грустно...

:)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
 
Сообщения: 27241
Зарегистрирован: 04 апр 2010, 19:22
Откуда: Казахстан. Шымкент
Репутация: 4394
Медальки:

Re: контроллер панели управления на STM32

Сообщение masterlomaster » 19 сен 2017, 18:14

Впечатляет результат проделанной работы. Тоже заразился изготовить контроллер для панели, которая уже несколько лет лежит и ждет. Приобрел плату как у вас, неделю изучал доки по HID и как работать с STM32. Установил Cube. Сформировал проект и столкнулся с трудностями, что же в нем поправить, чтобы получилась Hid клавиатура. Кроме того, у вас еще джойстик и энкодер работают вместе. Это все работает через один USB интерфейс ? Примеров в Инете очень мало. Можете вы поделиться исходниками или примерами как опрашиваете органы управления, какие используете дескрипторы и какими репортами информация об опрошенной периферии передается на PC ?
Моя панель:
контроллер панели управления на STM32 pult.jpg
masterlomaster
Новичок
 
Сообщения: 12
Зарегистрирован: 23 мар 2015, 16:23
Откуда: Кыргызстан
Репутация: 3
Настоящее имя: Виктор

Re: контроллер панели управления на STM32

Сообщение merkwurdigliebe » 20 сен 2017, 15:31

исходники выложу на гитхаб на днях. но там мутенеько все на данный момент, торопился :)

у меня три интерфейса: стандартная клавиатура (boot keyboard), мышь с колесом и некая солянка из разных элементов. клавиатура и мышь (эмулируемая джойстиком и энкодером) - для системы. третий интерфейс для hal_input - определенные там юсаджи мапятся на хал пины. один из светодиодов деграется из hal, чтобы сообщить контроллеру что работает linuxcnc. в этом режиме контроллер перестает слать события о функциональных клвишах, мыши и энкодере через первые два интерфейса, а шлет их через третий.

сомнительное решение, на самом деле. мне почему-то непременно хотелось использовать input subsystem и hal_input... надо, наверное, не изгалаться и просто сделать третий интерфейс custom hid и свой hal модуль к нему. в котором все пины нормально обозвать.

Код: Выделить всёРазвернуть
__ALIGN_BEGIN static uint8_t HID_KEYBOARD_ReportDesc[] __ALIGN_END = {
   // From p69 of http://www.usb.org/developers/devclass_docs/HID1_11.pdf
   0x05, 0x01,   // Usage Page (Generic Desktop),
   0x09, 0x06,   // Usage (Keyboard),
   0xA1, 0x01,   // Collection (Application),

   0x05, 0x07,   // Usage Page (Key Codes);
   0x19, 0xE0,   // Usage Minimum (224),   - CtrlL
   0x29, 0xE7,   // Usage Maximum (231), - WinR
   0x15, 0x00,   // Logical Minimum (0),
   0x25, 0x01,   // Logical Maximum (1),   
   0x75, 0x01,   // Report Size (1),
   0x95, 0x08,   // Report Count (8),   - 8 bits modifiers
   0x81, 0x02,   // Input (Data, Variable, Absolute), ;Modifier byte

   0x95, 0x01,   // Report Count (1),
   0x75, 0x08,   // Report Size (8),
   0x81, 0x01,   // Input (Constant), Reserved byte

   0x95, 0x05,   // Report Count (5), ???
   0x75, 0x01,   // Report Size (1),
   0x05, 0x08,   // Usage Page (Page# for LEDs),
   0x19, 0x01,   // Usage Minimum (1),
   0x29, 0x05,   // Usage Maximum (5),
   0x91, 0x02,   // Output (Data, Variable, Absolute), ;LED report
   0x95, 0x01,   // Report Count (1),
   0x75, 0x03,   // Report Size (3),
   0x91, 0x01,   // Output (Constant), ;LED report padding

   0x95, 0x06,   // Report Count (6),
   0x75, 0x08,   // Report Size (8),
   0x15, 0x00,   // Logical Minimum (0),
   0x25, 0x65,   // Logical Maximum(101),
   0x05, 0x07,   // Usage Page (Key Codes),
   0x19, 0x00,   // Usage Minimum (0),
   0x29, 0x65,   // Usage Maximum (101),
   0x81, 0x00,   // Input (Data, Array), ;Key arrays (6 bytes)
   0xc0      // End Collection
};

__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[] __ALIGN_END = {
   0x05, 0x01,   // USAGE_PAGE (Generic Desktop)
   0x09, 0x02,   // USAGE (Mouse)
   0xa1, 0x01,   // COLLECTION (Application)
   0x09, 0x01,   //   USAGE (Pointer)
   0xa1, 0x00,   //   COLLECTION (Physical)

   0x05, 0x09,   //     USAGE_PAGE (Button)
   0x19, 0x01,   //     USAGE_MINIMUM (Button 1)
   0x29, 0x02,   //     USAGE_MAXIMUM (Button 2)
   0x15, 0x00,   //     LOGICAL_MINIMUM (0)
   0x25, 0x01,   //     LOGICAL_MAXIMUM (1)
   0x95, 0x02,   //     REPORT_COUNT (2)
   0x75, 0x01,   //     REPORT_SIZE (1)
   0x81, 0x02,   //     INPUT (Data,Var,Abs)      left, right buttons
   0x95, 0x01,   //     Report Count (1),
   0x75, 0x06,   //     Report Size (6),
   0x81, 0x01,   //     Input (Constant), Reserved byte   buttons padding

   0x05, 0x01,   //     USAGE_PAGE (Generic Desktop)
   0x09, 0x30,   //     USAGE (X)
   0x09, 0x31,   //     USAGE (Y)
   0x09, 0x38,   //     USAGE (Wheel)
   0x15, 0x81,   //     LOGICAL_MINIMUM (-127)
   0x25, 0x7f,   //     LOGICAL_MAXIMUM (127)
   0x75, 0x08,   //     REPORT_SIZE (8)
   0x95, 0x03,   //     REPORT_COUNT (3)
   0x81, 0x06,   //     INPUT (Data,Var,Rel)      x, y, encoder wheel

   0xc0,      //   END_COLLECTION
   0xc0,      // END_COLLECTION
};

__ALIGN_BEGIN static uint8_t HID_CUSTOM_ReportDesc[] __ALIGN_END = {
   0x05, 0x01,   // USAGE_PAGE (Generic Desktop)
   0x09, 0x02,   // USAGE (Mouse)
   0xa1, 0x01,   // COLLECTION (Application)
   0x05, 0x09,   //     USAGE_PAGE (Button)
   0x19, 0x21,   //     USAGE_MINIMUM (Button 1)
   0x29, 0x23,   //     USAGE_MAXIMUM (Button 3)
   0x15, 0x00,   //     LOGICAL_MINIMUM (0)
   0x25, 0x01,   //     LOGICAL_MAXIMUM (1)
   0x75, 0x01,   //     REPORT_SIZE (1)
   0x95, 0x03,   //     REPORT_COUNT (3)
   0x81, 0x02,   //     INPUT (Data,Var,Abs)      left-right-middle buttons:3
   
   0x05, 0x01,   //     USAGE_PAGE (Generic Desktop)
   0x09, 0x37,   //     USAGE (Dial)
   0x15, 0x00,   //     LOGICAL_MINIMUM (0)
   0x25, 0x17,   //     LOGICAL_MAXIMUM (23)
   0x75, 0x05,   //     REPORT_SIZE (5)
   0x95, 0x01,   //     REPORT_COUNT (1)
   0x81, 0x02,   //     INPUT (Data,Var,Abs)      dial:5
   
   0x09, 0x33,   //     USAGE (RX)
   0x09, 0x34,   //     USAGE (RY)
   0x15, 0x81,   //     LOGICAL_MINIMUM (-127)
   0x25, 0x7f,   //     LOGICAL_MAXIMUM (127)
   0x75, 0x08,   //     REPORT_SIZE (8)
   0x95, 0x02,   //     REPORT_COUNT (2)
   0x81, 0x02,   //     INPUT (Data,Var,Abs)      x, y joystick
   
   0x09, 0x35,   //     USAGE (RZ)
   0x15, 0x81,   //     LOGICAL_MINIMUM (-127)
   0x25, 0x7f,   //     LOGICAL_MAXIMUM (127)
   0x75, 0x08,   //     REPORT_SIZE (8)
   0x95, 0x01,   //     REPORT_COUNT (1)
   0x81, 0x06,   //     INPUT (Data,Var,Rel)      encoder wheel

   // special keys and buttons
   0x05, 0x09,   //   USAGE_PAGE (Button)
   0x19, 0xc1,   //     USAGE_MINIMUM (0)      KEY_FN ..
   0x29, 0xd5,   //     USAGE_MAXIMUM (23)   KEY_FN_B
   0x1A, 0xB1, 0x01,  //   Usage Minimum (0x01B0)   BTN_TRIGGER_HAPPY1 (linux hid_input.c bug exploit)
   0x2A, 0xD8, 0x01,  //   Usage Maximum (0x01D7)   BTN_TRIGGER_HAPPY40
   0x15, 0x01,   //   LOGICAL_MINIMUM (1)
   0x25, 0xff,   //   LOGICAL_MAXIMUM (40)
   0x75, 0x08,   //   REPORT_SIZE (8)
   0x95, 0x04,   //   REPORT_COUNT (4)         4 simultaneous keys
   0x81, 0x00,   //   INPUT (Data,Ary,Abs)

   // LEDs
   0x05, 0x08,   // Usage Page (Page# for LEDs),
   0x19, 0x01,   // Usage Minimum (1),
   0x29, 0x05,   // Usage Maximum (5), NUML, CAPSL, SCROLLL, COMPOSE, KANA
   0x09, 0x27,   //     USAGE LED SLEEP
   0x09, 0x4c,   //     USAGE LED SUSPEND
   0x09, 0x09,   //     USAGE LED MUTE
   0x09, 0x4b,   //   0x4b // misc - unused
   0x09, 0x19,   //   0x19 // mail - unused
   0x09, 0x4d,   //   0x4d // charging - watchdog
   0x15, 0x00,   //     LOGICAL_MINIMUM
   0x25, 0x01,   //     LOGICAL_MAXIMUM
   0x75, 0x01,   // Report Size (1),
   0x95, 0x0b,   // Report Count (11)
   0x91, 0x02,   // Output (Data, Variable, Absolute), ; LED report

   0xc0,                           // END_COLLECTION
};

// USB HID device Configuration Descriptor
__ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[] __ALIGN_END =
{
   0x09,      // bLength: Configuration Descriptor size
   USB_DESC_TYPE_CONFIGURATION,   // =2 bDescriptorType: Configuration
   (0x5b),      // (+0x02) wTotalLength: Bytes returned
   0x00,
   0x03,      // bNumInterfaces: 3 interfaces
   0x01,      // bConfigurationValue: Configuration value
   0x03,      // iConfiguration: Index of string descriptor describing the configuration
   0xa0,      // bmAttributes: bus powered and Support Remote Wake-up
   0x64,      // MaxPower 200 mA: this current is used for detecting Vbus

   // +0x09 Descriptor of Keyboard interface 1 ######################################
   USB_LEN_IF_DESC, // =9 bLength: Interface Descriptor size
   USB_DESC_TYPE_INTERFACE,// =4 bDescriptorType: Interface descriptor type
   0x00,      // bInte: Number of Interface
   0x00,      // bAlternateSetting: Alternate setting*/
   0x01,      // bNumEndpoints
   0x03,      // bInterfaceClass: HID
   0x01,      // bInterfaceSubClass : 1=BOOT, 0=no boot
   0x01,      // nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse
   0x00,      // iInterface: Index of string descriptor
   // +0x12 - Descriptor of Keyboard HID
#define HID0_DESC_OFFS 0x12
   USB_LEN_CFG_DESC, // =9 bLength: HID Descriptor size
   HID_DESCRIPTOR_TYPE, // =0x21 bDescriptorType: HID
   0x11,      // bcdHID: HID Class Spec release number
   0x01,
   0x00,      // bCountryCode: Hardware target country
   0x01,      // bNumDescriptors: Number of HID class descriptors to follow
   HID_REPORT_DESC, // =0x22 bDescriptorType
   sizeof(HID_KEYBOARD_ReportDesc),
   0x00,      // wItemLength: Total length of Report descriptor
#define HID0_DESC_END 0x1b
   // +0x1b - Descriptor of Keyboard endpoint
   USB_LEN_EP_DESC,   // =7 bLength: Endpoint Descriptor size
   USB_DESC_TYPE_ENDPOINT, // =5 bDescriptorType:
   HID_EPIN_ADDR,      // =0x81 bEndpointAddress: Endpoint Address (IN)
   0x03,         // bmAttributes: Interrupt endpoint
   HID_EPIN_SIZE,      // =8 wMaxPacketSize: 8 Byte max
   0x00,
   HID_FS_BINTERVAL,   // =10 bInterval: Polling Interval (10 ms)

   // +0x22 - Descriptor of Mouse interface 2 ######################################
   USB_LEN_IF_DESC,   // =9 bLength: Interface Descriptor size
   USB_DESC_TYPE_INTERFACE,// =4 bDescriptorType: Interface descriptor type
   0x01,//!!!      // bInterfaceNumber: Number of Interface
   0x00,         // bAlternateSetting: Alternate setting
   0x01,         // bNumEndpoints
   0x03,         // bInterfaceClass: HID
   0x00,         // bInterfaceSubClass : 1=BOOT, 0=no boot
   0x00,         // nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse
   0x00,         // iInterface: Index of string descriptor
   // +0x2b Descriptor of Keyboard HID 2
#define HID1_DESC_OFFS 0x2b
   USB_LEN_CFG_DESC,   // =9 bLength: HID Descriptor size
   HID_DESCRIPTOR_TYPE,   // =0x21 bDescriptorType: HID
   0x11,         // bcdHID: HID Class Spec release number
   0x01,
   0x00,         // bCountryCode: Hardware target country
   0x01,         // bNumDescriptors: Number of HID class descriptors to follow
   HID_REPORT_DESC,   // =0x22 bDescriptorType
   sizeof(HID_MOUSE_ReportDesc),
   0x00,          // wItemLength: Total length of Report descriptor
#define HID1_DESC_END 0x34
   // +0x34 Descriptor of Keyboard endpoint 2
   USB_LEN_EP_DESC,   // =7 bLength: Endpoint Descriptor size
   USB_DESC_TYPE_ENDPOINT,   // =5 bDescriptorType:
   HID_EPIN_ADDR+1,   // =0x82 bEndpointAddress: Endpoint Address (IN)
   0x03,         // bmAttributes: Interrupt endpoint
   HID_EPIN_SIZE,      // =8 wMaxPacketSize: 8 Byte max
   0,
   HID_FS_BINTERVAL,   // =10 bInterval: Polling Interval (10 ms)

   // +0x3b - Descriptor of Custom interface 3 ######################################
   USB_LEN_IF_DESC,   // =9 bLength: Interface Descriptor size
   USB_DESC_TYPE_INTERFACE,// =4 bDescriptorType: Interface descriptor type
   0x02,//!!!      // bInterfaceNumber: Number of Interface
   0x00,         // bAlternateSetting: Alternate setting
   0x02,         // bNumEndpoints
   0x03,         // bInterfaceClass: HID
   0x00,         // bInterfaceSubClass : 1=BOOT, 0=no boot
   0x00,         // nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse
   0x00,         // iInterface: Index of string descriptor
   // +0x44 Descriptor of Custom HID 3
#define HID2_DESC_OFFS 0x44
   USB_LEN_CFG_DESC,   // =9 bLength: HID Descriptor size
   HID_DESCRIPTOR_TYPE,   // =0x21 bDescriptorType: HID
   0x11,         // bcdHID: HID Class Spec release number
   0x01,
   0x00,         // bCountryCode: Hardware target country
   0x01,         // bNumDescriptors: Number of HID class descriptors to follow
   HID_REPORT_DESC,   // =0x22 bDescriptorType
   sizeof(HID_CUSTOM_ReportDesc),
   0x00,          // wItemLength: Total length of Report descriptor
#define HID2_DESC_END 0x4d
   // +0x4d Descriptor of Custom endpoint
   USB_LEN_EP_DESC,   // =7 bLength: Endpoint Descriptor size
   USB_DESC_TYPE_ENDPOINT,   // =5 bDescriptorType:
   HID_EPIN_ADDR+2,   // =0x83 bEndpointAddress: Endpoint Address (IN)
   0x03,         // bmAttributes: Interrupt endpoint
   HID_EPIN_SIZE,      // =8 wMaxPacketSize: 8 Byte max
   0,
   HID_FS_BINTERVAL,   // =10 bInterval: Polling Interval (10 ms)
   // +0x54 Out Endpoint
   USB_LEN_EP_DESC,   // =7 bLength: Endpoint Descriptor size
   USB_DESC_TYPE_ENDPOINT,   // =5 bDescriptorType:
   HID_EPOUT_ADDR,      // =0x01 bEndpointAddress: Endpoint Address (OUT)
   0x03,         // bmAttributes: Interrupt endpoint
   HID_EPOUT_SIZE,      // =1 wMaxPacketSize: 2 Byte max
   0,
   HID_FS_BINTERVAL,   // =10 bInterval: Polling Interval (10 ms)
   // 0x5b

};
merkwurdigliebe
Опытный
 
Сообщения: 180
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 122

Re: контроллер панели управления на STM32

Сообщение masterlomaster » 20 сен 2017, 18:45

Спасибо за информацию. Уже есть во что вникать и разбираться. Если выложите исходники, буду очень благодарен. Пока еще нет опыта работы с STM-ками поэтому для изучения рабочий код будет полезен. Вы какую среду разработки (компиляции и отладки) используете ?
masterlomaster
Новичок
 
Сообщения: 12
Зарегистрирован: 23 мар 2015, 16:23
Откуда: Кыргызстан
Репутация: 3
Настоящее имя: Виктор

Re: контроллер панели управления на STM32

Сообщение vinhest » 09 фев 2018, 02:37

смименс SCD 1597
жк панелька промышленная
интерфейсов куча пустых
но что и зачем
схем разуметцо не найти
Вложения
контроллер панели управления на STM32 2017-01-17-1360[1].jpg
vinhest
Кандидат
 
Сообщения: 52
Зарегистрирован: 19 мар 2016, 23:15
Репутация: 3
Настоящее имя: oleg

Re: контроллер панели управления на STM32

Сообщение megagad » 09 фев 2018, 09:26

vinhest писал(а):жк панелька промышленная
интерфейсов куча пустых
но что и зачем
схем разуметцо не найти

Слева плата "подсветки"(инвертор ламп) с "дутышами" - менять электролиты.
Внизу - блок питания.
Справа - обычный "одноплатник" - компьютер, разъёмы все стандартизированны(перепутать сложно)! зелёная платка над компом - либо палата "клавиатуры", либо "сенсора"(смотря что на морде приделано).
We Do What We Must, Because We Can!
Причинять добро, наносить пользу и подвергать ласке.
Аватара пользователя
megagad
Почётный участник
Почётный участник
 
Сообщения: 2979
Зарегистрирован: 05 апр 2014, 18:57
Откуда: Реуспублика Крым, Бахчисарай.
Репутация: 667

След.

Вернуться в LinuxCNC

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

Зарегистрированные пользователи: Alexa [Bot], Bing [Bot], bolivar, frezeryga, Google [Bot], Majestic-12 [Bot], marselus, Masters, Nikomas, PKM, UAVpilot, Yandex [bot]

Поделиться

Reputation System ©'