Giao tiếp CAN (Controller Area Network) là cái chi chi ? - Phần 2 (Phần cuối)
#CAN_BUS
1
Protocol
2
White

Quân Vũ viết ngày 12/10/2018

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 đó.
alt text
=> CAN = software + hardware.
alt text
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 frameremote frame thôi.

Data frame

alt text
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

alt text
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

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Quân Vũ

4 bài viết.
1 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
4 0
Vì đâu mà có CAN (Controller Area Network) ? Thời cuộc lúc bấy giờ Từ thuở khai thiên lập xe, khi mà các thiết bị điện tử còn xa xỉ và được sử d...
Quân Vũ viết 1 năm trước
4 0
White
1 1
Sự kết hợp hoàn hảo Hẳn là nhiều bạn đã biết LaTeX và Vim là gì rồi nên mình không đề cập đến nó nữa. Trong bài viết này mình chia sẻ cách để viết...
Quân Vũ viết 1 năm trước
1 1
Bài viết liên quan
White
66 5
image cover]imgcover] “Make it work, make it right, make it fast.” Bạn vừa viết xong một ứng dụng web :tada:. Mọi thứ chạy ổn. Code cũng đã được...
Cẩm Huỳnh viết 12 tháng trước
66 5
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
4 bài viết.
1 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!