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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

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

тяжело что-то мне даются библиотеки HAL под STM32, с использованием которых генерит код STM32CubeMX. убил целый день на светодиоды. оказалось, что перепутал местами вызовы MX_DMA_Init() и MX_TIM2_Init(). из-за этого запись в регистры DMA контроллера в TIM2_Init() не работала, так как он включался позже... но, в итоге, заработало. остался на плате с stm32f103 один (!) ниспользуемый пин - повесил на него цепочку WS2812B: RGB светодиоды со встроенным контроллером. цепляются последовательно тремя проводами, адресуются независимо, 24бит цвет. количество (для панели управления, во всяком случае) можно считать неограничено.
leds.jpg (7363 просмотра) <a class='original' href='./download/file.php?id=113331&mode=view' target=_blank>Загрузить оригинал (136.27 КБ)</a>
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1646
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

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

Сообщение N1X »

А ЖКшка тоже от панели кстати есть? А то такую мелкую еще найти нужно... Там же дюймов 10 или 12 диагональ вроде...
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

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

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

но окно придется как-то подрезать миллиметров на 5 - перекрывает картинку. оно в оригинале под ЭЛТ...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

N1X писал(а):А ЖКшка тоже от панели кстати есть? А то такую мелкую еще найти нужно... Там же дюймов 10 или 12 диагональ вроде...
Их полно у китайцев
merkwurdigliebe писал(а):но окно придется как-то подрезать миллиметров на 5 - перекрывает картинку. оно в оригинале под ЭЛТ...
Или интерфейс на экране уменьшить

А как галетник подключен?
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

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

Сообщение aftaev »

merkwurdigliebe писал(а):но окно придется как-то подрезать миллиметров на 5 - перекрывает картинку.
А Lcnc в 8" залазиит, или будешь свой axis делать? У меня 10" и для Lcnc маловато как то.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

PKM писал(а):Или интерфейс на экране уменьшить
а можно как-то в иксах рабочее поле на экране уменьшить? чтобы края растра не использовались. как оверскан на на теликах был... надо погуглить
PKM писал(а):А как галетник подключен?
как потенциометр к АЦП
rot-switch.jpg (7290 просмотров) <a class='original' href='./download/file.php?id=113348&mode=view' target=_blank>Загрузить оригинал (111.03 КБ)</a>
aftaev писал(а):А Lcnc в 8" залазиит, или будешь свой axis делать?
в 1024x768 да, но мелковато получается. да, хочу GUI перерисовать в перспективе...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

Есть чипы для LCD, умеющие преобразовывать картинку в меньшее разрешение (апроксимация). Например у меня есть мониторы с реальным разрешением 1024x768, но умеющие показывать FullHD картинку.
merkwurdigliebe писал(а):в 1024x768 да, но мелковато получается. да, хочу GUI перерисовать в перспективе...
gmocappy помещается...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

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

Сообщение aftaev »

UAVpilot писал(а):gmocappy помещается...
merkwurdigliebe, свое сделает по круче, а Nick САМ обещанный допишет :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

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

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

Есть чипы для LCD, умеющие преобразовывать картинку в меньшее разрешение (апроксимация). Например у меня есть мониторы с реальным разрешением 1024x768, но умеющие показывать FullHD картинку.
нет, масштабирование не пойдет - пикселы должны остаться пикселами. нужно размер фреймбуфера ограничить, скажем до 962х744. и чем раньше в процессе загрузки линукса это произойдет - тем лучше. в идеале вообще бы в EDID прописать, но боюсь что не получится с таким кривым размером.
Последний раз редактировалось merkwurdigliebe 04 июн 2017, 17:26, всего редактировалось 1 раз.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

merkwurdigliebe писал(а):нужно размер растра ограничить, скажем до 962х744
В конфиге xorg укажи любое желаемое разрешение. Но это не поможет "впихнуть" в это разрешение прикладной интерфейс.
merkwurdigliebe писал(а):в идеале вообще бы в EDID прописать, но боюсь что не получится с таким кривым размером.
Можно, но не так просто. Только ради чего?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

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

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
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

merkwurdigliebe писал(а):а что конкретно не просто?
Нестандартное разрешение.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

ну и что, что нестандартное?
либо это возможно и оно будет работать как я хочу, либо невозможно и работать не будет. я вот пока не знаю. надо взять и попробовать. очень просто, на самом деле ;)
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

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

