Cdc serial là gì
Hướng dẫn khắc phục lỗi thiếu CDC Comms Interface Drivers Show
Mình từng gặp trường hợp khi cài đặt Nokia làm modem thì máy tính tìm driver và báo thiếu CDC Comms Interface Drivers ( mặc dù PC suite bản mới nhất và vẫn sync điện thoại bình thường ) . Do thiếu file nên không thể làm tiếp các bước để dùng Nokia làm modem vào internet đc. Nguyên nhân là do Nokia Connectivity Cable Driver từ 6.86 trở lên thì bị lỗi file này ( ở 1 số máy tính thôi nhé ). Các bạn nào bị trường hợp thiếu driver CDC comms thì thực hiện các bước sau đây sẽ giải quyết được vấn đề : Bước 2 Download bản PC suite mới nhất tại http://europe.nokia.com/A4144905 Download Nokia Connectivity Cable Drive 6.85 tại đây
Bước 3 Cài đặt PC suite ( không được kết nối điện thoại ). Cài đặt xong thì khởi động lại máy tính.Bước 4 Đóng tất cả các chương trình liên quan đến PC suite, sync của Nokia. Vào Control panel > Add or Remove Programs > remove Nokia Connectivity Cable Driver đi. Sau đó khởi động lại máy tính.Bước 5 cài đặt Nokia Connectivity Cable Drive 6.85 lúc nãy vừa down về. Sau đó nối điện thoại với PC bạn sẽ thấy window nhận đầy đủ CDC comms interface và lúc đó điện thoại bạn có thể dùng làm modem internet được rồi. 21 bình luận
Giao thức USB nói chung và STM32 USB CDC nói riêng là một giao thức khá khó lập trình. Nhưng ST đã hộ trợ lập trình viên rất nhiều bằng cách tạo ra các gói source Midware USB hỗ trợ rất nhiều cho lập trình. Việc chúng ta cần là học cách sử dụng API của các midware đó. Bài 16 trong Serie Học lập trình STM32 từ A tới Z Giao thức usb là gì?USB (Universal Serial Bus) là một chuẩn kết nối tuần tự đa dụng trong máy tính. Dùng để kết nối các ngoại vi với máy tính theo quy chuẩn Plug and Play ( Cắm và chạy), với tính năng cắm nóng thiết bị (không phải khởi động lại hệ thống) giúp việc kết nối trở nên đơn giản hơn rất nhiều. Đã có bốn thế hệ USB, gồm: USB 1.x, USB 2.0, USB 3.x và USB4 Giao thức USB rất thông dụng Một số kiến thức cơ bản về giao thức usbKiến trúc hệ thống USBMột hệ thống USB được mô tả bởi 3 định nghĩa:
Kiến trúc bus: Về mặt vật lý, kiến trúc Bus USB là một tầng sao, với Host là trung tâm. Mỗi tia là 1 kết nối giữa Host với Hub, Host với Device hoặc Device với Hub. Với 7bit địa chỉ, một Host có thể quản lý 127 thiết bị trong mạng lưới của nó. Cấu trúc điều khiển truyền nhậnĐể tất cả các thiết bị trong cùng hệ thống hiểu nhau chúng phải tuân thủ theo quy tắc điều khiển truyền nhận (Control Transfer). Một gói Control Transfer được chia thành 3 Transaction:
Mỗi Transaction lại chia thành các gói tin:
Mỗi gói tin (Packet) lại bao gồm các trường riêng, trong đó có 3 loại trường (fields) bắt buộc trong mỗi gói tin đó là:
Các kiểu truyền nhận trong USBChuẩn USB định nghĩa 4 kiểu transfer (cũng có thể gọi là 4 kiểu endpoints), chúng bao gồm:
Tài liệu về giao thức USBNói về USB thì cần rất nhiều tài liệu bạn mới có thể hiểu hết được, thế nhưng để hiểu mức cơ bản thì bạn có thể đọc cuốn USB in a Nutshell. Nó khá cô đọng và không quá dài như các tài liệu khác Link: https://drive.google.com/open?id=1wEQKyJVl3d0I6MbVtHehQ1Ciqf878DOC Hoặc tham khảo các tài liệu khác tại vidieukhien.org: http://vidieukhien.org/mot-so-tai-lieu-co-ban-ve-usb.html Giao thức Usb cdc trên stm32USB CDC là gì?USB communications device class hay được hiểu là Lớp thiết bị giao tiếp thông qua USB. Nghe có vẻ hơi tối nghĩa nhưng bạn có thể hiểu rằng nó được sử dụng để các thiết bị giao tiếp với nhau chứ không tương tác với con người như HID class. Các thiết bị thuộc lớp này cũng được triển khai trong các hệ thống nhúng như điện thoại di động để điện thoại có thể được sử dụng làm modem, fax hoặc cổng mạng. Các giao diện dữ liệu thường được sử dụng để thực hiện truyền dữ liệu hàng loạt. STM32 USB CDCTrong STM32f103c8t6 chỉ hỗ trợ giao thưc USB kiểu Device, thế nên ta sẽ sử dụng kit Bluepill như một thiết bị để truyền nhận dữ liệu giữa nó và máy tính. Cách thức giao tiếp đã được chuẩn hóa trong thư viện USB của CubeMx, vậy nên trong bài này chúng ta sẽ không xét tới những phần đó nữa, mà tập trung vào việc sử dụng dữ liệu truyền nhận được. Lập trình stm32 usb cdcThiết lập STM32 Usb CDC trên Cube MXMở Cubemx lên, trong tab SYS chọn debug Serial Wire Tab RCC chúng ta chọn nguồn dao động là thạch anh ngoại HSE. Trong Conectivity chọn USB và tick và Device (FS). Giao thức USB Device Full Speed. Phần Middleware chọn USB_DEVICE chọn Clas CDC hay cổng com ảo. Chỉnh sửa kích thước Buffer truyền và nhận. Ở đây mình sử dụng 64bytes. Chuyển qua Tab Clock Config -> Chọn tần số cho bộ USB là 48Mhz (Bắt buộc), tần số của mạch có thể chọn cao hơn, ở đây mình chọn 48Mhz. Đặt tên, chọn IDE sau đó Gen code. Lập trình STM32 Usb CDC với Keil CMở Project vừa tạo, chọn File usbd_cdc_if.c. Code thêm vào phần CDC_Receive_FS như hình. Giải thích code: Khi có một gói tin truyền đến, MCU sẽ gọi hàm CDC_Recive_FS để đọc dữ liệu nhận được bằng lệnh USBD_CDC_RecivePacket(&hUsbDeviceFS); Sau khi đọc xong gói tin, dữ liệu sẽ được lưu tại biến: UserRxBufferFS Sau đó chúng ta thực hiện lệnh gửi dữ liệu với độ dài lấy từ hàm strlen((const char*)UserRxBufferFS) – 1. Tại sao lại – 1 vì khi nhận được 1 chuỗi bất kì, cuối gói tin nhận được sẽ có 1 byte kiểm tra đữ liệu, vậy nên nếu gửi tất cả sẽ thừa 1 byte. Sau khi gửi xong, chúng ta xóa UserRxBufferFS; để chuẩn bị nhận giá trị tiếp theo. Cài đặt Driver STM32 Usb CDCKhi nạp xong cho Bluepill, chúng ta cắm dây micro usb vào kit và kết nối với máy tính. Khi đó máy tính sẽ báo rằng chưa có driver cho thiết bị Để sử dụng được Vitual Com Port chúng ta cần cài Driver để máy tính biết cần giao tiếp với cái gì. Cũng giống như khi bạn cài driver cho USB to COM sử dụng PL2303 hoặc CH340 vậy. Nhấn vào link để down về: https://www.st.com/en/development-tools/stsw-stm32102.html Download bản phù hợp với máy tính của bạn, rồi cài đặt, sau khi cài xong, nhấn vào manager xem đã ok chưa. Hiển thị giống hình là đã cài đúng Gửi dữ liệu lên STM32 USB CDC với Hercules TerminalSau khi đã cài đặt xong, chúng ta mở phần mềm Hercules Terminal, chọn cổng COM tương ứng. Nếu bạn chưa có phần mềm có thể tham khảo bài viết: Hướng dẫn sử dụng Hercules Terminal Gửi dữ liệu bất kì lên, mạch sẽ phản hồi lại đúng dữ liệu đó. KếtSTM32 USB CDC được sử dụng rất nhiều trong việc truyền nhận giữa các thiết bị nhúng với nhau hoặc giữa chúng với máy tính, vì tính tiện dụng và hiệu quả và tốc độ nó mang lại. Nếu bạn thấy bài viết này có ích hãy chia sẻ với bạn bè mình và cùng vào nhóm những Anh Em Nghiện Lập trình nhé !!! |