Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Giao tiếp CAN (Controller Area Network) là cái chi chi ? - Phần 2 (Phần cuối)
Trong phần 2 này mình sẽ giới thiệu về cách thức mà CAN hoạt động, khung truyền dữ liệu, cấu tạo phần cứng, ... để hiểu. Biết đâu sa cơ lỡ vận thì cầm máy tính đi sửa chữa ô tô thì sao !! Haha
Bản chất
Suy cho cùng thì giao tiếp nào cũng vậy, nó khác nhau về cách xử lí dữ liệu, cách truyền, khung truyền dữ liệu, cách xử lí khi có lỗi và tín hiệu truyền trên đường dây. Từ cái ý tưởng về mỗi giao tiếp được con người nghĩ ra, sau đó người ta sẽ tiến hành xây dựng phần cứng phục vụ cho ý tưởng đó.
=> CAN = software + hardware.
Hardware là cái cục gì đó trong thực tế dùng để truyền thông tin hoạt động dựa trên "bộ luật" (protocol) được "người xưa" nghĩ ra.
- CAN module là cái quản lí tin nhắn nào được gửi, nhận, ...
- CAN Transceiver có nhiệm vụ đưa thông tin dạng tín hiệu điện lên đường truyền ( từ tín hiệu TTL thành vi sai).
Software là cái chúng ta can thiệp vào để thay đổi thông tin, dữ liệu truyền đi.
Khung truyền
Thông tin trong giao tiếp luôn được đóng khung thành khung dữ liệu mà trong CAN người ta gọi nó là một message (tin nhắn).
Có nhiều loại frame trong CAN lắm, như là:
- Data frame
- Error frame
- Remote frame
- Overload frame, ...
Nhưng mình chỉ quan tâm data frame và remote frame thôi.
Data frame
là cái khung truyền dữ liệu chính chứ là cái gì ?
Khung dữ liệu có 2 loại: một cái có ID 11-bit và 29-bit, loại extended cho phép nhiều loại tin nhắn hơn đường truyền. Vì mỗi một tin nhắn sẽ được gán cho một ID. Nói chung là nhìn vào cái hình là bạn cũng có thể hình dung rồi.
Remote frame
Loại khung này chẳng khác gì khung data ngoại trừ việc nó không có data field. Nó chỉ có nhiệm vụ duy nhất là để yêu cầu dữ liệu từ một node trong mạng CAN.
Xử lí tin nhắn trên đường truyền
Nếu có đồng thời 2 node trong mạng cùng gửi tin nhắn thì những node nhận sẽ ưu tiên nhận tin nhắn nào có ID nhỏ hơn. Đó là cách mà mạng CAN chống việc quá tải đường truyền. Còn tin nhắn ID lớn hơn sẽ cố gắng gửi lại khi mà tin nhắn có ID nhỏ hơn gửi xong. Bạn có thể tưởng tượng là thằng nào có ID lớn thì thằng đó làm anh còn thằng nhỏ hơn làm em, thì tất nhiên là anh phải nhường em rồi.
Vậy thì chúng ta chỉ việc quan tâm cách thay đổi dữ liệu trong khung tin nhắn thôi, còn lại để phần cứng lo hết.
Tốc độ truyền của mạng CAN có thể lên tới 1Mbps nếu như đường dây < 40 m.
Các bạn có thể tìm hiểu chi tiết hơn nếu muốn tại đây