https://youtu.be/Shkv0kA-pYg
Вложения
panel1.jpg (6893 просмотра) <a class='original' href='./download/file.php?id=119901&mode=view' target=_blank>Загрузить оригинал (147.19 КБ)</a>
panel2.jpg (6893 просмотра) <a class='original' href='./download/file.php?id=119902&mode=view' target=_blank>Загрузить оригинал (142.15 КБ)</a>
panel3.jpg (6893 просмотра) <a class='original' href='./download/file.php?id=119903&mode=view' target=_blank>Загрузить оригинал (236.56 КБ)</a>
panel4.jpg (6893 просмотра) <a class='original' href='./download/file.php?id=119904&mode=view' target=_blank>Загрузить оригинал (230.32 КБ)</a>
panel5.jpg (6893 просмотра) <a class='original' href='./download/file.php?id=119905&mode=view' target=_blank>Загрузить оригинал (253.67 КБ)</a>
panel6.jpg (6893 просмотра) <a class='original' href='./download/file.php?id=119906&mode=view' target=_blank>Загрузить оригинал (267.29 КБ)</a>
panel7.jpg (6893 просмотра) <a class='original' href='./download/file.php?id=119907&mode=view' target=_blank>Загрузить оригинал (163.89 КБ)</a>
yop1.jpg (6893 просмотра) <a class='original' href='./download/file.php?id=119909&mode=view' target=_blank>Загрузить оригинал (143.62 КБ)</a>
yop2.jpg (6893 просмотра) <a class='original' href='./download/file.php?id=119910&mode=view' target=_blank>Загрузить оригинал (138.43 КБ)</a>
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

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

Сообщение aftaev »

merkwurdigliebe писал(а):теперь бы время найти с интерфейсом че-нить сделать, с Axis совсем грустно...
:)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
masterlomaster
Новичок
Сообщения: 15
Зарегистрирован: 23 мар 2015, 16:23
Репутация: 3
Настоящее имя: Виктор
Откуда: Кыргызстан
Контактная информация:

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

Сообщение masterlomaster »

Впечатляет результат проделанной работы. Тоже заразился изготовить контроллер для панели, которая уже несколько лет лежит и ждет. Приобрел плату как у вас, неделю изучал доки по HID и как работать с STM32. Установил Cube. Сформировал проект и столкнулся с трудностями, что же в нем поправить, чтобы получилась Hid клавиатура. Кроме того, у вас еще джойстик и энкодер работают вместе. Это все работает через один USB интерфейс ? Примеров в Инете очень мало. Можете вы поделиться исходниками или примерами как опрашиваете органы управления, какие используете дескрипторы и какими репортами информация об опрошенной периферии передается на PC ?
Моя панель:
pult.jpg (6719 просмотров) <a class='original' href='./download/file.php?id=120546&mode=view' target=_blank>Загрузить оригинал (487.85 КБ)</a>
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 609
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

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

Сообщение merkwurdigliebe »

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

у меня три интерфейса: стандартная клавиатура (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

};
masterlomaster
Новичок
Сообщения: 15
Зарегистрирован: 23 мар 2015, 16:23
Репутация: 3
Настоящее имя: Виктор
Откуда: Кыргызстан
Контактная информация:

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

Сообщение masterlomaster »

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

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

Сообщение vinhest »

смименс SCD 1597
жк панелька промышленная
интерфейсов куча пустых
но что и зачем
схем разуметцо не найти
Вложения
2017-01-17-1360[1].jpg (5928 просмотров) <a class='original' href='./download/file.php?id=131965&mode=view' target=_blank>Загрузить оригинал (1.21 МБ)</a>
Аватара пользователя
megagad
Почётный участник
Почётный участник
Сообщения: 3207
Зарегистрирован: 05 апр 2014, 18:57
Репутация: 712
Откуда: Реуспублика Крым, Бахчисарай.
Контактная информация:

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

Сообщение megagad »

vinhest писал(а):жк панелька промышленная
интерфейсов куча пустых
но что и зачем
схем разуметцо не найти
Слева плата "подсветки"(инвертор ламп) с "дутышами" - менять электролиты.
Внизу - блок питания.
Справа - обычный "одноплатник" - компьютер, разъёмы все стандартизированны(перепутать сложно)! зелёная платка над компом - либо палата "клавиатуры", либо "сенсора"(смотря что на морде приделано).
We Do What We Must, Because We Can!
Причинять добро, наносить пользу и подвергать ласке.
Ответить

Вернуться в «LinuxCNC»