Nội dung liên quan
#embedded
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.
What Is STM32 GPIO Register Access?
Accessing GPIO through BSRR and IDR instead of HAL_GPIO_WritePin/ReadPin: why, when it's worth it, and how it applies to row-by-row matrix scanning on STM32.
STM32 GPIO Register Access là gì?
Truy cập GPIO bằng BSRR và IDR thay vì HAL_GPIO_WritePin/ReadPin: tại sao, khi nào phù hợp, và cách áp dụng cho matrix scan row-by-row trên STM32.
Clock Configuration for USB FS là gì?
USB Full-speed cần clock 48 MHz chính xác. Các nguồn clock khả dụng trên STM32, trade-off giữa HSI48+CRS và HSE+PLL, và checklist kiểm tra trước khi debug enumeration.
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.
Matrix Scanning Algorithm là gì?
Chi tiết thuật toán quét ma trận phím: scan toàn bộ vs scan thay đổi, xử lý multi-key, rollover detection và tối ưu timing giữa các lần quét.
What Is a Debounce Algorithm?
Why mechanical keys bounce, and how to handle it with counter-based debounce, timestamp debounce, scan buffers, and a state machine in firmware.
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.
Debounce Algorithm là gì?
Tại sao phím cơ học bounce và cách xử lý bằng counter-based debounce, timestamp debounce, scan buffer và state machine trong firmware.
Keyboard Matrix Fundamentals là gì?
Tại sao bàn phím dùng matrix thay vì một dây mỗi phím. Cách quét hàng/cột, GPIO setup, active-low convention, ghosting và khi nào thực sự cần diode.
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 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.
DMA Normal vs Circular Mode trong STM32 là gì?
Giải thích DMA Normal và Circular Mode trong STM32: luồng truyền, buffer, half/full callback, UART/ADC, ring buffer và debug mất dữ liệu.
HAL_BUSY UART DMA là gì?
Giải thích HAL_BUSY khi dùng UART DMA trong STM32: HAL state, DMA callback, gState/RxState, race condition, timeout và debug không gửi được.
Producer Consumer Logging trong STM32 là gì?
Giải thích Producer Consumer Logging trong STM32: ISR/task producer, log queue, UART DMA consumer, ring buffer, drop policy và debug mất log.
UART Baudrate Time Calculation là gì?
Giải thích cách tính thời gian truyền UART từ baudrate: bit time, frame format, start/stop/parity, throughput, timeout và debug mất log.
Flash, EEPROM và RAM trong STM32 khác nhau thế nào?
Giải thích Flash, EEPROM và RAM trong STM32: vùng nhớ, dữ liệu mất hay giữ sau reset, EEPROM emulation, linker script và debug lỗi lưu cấu hình.
Flash Operations trong STM32 là gì?
Giải thích thao tác Flash trong STM32: unlock, erase, program, verify, lock, page/sector, alignment, HAL error và debug ghi Flash an toàn.
Linker Script STM32 là gì?
Giải thích linker script STM32: memory regions, sections .text/.data/.bss, stack heap, Flash data area, bootloader offset và debug map file.
Reset Vector và Bootloader trong STM32 là gì?
Quick note ngắn gọn về Reset Vector, vector table, Initial MSP, Reset_Handler, VTOR và flow bootloader jump vào application trên STM32/Cortex-M.
Startup Code STM32 là gì?
Giải thích Startup Code trong STM32: vector table, Reset_Handler, copy .data, clear .bss, SystemInit, main và debug lỗi trước main.
STM32G0 Dual Bank là gì?
Giải thích STM32G0 Dual Bank Flash: bank layout, page erase, read-while-write, boot bank, firmware update, EEPROM emulation và debug sai bank.