Thứ Sáu, 30 tháng 6, 2017

[CANFD][Controller Area Network][Bài 2] CANFD - Sự khác nhau giữa CAN FD và CAN 2.0 - phần 2

Tham khảo: CAN with Flexible Data-Rate Specification Version 1.0 (released April 17th, 2012) by BOSCH

Nội dung phần này chỉ nói về điểm khác biệt của CAN FD so với CAN Specification 2.0 (CAN 2.0). Bạn đọc hãy tham khảo về CAN2.0 trước khi đọc bài này.

1. Tính nhất quán của dữ liệu
Cấu trúc phân lớp của CAN FD theo mô hình tham khảo OSI.
Hình 1. Cấu trúc phân lớp của CAN FD trong mô hình tham khảo OSI

Tính nhất quán của dữ liệu được thể hiện qua việc dữ liệu được đảm bảo đồng nhất khi truyền qua các lớp này. Đồng nhất (consistency) được hiểu là dữ liệu được phát đi là dữ liệu đúng, đủ và kịp thời như mong muốn.

Như đã trình bày ở các bài cấu trúc phân lớp của CAN, CAN controller là thành phần sẽ thực hiện các xử lý ở lớp LLC (Logical Link Control) và lớp MAC (Medium Access Control).

Trong một Node, các thông điệp để truyền được chuẩn bị trước bởi host, host ở đây là đơn vị điều khiển chính của Node, có thể là CPU, FPGA,... Các thông điệp này được chuyển đến lớp phụ LLC (Logical Link Control) thông qua giao tiếp giữa host và thành phần CAN controller để đến lớp phụ MAC (Medium Access Control). Lớp MAC chịu trách nhiệm tạo ra khung thông điệp theo đúng chuẩn. Nếu host và CAN controller là 2 chip độc lập thì giao tiếp giữa chúng có thể là SPI, UART, parallel port,… Nếu CAN controller được tích hợp trong một MCU thì giao tiếp giữa chúng là giao tiếp nội thông qua bus hệ thống như APB, AHB, AXI, …

Các thông điệp có thể được lưu trữ trong một bộ nhớ được chia sẻ (shared memory), ví dụ như RAM. Việc truy xuất dữ liệu từ RAM có thể làm sai dữ liệu nên cần có cơ chế để đảm bảo tính đúng đắn của dữ liệu cần truyền lấy từ RAM. Tính đồng nhất của các thông điệp được truyền lấy từ một bộ nhớ được chia sẻ phải được đảm bảo bởi ít nhất bằng một trong 2 cách sau:
  • Lớp MAC sẽ lưu trữ toàn bộ thông điệp được truyền đi trong một bộ đệm tạm trước khi bắt đầu truyền. Nghĩa là, dữ liệu đúng đã được chứa đầy đủ tại lớp MAC sẵn sàng cho việc truyền.
  • Lớp LLC sẽ kiểm tra các lỗi dữ liệu trong khi thông điệp được gửi đến lớp MAC. Nếu lỗi xuất hiện, thông điệp sẽ không được truyền. Nếu một lỗi được phát hiện khi việc truyền đã bắt đầu thì Node phải được chuyển sang chế độ giám sát bus (Bus Monitoring Mode) và các Node nhận sẽ không thể thấy được một thông điệp hợp lệ để nhận.

Lỗi dữ liệu được nhắc đến ở bên trên có thể là lỗi parity khi kiểm tra dữ liệu đọc ra từ RAM, lỗi không cung cấp dữ liệu kịp thời cho CAN controller xử lý, hoặc một phần dữ liệu đã được cập nhật mới trong khi đang truyền, …

Có thể thấy, CAN FD làm rõ hơn vấn đề thực thi ở phần cứng CAN controller với những quy định cụ thể về kiểm soát tính đồng nhất khi truyền dữ liệu.

2. Các trạng thái hoạt động

Một Node CAN FD có bốn trạng thái hoạt động là Integrating (trạng thái chờ tích hợp), Idle (Rảnh), Receiver (Nhận) và Transmitter (Truyền). Việc quy định về bốn trạng thái hoạt động không xung đột với chuẩn CAN 2.0 mà chỉ làm rõ hơn hoạt động cơ bản của một Node.

Integrating là trạng thái chờ tích hợp. Việc gọi là chờ tích hợp vì đây là trạng thái mà một Node chờ để phát hiện chuỗi có 11 bit recessive liên tiếp sau khi Node này được khởi động hoặc Node này đang trong quá trình khôi phục hoạt động từ bus-off sang Idle.

Sau khi một Node mới được khởi động, hoặc khởi động lại (reset) hoặc được cấu hình bởi host để khơi động lạ thì nó không tham gia ngay vào các hoạt động trên mạng mà cần thời gian để đồng bộ với các hoạt động trên mạng, Node phải chờ sai khi phát hiện được một chuỗi 11 bit recessive liên tiếp thì mới bắt đầu tham gia vào hoạt động của mạng. Quy định 11 bit recessive liên tiếp đảm bảo lúc này bus CAN đã IDLE. Xem lại cấu trúc các khung của CAN, phần khung có kết thúc dài nhất là khung báo lỗi hoặc báo quá tải với 8 bit recessive. Trường hợp xấu nhất là ngay sau đó là khoảng liên khung với độ dài phần Intermission là 3 bit recessive. Như vậy, việc chờ 11 bit recessive sẽ đảm bảo bus đang IDLE. Chú ý, phần Suspend Transmission của khoảng liên khung chỉ dành cho bộ truyền đang trong trạng thái lỗi bị động nên một Node mới khởi động.
Hình 2. Giải thích trường hợp Node phải chờ 11 bit recessive trước khi tham gia hoạt động của bus

Một Node đang hoạt động trên bus khi rơi vào trạng thái bus-off thì phải giám sát bus cho đến khi phát hiện được 128 chuỗi 11 bit recessive thì mới được tham gia trở lại vào hoạt động của bus.

Idle là trạng thái rảnh. Node trong trạng thái này sẵn sàng truyền hoặc nhận SOF. Node sẽ chuyển từ trạng thái này sang trạng thái là bộ truyền (Transmitter) hoặc nhận (Receiver).

Receiver là trạng thái Node phát hiện hoạt động trên bus CAN ví dụ như SOF nhưng nó không đang truyền bất cứ thông điệp nào.

Transmitter là trạng thái mà Node khởi tạo truyền thông điệp trên bus. Node sẽ giữ trạng thái này cho đến khi nó thua phân xử hoặc đến khi bus Idle.
Hình 3. Các trạng thái hoạt động cơ bản của một Node CAN FD


Lịch sử cập nhật:
1) 2019.10.18 - Chỉnh sửa link hình minh họa

0 bình luận:

Đăng nhận xét