• Integrated Circuit Design - Chia sẻ kiến thức về vi mạch

    Integrated Circuit Design - Chia sẻ kiến thức về vi mạch

    Vi mạch và Ứng dụng

  • Integrated Circuit Design - Chia sẻ kiến thức về vi mạch

    Integrated Circuit Design - Chia sẻ kiến thức về vi mạch

    Vi mạch và Ứng dụng

  • Integrated Circuit Design - Chia sẻ kiến thức về vi mạch

    Integrated Circuit Design - Chia sẻ kiến thức về vi mạch

    Vi mạch và Ứng dụng

Hiển thị các bài đăng có nhãn Protocol. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Protocol. Hiển thị tất cả bài đăng

Thứ Hai, 10 tháng 7, 2017

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

1. Vấn đề đồng bộ trong CAN FD

CAN FD có các quy định về đồng bộ cứng (hard synchronization), tái đồng bộ (Resynchronous), lỗi pha (Phase error) tương tự như CAN 2.0. Bên cạnh đó CAN FD cũng quy định thêm một số điểm khác biệt về vấn đề này.

Ở độ rộng bước tái đồng bộ RJW (Resynchronous Jump Width), nó còn được ký hiệu là SJW, RJW quy định cho pha phân xử và pha dữ liệu là khác nhau:
  • Pha phân xử, RJW được lập trình trong khoảng từ 1 đến min (16, Phase_seg1(N)).
  • Pha phân xử, RJW được lập trình trong khoảng từ 1 đến min(4, Phase_seg1(D)) -> như chuẩn CAN 2.0
Các quy định về sự đồng bộ (Synchronization Rules) cũng có những khác biệt như sau:
  1. Giống CAN 2.0
  2. Giống CAN 2.0
  3. Cả CAN FD và CAN 2.0 đều quy định đồng bộ cứng được áp dụng khi xuất hiện cạnh chuyển từ recessive sang dominant ở vùng Bus Idle. Nhưng CAN FD quy định thêm, điều này còn áp dụng ở vùng Suspend Transmission (xem khoảng liên khung), ở bit thứ 2 hoặc bit thứ 3 của vùng Intermission. Đồng bộ cứng còn được áp dụng tại cạnh chuyển từ recessive sang dominant khi chuyển từ bit EDL thành bit r0 trong khung truyền định dạng CAN FD
  4. Giống CAN 2.0
  5. Một bộ truyền sẽ không thực thi tái đồng bộ trong khi truyền pha dữ liệu trong khung truyền CAN FD (Quy đình này thêm vào và dành riêng cho CAN FD)
2. Dung sai của bộ dao động

Bộ dao động ở đây là nguồn xung clock được cấp cho CAN controller sử dụng tính toán thời gian bit cho các khung truyền. Dung sai là độ sai số cho phép của bộ dao động để đảm bảo mỗi Node có thể hoạt động chính xác nhất.

CAN FD quy định rõ ràng vấn đề này hơn so với CAN 2.0. Cụ thể, dung sai df cho một bộ dao động tần số fosc sẽ quanh tần số danh định fnom như sau:

 (1-df).fnom <= fosc <= (1+df).fnom

nhưng phụ thuộc vào tỷ lệ của Phase_seg1, Phase_seg2, SJW và thời gian bit. Dung sai df tối đa được định nghĩa bởi 5 điều kiện trong đó điều kiện I và II đã được áp dụng cho chuẩn CAN 2.0. Đối với CAN FD, tất cả 5 điều kiện đều phải được áp dụng.
Hình 1. Những điều kiện ràng buộc giá trị dung sai bộ dao động

Ở đây, N là ký hiệu chỉ thông số thuộc cấu hình tốc độ bit danh định và D là ký hiệu chỉ thông số thuộc cấu hình tốc độ bit dữ liệu. Nguyên tắc rất đơn giản, tất cae các thông số cấu hình thời gian bit cần được tính toán bằng các điều kiện ràng buộc trên để chọn bộ dao động có dung sai phù hợp cấu hình. Hoặc khi đã có nguồn dao động và dung sai cụ thể của nó thì việc cấu hình thời gian bit và các thông số khác phải đáp ứng theo dung sai đó.

