Lập trình STM32 USB HID Host giao tiếp với chuột và bàn phím máy tính

STM32 HID Host giao tiep voi chuot va ban phim

Trong bài này chung ta sẽ cùng học STM32 HID Host, biến STM32 giống như 1 chiếc máy tính để giao tiếp với chuột và bàn phím. Đọc dữ liệu rồi hiển thị ra màn hình.

Bài 3 phần STM32F407 trong Serie Học STM32 từ A tới Z

USB HID Host là gì?

Bài trước chúng ta đã tìm hiểu về USB HID device, chúng ta đã hiểu được giao thức USB HID là gì, và cách biến STM32 thành 1 con chuột hoặc 1 chiếc bàn phím máy tính.

Có 2 khái niệm cần lưu ý trong giao thức USB đó là :

  • USB Host: Là phần đưa ra các lệnh với thiết bị trực tiếp điều khiển các thiết bị. Trong bài trước đó chính là chiếc máy tính của chúng ta
  • USB Device: Là các thiết bị sử dụng giao thức USB để giao tiếp với Host, nhận lệnh từ Host. Đó có thể là chuột, máy tính, tay chơi game,…

Vậy USB HID Host chính là biến STM32 của chúng ta giống như 1 chiếc máy tính, điều khiển và nhận dữ liệu từ các thiết bị HID device khác sau đó xử lý và hiển thị dữ liệu ra ngoài.

USB Host and device

Lập trình STM32 USB HID Host giao tiếp với chuột máy tính

Cấu hình trên CubeMX

Vẫn như các bài trước, các bạn cấu hình SYS với bebug serial wire

Phần Clock chọn HSE crystal, setup 48mhz cho usb

stm32 host hid clock

Chúng ta sẽ sử dụng UART3 để xem dữ liệu mà thiết bị gửi về.

STM32 Host HID

Sau đó chọn Connective là USB Host_Only, tích vào Active_VBUS để dùng nguồn điện USB nuôi thiết bị, vì đa số các thiết bị USB không có nguồn cấp, phải sử dụng nguồn từ HOST.

stm32 host hid config usb

Tab USB_HOST chọn Class HID

stm32 host hid config usb 2

Tiếp tới để kích hoạt VBUS chúng ta sẽ dùng chân PC0, chân này có nhiệm vụ mở IC cấp nguồn VBUS cho thiết bị

stm32 host hid config usb 4

Trong Platform Setting chọn PC0.

stm32 host hid config usb 3

Lập trình STM32 USB HID Host trên Keil C

Đầu tiên chúng ta include file usbh_hid.h và stdio.h (dùng hàm sprint)

stm32 host hid code 1

Tạo một buffer để in dữ liệu ra UART3

stm32 host hid code 3

Tìm hàm Call back, sau đó lập trình như sau:

  • Nếu thiết bị cắm vào là HID_Mouse
  • Đọc dữ liệu ra biến mouse_value
  • In dữ liệu lên mảng buffer
  • Truyền qua cổng UART

stm32 host hid code mouse

Trong while gọi hàm xử lý USB Host.STM32 HID Host giao tiep voi chuot va ban phim

stm32 host hid code main

Kết quả

ket qua 1

Lập trình STM32 USB HID Host giao tiếp với bàn phím máy tính

Tương tự với HID_KEYBOARD

  • Nhận dữ liệu và lưu vào biến keyboard_value
  • Chuyển đôi dữ liệu thành dạng char
  • in dữ liệu nhận được lên buffer
  • Truyền qua UART3

stm32 host hid code keyboard

Kết quả

ket qua 2

Kết

STM32 USB Hid Host với thư viện HAL khá dễ để sử dụng, do hãng đã cung cấp tất cả các hàm thực thi HOST, chúng ta chỉ cần sử dụng hàm call back mỗi khi có một thiết bị USB cắm vào, và lập trình dựa trên đó mà thôi

Hi vọng bài viết này có ích cho bạn, đừng quên gia nhập Hội Anh Em Nghiện Lập trình để giao lưu và học hỏi nhé!!!

5/5 - (1 bình chọn)
5 1 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận