Thứ Ba, 27 tháng 6, 2017

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

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. CAN FD là gì?

CAN FD như tên gọi là giao thức CAN với tốc độ dữ liệu linh động. Đây có thể xem là một giao thức mở rộng của giao thức CAN.

Việc ngày càng nhiều ứng dụng sử dụng các giao thức truyền thông nối tiếp dẫn đến nhu cầu bằng thông sử dụng trong giao thức CAN ngày càng tăng. Giao thức CAN truyền thống (CAN Specification 2.0) khó đáp ứng được trong một số ứng dụng nhất định. Để tăng khả năng sử dụng của giao thức CAN, CAN FD ra đời cho phép tốc độ truyền dữ cao hơn 1Mbit/s và số byte dữ liệu nhiều hơn 8 byte trong một khung truyền dữ liệu.

CAN FD sử dụng chung lớp vật lý với giao thức CAN quy định trong CAN Specification 2.0 (CAN 2.0).

Định dạng khung truyền của CAN FD khác với CAN 2.0. Nó có thêm 2 bit điều khiển mới. Một bit cho phép định dạng khung truyền với mã độ dài dữ liệu (DLC) mới và một bit cho phép tùy chọn chuyển sang tốc độ bit nhanh hơn sau khi sự phân xử đã được thực hiện xong.

Các đa thức CRC mới cùng được giới thiệu để đảm bảo cho các khung CAN FD dài hơn với khoảng cách Hamming giống như giao thức CAN đã chứng minh.

Định dạng khung CAN FD được định nghĩa để có thể cùng hoạt động với định dạng CAN 2.0 trong cùng một mạng. Giao thức CAN 2.0 vẫn hợp lệ và không có bất cứ điều chỉnh nào như một giao thức độc lập. Việc hai giao thức CAN 2.0 và CAN FD có thể cùng tồn tại trong một mạng được đảm bảo bởi yêu cầu là một thành phần CAN FD được xây dựng buộc phải tương thích với cả CAN FD và CAN 2.0.

Bên cạnh đó, để tương thích với CAN FD thì một thành phần CAN FD được xây dựng phải tương thích với mô tả của chuẩn CAN FD và với ISO 11898-1.

Chú ý: CAN FD có thể giao tiếp với CAN 2.0 miễn là không sử dụng định dạng khung của CAN FD. Nghĩa là, sử dụng định dạng khung của CAN 2.0.

2. Định dạng khung truyền

Chuẩn CAN FD quy định 4 định dạng khung truyền là:

  • (1) Định dạng CAN cơ bản (CAN Base Format): 11 bit ID + tốc độ bit hằng
  • (2) Định dạng CAN mở rộng (CAN Extended Format): 29 bit ID + tốc độ bit hằng
  • (3) Định dạng CAN FD cơ bản (CAN FD Base Format): 11 bit ID + tốc độ bit kép
  • (4) Định dạng CAN FD mở rộng (CAN FD Extended Format): 29 bit ID + tốc độ bit kép
Từ đây về sau, khi nói đến định dạng CAN thì đó là CAN 2.0. 

Tốc độ bit hằng tốc độ bit không thay đổi trong suốt quá trình truyền thông điệp. Tốc độ bit kép là trong một khung truyền Node CAN có thể truyền 2 tốc độ bit khác nhau.

Định dạng (1) và (2) như định dạng chuẩn (Standard Format) và định dạng mở rộng (Extended Format) của CAN 2.0.

3. Loại khung truyền

CAN FD có 4 loại khung truyền như CAN 2.0 là khung dữ liệu, khung yêu cầu, khung báo lỗi và khung báo quá tải. CAN FD khác CAN 2.0 ở các điểm sau:

Ngoài 2 định dạng "CAN cơ bản" và "CAN mở rộng" như CAN 2.0, khung dữ liệu có thêm 2 dạng:

  • Khung dữ liệu dạng CAN FD cơ bản
  • Khung dữ liệu dạng CAN FD mở rộng
Khung yêu cầu chỉ có hai định dạng như CAN 2.0 chứ không có định dạng CAN FD cơ bản hay CAN FD mở rộng.

Khung báo quá tải ngoài chức năng tạo thêm trễ giữa các khugn dữ liệu và khung yêu cầu thì còn thêm chức năng "đồng bộ sự phát hiện trạng thái bus rảng - IDLE".

4. Cấu tạo khung dữ liệu

Cấu tạo của loại khung này tạo nên sự khác biệt giữa CAN FD và CAN 2.0. Khác biệt ở đây được hiểu là sự mở rộng của CAN FD so với CAN 2.0 chứ không phải đối lập.

4.1 Khung dữ liệu

a) Vùng phân xử:

Vị trí bit RTR (Remote Transmission Request) dùng để xác định khung dữ liệu (dominant) hoặc khung yêu cầu (recessive) chỉ dành cho định dạng CAN cơ bản, nó tương ứng với định dạng khung chuẩn - Standard Format của CAN 2.0.

Với CAN FD cơ bản, bit RTR chuyển thành bit r1 và luôn là bit dominant. Điều này tương ứng với việc định dạng CAN FD chỉ dành cho khung dữ liệu, không dành cho khung yêu cầu.
b) Vùng điều khiển:

Vùng điều khiển của định dạng CAN FD có cấu tạo rất khác so với CAN 2.0

CAN FD có thêm 3 bit mới là:
  • EDL (Extended Data Length) là bit recessive. Đây là bit cho phép độ dài dữ liệu mở rộng. Bit này dùng để phân bit dữ định dạng khung CAN 2.0 và CAN FD.
  • BRS (Baud Rate Switch) là bit dùng để quyết định việc thay đổi tốc độ bit trong định dạng CAN FD. Nếu bit này là recessive thì sau "pha phân xử" (Arbitration Phase), tốc độ bit hiện tại sẽ được chuyển thành một tốc độ bit khác đã được cấu hình trước, tốc độ bit mới được dùng cho pha dữ liệu (Data Phase). Chú ý, ở CAN FD, có thêm 2 khái niệm mới là pha phân xử và pha dữ liệu. Hai khái niệm này khác với hai khái niệm "vùng phần xử" (Arbitration Field) và vùng dữ liệu (Data Field).
  • ESI (Error State Indicator) là cờ chỉ trạng thái lỗi được truyền là dominant nếu Node đang trong trạng thái tích cực với lỗi (Active Error) và truyền là recessive nếu Node đang trong trạng thái lỗi bị động (Passive Error)
Hình 1. So sánh giữa vùng phân xử và vùng điều khiển trong khung dữ liệu của CAN 2.0 định dạng cơ bản và CAN FD định dạng cơ bản
Hình 2. So sánh giữa vùng phân xử và vùng điều khiển trong khung dữ liệu của CAN 2.0 định dạng mở rộng và CAN FD định dạng mở rộng

Với bit SRR, CAN FD cho phép Node là bộ nhận cho phép bit SRR là dominant. Điều này không được nhắc đến trong CAN 2.0.
Bốn bit độ dài dữ liệu DLC trong CAN FD được mở rộng thêm. Trong khi CAN 2.0 chỉ sử dụng các giá trị từ 0 đến 8 tương ứng từ 0 đến 8 byte dữ liệu, DLC lớn hơn 8 cũng được xem như là 8 byte, thì CAN FD sử dụng các giá trị từ 9 đến 15 để tăng số byte vùng dữ liệu lên đến 64 byte cho phép truyền được nhiều dữ liệu hơn trong 1 lần phát.
Hình 2. Bảng mã DLC của CAN 2.0 và CAN FD
c) Vùng dữ liệu
Định dạng CAN FD cho phép tối đa có thể lên đến 64 byte.

d) Vùng CRC:

Vì độ dài vùng dữ liệu tăng lên nên tương ứng vùng CRC cũng được điều chỉnh lại cho phù hợp

Vùng CRC không có độ dài cố định như CAN 2.0 mà thay đổi tùy theo độ dài vùng dữ liệu. Cụ thể:
  • Khung theo định dạng CAN sẽ dùng CRC_15 có đa thức sinh như chuẩn CAN 2.0 => độ dài CRC SEQUENCE là 15 bit
  • Khung theo định dạng CAN FD có độ dài từ 16 byte trở xuống sử dụng CRC_17 => độ dài CRC SEQUENCE là 17 bit
  • Khung theo định dạng CSN FD có độ dài trên 16 byte sẽ sử dụng CRC_21 => độ dài CRC SEQUENCE là 21 bit
Hình 3. Các đa thức dinh trong chuẩn CAN FD
Mỗi đa thức sinh đều cho khoảng cách mã Hamming HD = 6.

Tại thời điểm bắt đầu của một khung, tất cả các Node đều phải tính cả 3 loại CRC cùng lúc, kể cả bộ truyền dữ liệu. Một Node thắng phân xử sẽ chọn CRC phù hợp với cấu hình  bit EDL và độ dài dữ liệu DLC của khung truyền. Các bộ nhận cũng sẽ dựa trên thông tin của khung truyền để chọn và kiểm tra CRC phù hợp.

Trong định dạng CAN FD, CRC được tính cho chuỗi bit đã được áp dụng luật chèn bit. Đây là điểm khác biệt so với định dạng CAN vì CRC của định dạng này không bao gồm các bit chèn.

Đoạn mã giả minh họa việc tính CRC như sau:
CRC_RG = 0; // initialize shift register
REPEAT
CRCNXT = NXTBIT EXOR CRC_RG(nCRC-1);
CRC_RG(nCRC-1:1) = CRC_RG(nCRC-2:0); // shift left by 1 position
CRC_RG(0) = 0;
IF CRCNXT THEN
CRC_RG(nCRC-1:0) = CRC_RG(nCRC-1:0) EXOR (CRC polynomial);
ENDIF
UNTIL (CRC SEQUENCE starts or there is an ERROR condition)
CRC Delimiter chỉ là 1 bit recessive đối với định dạng CAN nhưng nó có thể là 1 hoặc 2 bit recessive trong định dạng CAN FD. Cụ thể, trong định dạng CAN FD, bộ truyền chỉ truyền 1 bit recessive nhưng phải chấp nhận có 2 bit recessive trước khi phát hiện cạnh từ recessive chuyển sang dominant của ACK SLOT. Một bộ nhận sẽ vẫn gửi ACK của nó sau bit recessive đầu tiên của CRC Delimiter.
Hình 4. vùng CRC

Chú ý: CAN FD controller, bộ điều khiển thực hiện giao thức CAN FD, chuyển từ pha dữ liệu trở lại pha phân xử khi đên điểm lấy mẫu bit đầu tiên của CRC Delimiter

e) Vùng ACK
Hình 5. Vùng ACK
Định dạng CAN FD chấp nhận vùng ACK SLOT có độ dài tói đa 2 bit để bù sự dịch pha giữa các bộ nhận trong khi định dạng CAN chỉ chấp nhận 1 bit ACK và coi bit ACK thứ 2 là một lỗi định dạng.

ACK Delimiter cũng được tăng lên 2 bit recessive trong định dạng CAN FD.

5. Pha phân xử và pha dữ liệu

Đây là hai khái niệm mới trong CAN FD. Trong đó:
  • Pha dữ liệu (Data Phase) được tính từ điểm lấy mẫu được bit BRS (Bit Rate Switch) đến điểm lấy mẫu được bit đầu tiên của CRC Delimiter. Đây là vùng sẽ được chuyển sang tốc độ bit khác nếu bit BRS là recessive
  • Pha phân xử (Arbitration Phase) là các vùng còn lại, bao gồm từ SÒ đến điểm lấy mẫu bit BRS và từ điểm lấy mẫu bit đầu tiên của CRC Delimiter đến kết thúc khung.
*Xem lại các hình mình họa phía trên để hình dung rõ hơn về các pha này

6. Cấu tạo khung yêu cầu

 Tương tự CAN 2.0

7. Cấu tạo khung báo lỗi và báo quá tải

Tương tự CAN 2.0

8. Cấu tạo khoảng liên khung

Tương tự CAN 2.0

(Các điểm khác biệt khác sẽ được trình bày tiếp trong phần 2)


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