Cần lưu ý, SJW không được lớn hơn giá trị của Phase_seg1 và Phase_seg2. Đoạn Prop_seg có thể được sử dụng cho các đoạn Phase_seg1 và Phase_seg2. Tổ hợp cấu hình Prop_seg(N)=1 và Phase_seg1(N)=Phase_seg2(N)=SJW(N) cho phép dung sai lớn nhất lên đến 1.58%. Đây cũng là dung sai cho phép trong xử lý của CAN 2.0. Việc tổ hợp Prop_seg khi nó chỉ chiếm 10% thời gian 1 bit là không thích hợp cho các thời gian bit ngắn. Nó có thể được sử dụng cho tốc độ tối đa là 125 kbit/s, tương ứng với thời gian bit là 8 us, với độ dài bus 40 m. Thời gian bit danh định này có thể tổ hợp với một thời gian dữ liệu ngắn hơn.

3. Bù trễ Transceiver

Bù trễ cho CAN transceiver là một khái niệm không có trong CAN 2.0.

Ở CAN FD, nếu không có cơ chế bù trễ, khi một Node là bộ truyền, nó có thể không giám sát được (không nhận được) giá trị bit do chính nó truyền ra tại điểm lấy mẫu (Sample point) như hình 2. Điều này sẽ giới hạn tốc độ của pha dữ liệu, thời gian bit của pha này không được phép quá ngắn dẫn đến tốc độ bit không được phép quá cao.
Hình 2. Trễ trên Transceiver làm giới hạn tốc độ truyền dữ liệu

Các Node CAN FD sẽ hỗ trợ tùy chọn thực thi cơ chế bù trễ cho Transceiver để sử dụng cho các ứng dụng cần thời gian bit trong pha dữ liệu ngắn hơn giới hạn thời gian được quy định trong thời gian trễ của Transceiver.

Cơ chế bù trễ sẽ định nghĩa một điểm lấy mẫu thứ 2 (Secondary Sample Point). Điểm lấy mẫu này được sử dụng để so sánh giá trị bit được truyền ra so với bit được nhận vào theo thứ tự để kiểm tra lỗi bit. Cơ chế này chỉ sử dụng cho bộ truyền và trong pha dữ liệu của khung định dạng CAN FD. Khi sử dụng cơ chế này, bộ truyền sẽ không quan tâm đến giá trị bit ở vị trí lấy mẫu thông thường (Sample point).

Độ trễ bù được ký hiệu là TRV_DELAY. Nó được đo trong từng khung truyền tại cạnh chuyển từ bit EDL sang bit r0 bằng cách đo khoảng cách giữa cạnh bit truyền ra trên TX và cạnh bit nhận được trên RX của CAN controller. Giá trị đo được tính theo đơn vị TQ và sẽ được làm tròn xuống đến số nguyên gần nhất.

Vị trí của điểm lấy mẫu thứ hai sẽ được tính từ điểm lấy mẫu thông thường cộng bù thêm TRV_DELAY, ví dụ như nửa thời gian của 1 bit. Và nó có thể nằm sau điểm cuối của bit truyền.
Hình 3. Bù trễ transceiver trong CAN FD

Nếu một lỗi bit (BIT ERROR) được phát hiện tại điểm lấy mẫu thứ 2, bộ truyền sẽ đáp ứng lại lỗi bit này này ở điểm lấy mẫu (sample point) tiếp theo.


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

Chủ Nhật, 9 tháng 7, 2017

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

CAN FD hỗ trợ hai tốc độ bit trong một khung truyền là tốc độ bit danh định (Nominal Bit Rate) dùng cho pha phân xử và tốc độ bit dữ liệu (Data Bit Rate) dùng cho pha dữ liệu. Phần này sẽ phân tích rõ hiện tượng chuyển đổi giữa hai tốc độ bit này trong giao thức CAN FD.
Hình 1. Pha phân xử và pha dữ liệu trong khung yêu cầu (trên) và khung dữ liệu (dưới)

Việc tốc độ bit có bị chuyển đổi hay không phụ thuộc vào giá trị bit BRS (Bit Rate Switch).
  • BRS = 1 là có chuyển đổi
  • BRS = 0 là không chuyển đổi

Có hai điểm chuyển tốc độ bit là tại vị trí bit BRS và vị trí bit CRC delimiter. Tốc độ bit sẽ được chuyển đổi ngay sau điểm lấy mẫu (sample point) của 2 bit này. Điều này làm cho 2 bit này mang cùng lúc 2 cấu hình tốc độ bit khác nhau. Tổng độ dài của 2 bit này sẽ bằng độ dài 1 bit thuộc cấu hình thời gian bit danh định (Nominal Bit Time) và một bit thuộc cấu hình thời gian bit dữ liệu (Data Bit Time).

Trong trường hợp phát hiện lỗi, Node phải truyền khung báo lỗi nhưng khung này theo tốc độ bit danh định (Nominal Bit Rate). Nếu Node đang truyền trong pha dữ liệu thì nó phải chuyển đổi từ tốc độ bit dữ liệu sang tốc độ bit danh định để phát khung báo lỗi nhưng thời điểm chuyển đổi là sau điểm lấy mẫu của bit hiện tại một khoảng thời gian bằng thời gian xử lý thông tin (Information Processing Time - IPT).

Ví dụ, thời gian bit danh định được cấu hình dựa trên m(N) = 2, đây là hệ số tính độ dài TQ(N). Thời gian các đoạn trong 1 bit gồm:
  • Prop_seg(N)     = 6 TQ
  • Phase_seg1(N)  = 4 TQ
  • Phase_seg2(N)  = 4 TQ
Thời gian dữ liệu được cấu hình dựa trên hệ số m(D) = 1 và có độ dài các đoạn trong 1 bit như sau:
  • Prop_seg(D)     = 1 TQ
  • Phase_seg1(D)  = 4 TQ
  • Phase_seg2(D)  = 4 TQ
Hình 2. Ví dụ về thời gian bit danh định và thời gian bit dữ liệu
Với cấu hình trên, thời gian của bit BRS và CRC Delimiter được thể hiện như sau:
  • Bit BRS: trước điểm lấy mẫu theo cấu hình tốc độ bit danh định, sau điểm lấy mẫu theo tốc độ bit dữ liệu
  • Bit CRC Delimiter: trước điểm lấy mẫu theo cấu hình tốc độ bit dữ liệu, sau điểm lấy mẫu theo tốc độ bit danh định

Hình 3. Độ dài bit BRS và CRC Delimiter

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

Thứ Bảy, 1 tháng 7, 2017

[CAN2.0][Controller Area Network][Bài 12] Lọc thông điệp trong giao thức CAN

1. Lọc thông điệp

Việc lọc thông điệp thực hiện trên các thông điệp được nhận bởi Node. Một Node lọc thông điệp để biết nó có phải là thông điệp của nó hay không.

Việc lọc thông điệp thực hiện trên toàn bộ vùng ID (Identifier) của thồn điệp. Việc lọc thông điệp là sự so sánh giữa ID thông điệp với một hoặc nhiều giá trị ID được cấu hình bên trong một Node.

Mỗi bit được so sánh có thể được che bởi các thanh ghi mặt nạ (mask register) để thiết lập bit này là don't care, tức là không quan tâm đến giá trị bit này là bao nhiêu khi so sánh. Các bit của thanh ghi mặt nạ phải lập trình được. Độ dài của thanh ghi mặt nạ có thể bằng độ dài của toàn bộ vùng ID hoặc chỉ bằng một phần vùng này.

Sau đây là một ví dụ về việc lọc thông điệp được thực hiện trong chip CAN controller mcp2515 của Microchip. Từng bit ID của thông điệp nhận được (Message Assembly Buffer Identifier) sẽ được so sánh với Thanh ghi lưu giá trị ID được chấp nhận (Acceptance Filter register) bằng cổng XOR. Nếu giá trị giống nhau, ngõ ra cồng XOR là 0; nếu khác nhau thì ngõ ra cổng XOR là 1. Giá trị này được lấy bù để OR với giá trị bù của của các bit thanh ghi mặt nạ (Acceptance Mask register). Nếu tất cả các ngõ ra cổng OR là 1 thì tín hiệu báo thông điệp hợp lệ với Node (RxRqst) sẽ tích cực. Nếu 1 hoặc nhiều ngõ ra cổng OR bằng 0, nghĩa là có 1 hoặc nhiều bit ID không phù hợp với cấu hình của Node thì RxRqst sẽ không tích cự và Node không nhận thông điệp này.
Hình 1. Cấu tạo thành phần lọc thông điệp của chip CAN controller mcp2515 của Microchip
Đối với mạch nguyên lý trên, nếu bit thanh ghi mặt nạ bằng 0 thì giá trị so sánh tại vị trí đó, ngõ ra cổng XOR, sẽ là don’t care và giá trị bit ID tại vị trí này luôn phù hợp cho dù là 0 hay 1.
Hình 2. Bảng giá trị minh họa mối liên hệ giữa bit mặt nạ (Mask), bit cấu hình lọc IC (Filter) và giá trị bit ID của thông điệp

