Nội dung liên quan
#HID
Finishing a Real HID Keyboard, from Keypress to Release
Turning key press and release events into HID reports and sending them to the host, plus what to watch out for with Boot Protocol and tap-style null reports.
Hoàn thành HID keyboard thật từ sự kiện nhấn thả phím
Chuyển sự kiện nhấn thả phím thành HID report rồi gửi đến host kèm theo các lưu ý về Boot Protocol hay tap-style null report.
CubeMX USB pitfalls thường gặp
Những điểm CubeMX không làm đúng khi generate USB code: HID mouse descriptor thay vì keyboard, NVIC không bật, Sof_enable DISABLE, USBD_static_malloc sai kích thước.
What Is a USB Descriptor?
The concept and structure of USB descriptors, explained with real examples. Includes a look at how Boot Protocol fits into the Configuration Descriptor.
USB Descriptor là gì?
Giải thích khái niệm và cấu trúc của USB Descriptor kèm ví dụ. Lưu ý về Boot Protocol trong Configuration Descriptor
What Is a USB Device Class and a Composite Device?
Common USB classes (HID, CDC, MSC, Vendor Specific), and how a composite device combines several classes on a single physical device.
USB Device Class và Composite Device là gì?
Các USB class thông dụng (HID, CDC, MSC, Vendor Specific) và composite device kết hợp nhiều class trên một thiết bị như thế nào.
STM32G0 USB Lab: Composite Device
USB composite device trên STM32G0B1RE: HID Keyboard + CDC log + EP0 Vendor Request + Vendor Bulk IN. Một codebase phát triển từ HID đơn đến debug tool hoàn chỉnh qua commit/tag.
Event-driven Keyboard Firmware là gì?
Pattern tách scan/debounce khỏi USB send bằng event queue: key event producer, consumer và cách giữ firmware responsive khi USB busy hoặc host không poll kịp.
Key Mapping trong keyboard firmware là gì?
Ánh xạ vị trí vật lý (row, col) sang HID Usage ID: keymap array, lookup table, layer và cách tổ chức mapping để dễ thay đổi mà không sửa scan logic.
USB Enumeration Debugging là gì?
Cách debug USB enumeration fail từ tool đến log: USBView trên Windows, Wireshark USB capture, sysfs trên Linux và cách đọc lỗi enumeration theo từng bước.
What Is the HID Keyboard Report Format?
The 8-byte structure of an HID keyboard report: the modifier byte, the reserved byte, and 6 keycode slots. How to send a report from STM32 middleware.
What Are HID Usage Tables?
Usage Page and Usage in HID, explained. A full lookup table for the Keyboard/Keypad Page 0x07: letters, digits, punctuation, numpad, lock keys, F-keys.
What Is a USB Descriptor Overview?
The hierarchical structure of USB descriptors: Device, Configuration, Interface, Endpoint - wTotalLength, bDescriptorType, and what commonly breaks enumeration.
What Is the USB Enumeration Process?
A sequence of requests over Endpoint 0, from device plug-in to the host assigning an address and picking a configuration - 7 steps, where things fail, and how to debug bottom-up.
HID Keyboard Report Format là gì?
Cấu trúc 8 byte của HID keyboard report: modifier byte, reserved byte, 6 keycode slot. Cách gửi report từ STM32 middleware.
HID Report Descriptor là gì?
HID Report Descriptor mô tả cấu trúc và ý nghĩa từng byte trong HID report. Usage Page, Usage, Collection, Input/Output — ngữ pháp tối thiểu cần biết để viết HID firmware.
HID Usage Tables là gì?
Giải thích Usage Page và Usage trong HID. Bảng tra đầy đủ Keyboard/Keypad Page 0x07 (chữ, số, dấu câu, numpad, phím khoá, F-key).
STM32 HAL USB Device Architecture là gì?
Kiến trúc STM32 USB Device Library: PCD driver, USBD core, class layer và callback flow. Firmware cần implement gì, middleware xử lý gì và cách debug đúng tầng.
USB Descriptor Overview là gì?
Cấu trúc phân cấp USB descriptor: Device → Configuration → Interface → Endpoint. wTotalLength, bDescriptorType, cách host đọc từng bước và điểm dễ gây enumeration fail.
USB Enumeration Process là gì?
Chuỗi hỏi–đáp qua Endpoint 0 từ lúc device cắm vào đến khi host giao address và chọn configuration. 7 bước, điểm nào dễ fail và cách debug từ dưới lên.
USB Transfer Types là gì?
So sánh Control, Interrupt, Bulk và Isochronous transfer: dùng ở đâu, đảm bảo gì, và dễ debug sai ở điểm nào — đặc biệt là cách bInterval thực sự hoạt động trên Windows.
Starting a series on USB Device on STM32
A journey through USB knowledge, from theory to a real project on STM32G0: from protocol fundamentals to a working composite device firmware.
Mở đầu series về USB Device trên STM32
Hành trình tổng hợp lại kiến thức USB từ lý thuyết cho đến thực hành với project thực tế trên STM32G0.
_CID trong ACPI là gì?
Giải thích _CID trong ACPI: Compatible ID, driver fallback, PNP/ACPI ID matching, khác _HID, quan hệ _UID/_STA/_CRS và debug driver bind sai.
_HID trong ACPI là gì?
Giải thích _HID trong ACPI: Hardware ID, PNP ID, ACPI ID, device matching, OS driver binding, _CID/_UID liên quan và debug device không bind driver.
_STA trong ACPI là gì?
Giải thích _STA trong ACPI: trạng thái present/enabled/functioning của device, bit mask, driver enumeration, hotplug, _HID/_CRS liên quan và debug device bị ẩn.
_UID trong ACPI là gì?
Giải thích _UID trong ACPI: Unique ID, phân biệt nhiều device cùng _HID/_CID, instance identity, stable ID, driver mapping và debug nhầm device.