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.
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
Chúng ta sẽ sử dụng UART3 để xem dữ liệu mà thiết bị gửi về.
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.
Tab USB_HOST chọn Class HID
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ị
Trong Platform Setting chọn PC0.
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)
Tạo một buffer để in dữ liệu ra UART3
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
Trong while gọi hàm xử lý USB Host.
Kết quả
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
Kết quả
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é!!!