Việc sử dụng thanh ghi mặt nạ cho phép một Node có thể được cấu hình 1 khoảng giá trị ID thay vì từng giá trị đơn lẻ. Theo mạch nguyên lý đã trình bày trên đây, với 29 bit ID, giả sử các giá trị cấu hình là:
  • Thanh ghi lưu các bit Filter: h0000_005A
  • Thanh ghi lưu các bit Mask: hFFFF_FFF0
thì khoảng giá trị ID mà Node sẽ nhận là từ h0000_0050 đến h0000_005F.

2. Minh họa việc truyền nhận thông điệp trên bus CAN 

Giả sử ta có bốn Node CAN như sau: 
  • Node 1: muốn truyền dữ liệu với IDENTIFIER 01101000110 (838). 
  • Node 2: muốn truyền một dữ liệu khác với IDENTIFIER 01101001000 (840) và cho phép chỉ nhận dữ liệu với IDENTIFIER 01101000110 (838). 
  • Node 3: không truyền dữ liệu nào và có khoảng ID cho phép là 0110100xxxx (‘x’ hiểu là don't care, tức tầm giá trị của khoảng cho phép là [832; 847]). 
  • Node 4: muốn truyền dữ liệu có IDENTIFIER 01110010010 (914) và cho phép nhận ID là 0111001xxx1 (tức tầm của khoảng ID cho phép là các số lẻ trong đoạn [913; 927]) 
Giả sử, Node 1, Node 2, Node 4 cùng truyền dữ liệu của mình trong cùng một thời gian. Như vậy, cả 3 Node sẽ chuyển từ trạng thái Idle thành bộ truyền và sự xung đột sẽ xuất hiện nên trên bus sẽ xảy ra sự phân xử.
Hình 3. Sự phân xử khi truyền thông điệp trên bus CAN

Sự phân xử thực hiện như sau, ở ba bit đầu tiên, cả 3 Node đều truyền cùng mức và giá trị bus ở vị trí tương ứng cũng vậy. Đến bit thứ 4, Node 1 và Node 2 truyền dominant nên giá trị bus theo ‘AND-wire’ là dominant. Cùng lúc này, node 4 truyền recessive nhưng khi giám sát bus lại thấy là dominant, nó hiểu là có nút khác cũng đang truyền dữ liệu. Node 4 sẽ ngưng truyền và trở thành bộ nhận. Ta nói rằng nút 4 thua trong sự phân xử. Tương tự như vậy, đến bit thứ 8, Node 2 cũng thua trong sự phân xử và trở thành bộ nhận. 

Kết quả của cuối cùng của trình phân xử trên là chỉ có Node 1 truyền dữ liệu với IDENTIFIER 838 của nó trên bus và nó là bộ truyền cho đến khi bus Idle. Các Node còn lại đều trở thành bộ nhận dữ liệu từ Node 1. Trong 3 Node nhận là Node 2, Node 3, Node 4 thì Node 4 sẽ không nhận dữ liệu này vì 838 không thuộc khoảng ID [913; 927] mà nó được cấu hình. Node 2 và Node 3 sẽ cho phép dữ liệu qua lớp phụ LLC để lên lớp cao hơn.
Hình 3. Hoạt động truyền nhận của các Node trong bus CAN


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

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

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. Luật chèn Bit (Stuffing)

Khác với CAN 2.0, luật chèn bit áp dụng cho các vùng từ SOF đến CRC Sequence. Định dạng khung truyền CAN FD có sự thay đổi về luật chèn bit cho vùng CRC Sequence. Các bit được chèn thêm ở vùng này chỉ nằm ở các vị trí cố định.

Một bit cố định được chèn ở trước bit đầu tiên của CRC Sequence cho dù các bit cuối cùng của vùng trước đó chưa đáp ứng đúng theo điều kiện của luật chèn bit, nghĩa là chưa xuất hiện 5 bit cùng mức logic liên tiếp nhau. Sau đó, mỗi bit chèn sẽ được thêm sau mỗi nhóm 4 bit của chuỗi CRC Sequence. Giá trị của bit chèn là đảo của giá trị bit đứng ngay trước nó.

Bộ nhận sẽ bỏ qua các bit chèn khi nhận CRC. Bộ nhận sẽ phát hiện ra lỗi chèn bit (Stuff Error) nếu phát hiện ra bit được chèn có giá trị giống giá trị bit ngay trước nó. Số bit chèn cố định trong CRC định dạng CAN FD bằng với số tối đa của các bit chèn khi áp dụng luật chèn bit của định dạng CAN (5 bit cùng mức thì chèn 1 bit đảo).

Hình 1. So sánh số bit chèn trên CRC15 giữa CAN FD và một trường hợp chèn tối đa theo luật chèn bit CAN 2.0

2. Các loại lỗi

Các loại lỗi được phát hiện trong CAN FD tương tự như CAN 2.0 nhưng lỗi định dạng (Form Error) bổ sung thêm lỗi khi phát hiện lỗi ở bit chèn cố định của vùng CRC Sequence.

3. Quy định về thời gian bit

Do các khung truyền định dạng CAN FD có thể hỗ trợ 2 tốc độ bit khác nhau, 1 cho pha phân xử (Arbitration phase) và 1 cho pha dữ liệu (Data phase), nên trong phần cứng CAN controller sẽ có 2 bộ thanh ghi cấu hình về thời gian bit cho 2 tốc độ này.

Tương tự CAN 2.0, thời gian của một bit vẫn luôn gồm 4 đoạn là Sync_seg, Prop_seg, Phase_seg1 và Phase_seg2. Điểm lấy mẫu (sample point) vẫn ở cuối Phase_seg1. Nhưng vì CAN FD hỗ trợ 2 tốc độ bit nên định nghĩa thêm thuật ngữ để phân biệt 2 tốc độ bit này.

Thời gian bit danh định (Nominal Bit Time) là khái niệm dành cho pha phân xử. Đối với pha dữ liệu thì thời gian lý tưởng của 1 bit gọi là thời gian bit dữ liệu (Data Bit Time).

TIME QUANTUM(N) = m(N) * MINIMUM TIME QUANTUM

TIME QUANTUM(D) = m(D) * MINIMUM TIME QUANTUM
  • MINIMUM TIME QUANTUM (TQ tối thiểu): là giá trị thời gian tối thiểu được chia từ xung clock cấp cho CAN controller
  • m: là giá trị của bộ đếm số TQ tối thiểu
  • TQ: Thời gian dùng để tính độ dài 1 bit

Như vậy, độ dài đơn vị thời gian TQ của pha phân xử TQ(N) và pha dữ liệu TQ(D) có thể khác hoặc bằng nhau.

Tương tự, tốc độ bit danh định (Norminal Bit Rate) dùng để nói về tốc độ bit của pha phân xử ở CAN FD còn đối với pha dữ liệu, tốc độ này được gọi là tốc độ bit dữ liệu (Data Bit Rate).

Đối với tốc độ bit danh định, độ dài các đoạn thời gian của một bit được quy định như sau:

  • Sync_seg:     1 TQ(N)
  • Prop_seg:     1 đến 32 TQ(N)
  • Phase_seg1: 1 đến 32 TQ(N)
  • Phase_seg2:  max(Phase_seg1, Thời gian lan truyền thông tin IPT)
Đối với tốc độ bit dữ liệu, độ dài các đoạn thời gian của 1 bit giống quy định của chuẩn CAN 2.0 như sau:
  • Sync_seg:     1 TQ(D)
  • Prop_seg:     1 đến 8 TQ(D)
  • Phase_seg1: 1 đến 8 TQ(D)
  • Phase_seg2:  max(Phase_seg1, Thời gian lan truyền thông tin IPT)


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

[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