Tổng quan về mạng CAN 

1. Lịch sử phát triển mạng CAN 

Mạng can là một giao thức giao tiếp được ra mắt lần đầu tiên bởi Robert Bosch GmbH, Đức vào năm 1986 và được công nhận bởi SAE hiệp hội các kĩ sư ô tô Mỹ, có trụ sở đặt tại Detroit Michigan khi mà Mercedes đưa ra yêu cầu cho họ là phát triển một hệ thống liên lạc giữa ba ECU (bộ điều khiển điện tử) trên xe. Nhu cầu về một hệ thống liên lạc đa chủ trở nên rất cần thiết. Do vậy, mạng can đầu tiên đã ra đời vào năm 1987 bởi Intel chế tạo. 

Ngoài nền công nghiệp ô tô, CAN cũng được ứng dụng rộng rãi trong các ngành công nghiệp tự động hóa, đóng tàu, tàu ngầm, nông nghiệp, y khoa nhờ vào các ưu điểm và sự tối ưu. 

Từ lúc giới thiệu lần đầu tiên cho đến hiện tại, dựa trên các đặc điểm thông số kỹ thuật của Bosch mà họ đã cho ra mắt các phiên bản khác nhau cho CAN như sau: 

CAN 1.0 

CAN 2.0 

Phiên bản 2.0 của CAN được chia thành hai phần: 

CAN tiêu chuẩn (Phiên bản 2.0A): sử dụng ID (Identifier) 11-bit. CAN mở rộng (Phiên bản 2.0B): sử dụng ID 29-bit.

Hai phần được định nghĩa bởi các ID khác nhau của thông điệp, với sự khác biệt chính là độ dài mã ID. 

Vào năm 1993, hiệp hội ISO đã phát hành tài liệu tiêu chuẩn hóa cho CAN thông qua tiêu chuẩn ISO. Sự khác biệt là ở lớp vật lý. 

ISO 11898 (Cần lưu ý rằng tiêu chuẩn của ISO không phải là toàn bộ các đặc tính của CAN mà Bosch qui định) xử lý các ứng dụng tốc độ cao lên đến 1Mbit / giây. 

ISO 11898-1: CAN lớp liên kết – dữ liệu_ CAN tốc độ cao. 

ISO 11898-2: CAN lớp vật lý_ CAN tốc độ cao. 

ISO 11898-3: CAN lớp vật lý_ CAN tốc độ thấp. 

Theo sau ISO 11898, còn rất nhiều phiên bản khác nhằm tiêu chuẩn hóa CAN tính đến thời điểm hiện tại ví dụ như ISO 11519 có giới hạn trên là 125kbit / giây. Đặc điểm của mạng CAN 

Một số khái niệm 

Node 

Node là thành phần độc lập có thể xử lý truyền nhận dữ liệu trên bus CAN. Một node là một module có hệ thống xử lý cơ bản, gồm có 3 thành phần là vi điều khiển MCU, chip điều khiển CAN (CAN controller) và chip thu-phát (CAN transceiver). Mạng can bao gồm nhiều node. Trong đó, mỗi node có thể giao tiếp với bất kì node nào khác nhờ việc truyền đi và nhận các gói dữ liệu gọi là message. 

Message  

Message là gói dữ liệu được truyền trong CAN. Mỗi message sẽ được gán một ID. Tùy theo mức độ ưu tiên của message mà có một ID khác nhau. Một message có thể có nhiều node nhận. 

Dữ liệu trong message được gửi đi dưới dạng 4 loại khung khác nhau: 

Khung dữ liệu (Data Frame). 

Khung yêu cầu hay điều khiển dữ liệu (Remote Frame). 

Khung báo lỗi (Error Frame). 

Khung báo quá tải (Overflow Frame). 

Tốc độ truyền dữ liệu 

Truyền tốc độ cao 

CAN tốc độ cao (CAN High Speed): được định nghĩa trong tiêu chuẩn ISO 118982 và hoạt động với tốc độ 125kbit/s đến 1Mbit/s và được sử dụng cho mạng lưới của các hệ thống sau: 

Hệ thống kiểm soát động cơ (Motronic cho động cơ xăng và động cơ diesel điều khiển điện tử). 

Các hệ thống hỗ trợ (điều khiển hành trình lái – ACC).

Điều khiển hệ thống truyền lực bằng điện tử. 

Các hệ thống cân bằng xe (ESP). 

Truyền tốc độ thấp 

CAN tốc độ thấp (CAN Low Speed): được định nghĩa trong tiêu chuẩn ISO 11898-2 và hoạt động với tốc độ 5 đến 125kbit/s và được ứng dụng các hệ thống sau: 

Điều chỉnh gương. 

Hệ thống đèn. 

Hệ thống hiển thị. 

Điều khiển hệ thống máy điều hòa. 

Điều chỉnh ghế ngồi. 

Chống trộm. 

Gạt nước. 

Giá trị của Bus CAN 

Bus có thể có một trong hai giá trị logic: “trội” hoặc “lặn”. Trong quá trình truyền đồng thời các bit “trội” và “lặn”, giá trị bus kết quả sẽ là “trội”. Mức “trội” sẽ được biểu thị bằng “0” và mức “lặn” bằng “1”. 

  • Mức dominant/mức trội/ ứng với mức logic 0. 
  • Mức recessive/mức lặn/ ứng với mức logic 1. 

Giá trị trội: là giá trị điện áp của bus được chủ động thay đổi bởi nút CAN muốn truyền tín hiệu. Có giá trị tương ứng là 0. 

Giá trị lặn: là giá trị điện áp của bus bị động trả về giá trị mặc định bởi điện trở cuối. Giá trị lặn chỉ xảy ra khi không có bất kì nút CAN nào muốn truyền tín hiệu. Giá trị tương ứng là 1. 

Hình 1. Điện áp trên hai dây CAN High và Low tốc độ cao [3]

Ở trạng thái lặn, cả hai dây CAN đều có cùng cài đặt mức tín hiệu điện áp 2.5V. Ở trạng thái trội, điện áp của dây CAN H tăng lên theo một giá trị định trước (+1V). Đồng thời, điện áp của dây CAN L cũng giảm theo (- 1V). Khi đó, điện áp của dây CAN H lên 3.5V (2.5V + 1V = 3.5V) ở trạng thái trội. Điện áp trong dây CAN L giảm xuống cực đại 1,5V (2,5V – 1V = 1,5V) ở trạng thái trội. Do đó, sự khác biệt điện áp giữa CAN H và CAN L trong trạng thái lặn là 0V và trong trạng thái trội là 2V. 

Hình 2. Chuyển đổi tín hiệu CAN H và CAN L tốc độ cao [3] 

Bộ khuếch đại, có nhiệm vụ đánh giá các tín hiệu đầu vào từ hai dây CAN H và CAN L. Sau đó, truyền các tín hiệu đã chuyển đổi (3.5V – 1.5V = 2V) đến vùng nhận CAN của thiết bị điều khiển. Tín hiệu này được gọi là điện áp đầu ra của bộ khuếch đại. 

Hai dây CAN được xoắn vào nhau, do đó khi bị nhiễu thì sẽ tác động như nhau đến cả hai dây. 

Hình 3. Điện áp trên hai dây High và Low của CAN tốc độ cao khi bị nhiễu [3]

Hình 4. Điện áp trên hai dây CAN H và CAN L của CAN tốc độ thấp [3] 

Ở trạng thái lặn, điện áp của dây CAN H được cài đặt ở mức 0V và điện áp của dây CAN L ở mức 5V. Điện áp của dây CAN H tăng lên theo một giá trị định trước (+3.6V) khi ở trạng thái trội. Đồng thời, điện áp của dây CAN L cũng giảm theo (- 3.6V). Điều này dẫn đến sự gia tăng điện áp của dây CAN H lên 3.6V (0V+ 3.6V = 3.6V) ở trạng thái trội và điện áp trong dây CAN L giảm xuống cực đại 1,4V (5V – 3.6V = 1,4V). Do đó, sự khác biệt điện áp giữa CAN H và CAN L trong trạng thái lặn là 5V và trong trạng thái trội 2.2V. 

Hình 5. Chuyển đổi tín hiệu CAN H và CAN L tốc độ thấp [3] 

Mạng can tốc độ thấp cũng có bộ nhận nằm trong bộ thu phát. Bộ nhận này là bộ khuếch đại, có nhiệm vụ đánh giá các tín hiệu đầu vào từ hai dây CAN H và CAN L. Sau đó, truyền các tín hiệu đã chuyển đổi (3.6V – 1.4V = 2.2V) đến vùng nhận CAN của thiết bị điều khiển. Tín hiệu này gọi là điện áp đầu ra của bộ khuếch đại.

Bảng 1. Giá trị điện áp trên hai dây CAN H và CAN L 

CAN tốc độ cao  CAN tốc độ thấp
CAN H  CAN L  CAN H  CAN L
Tốc độ  125kb/s đến 1 Mb/s  125kb/s
Trạng thái trội 0  3.5 V  1.5 V  3.6 V  1.4 V
Trạng thái lặn 1  2.5 V  2.5 V  0 V  5 V
Mức điện áp  5 V  5 V

Cơ chế giao tiếp 

Đặc trưng của CAN là phương pháp định địa chỉ và giao tiếp hướng đối tượng. Trong mạng can, mỗi thông tin trao đổi được coi như một đối tượng và được gán một số mã ID. 

Thông tin được truyền đi trên bus theo kiểu truyền gửi thông báo với độ dài khác nhau. Các thông báo không chỉ được gửi tới một địa chỉ nhất định mà bất cứ trạm nào cũng có thể nhận theo nhu cầu. Mã ID dùng để phân biệt nội dung mỗi thông báo. ID không nói lên địa chỉ đích của thông báo, mà chỉ biểu diễn ý nghĩa của dữ liệu trong tin nhắn. Vì thế, mỗi trạm trên mạng có thể tự quyết định tiếp nhận và xử lý tin nhắn hay không tiếp nhận tin nhắn qua phương thức lọc tin nhắn. Do sử dụng phương thức lọc tin nhắn mà nhiều trạm có thể đồng thời cùng nhận một tin nhắn và có các phản ứng khác nhau. Một khung yêu cầu sẽ được gửi khi một trạm yêu cầu một trạm khác gửi dữ liệu. Trạm có khả năng cung cấp nội dung thông tin đó sẽ gửi trả lại một khung chứa dữ liệu có cùng mã ID với khung yêu cầu. Cùng với những tính năng đơn giản, cơ chế giao tiếp hướng đối tượng ở mạng CAN còn mang lại tính linh hoạt và tính nhất quán dữ liệu của hệ thống. 

2. Cấu trúc của mạng can 

Bus CAN bao gồm 3 thành phần chính : 

Hai dây riêng biệt được gọi là CAN H (CAN High) và CAN L (CAN Low) xoắn vào nhau: 

Hình 6. Hai dây CAN H và CAN L

  • Dây CAN H là dây có điện áp cao khi ở trạng thái trội. 
  • Dây CAN L là dây có điện áp thấp khi ở trạng thái trội. 

Điện trở đầu cuối của đường dây là 120Ω. 

Node: là thành phần kết nối 2 dây CAN bao gồm: MCU, CAN Controller, CAN Transceiver. 

Hình 7. Cấu trúc của mạng CAN 

  • MCU (Microcontroller): là một vi điều khiển, thực hiện hoạt phân phối dữ liệu cần truyền đến CAN controller, lấy dữ liệu nhận từ CAN controller để sử dụng cho các hoạt động của Node. 
  • CAN Controller: xử lý về truyền nhận dữ liệu, báo lỗi, tính toán thời gian bit, … theo chuẩn CAN quy định; phát dữ liệu cần truyền dạng số (theo mức logic 0/1) ra chân TX và nhận dữ liệu dạng số qua chân RX. 
  • CAN Transceiver: là bộ chuyển đổi từ tín hiệu số (mức logic 0/1) trên đường TX thành tín hiệu tương tự trên bus CAN. Ngược lại, chuyển đổi từ tín hiệu trên bus CAN (CAN_H và CAN_L) thành tín hiệu số trên đường RX. 

Cấu trúc phân lớp 

Lớp vật lý là cấp thấp nhất trong bộ giao vận. Được định là nghĩa cách biểu diễn cũng như cách thu nhận bit 0 và 1, cách định thời và cách đồng bộ hóa. Bao gồm các thành phần vật lý như: đường dây và điện áp dùng để gửi thông tin. 

Lớp dữ liệu – liên kết: được chia thành 2 lớp con nhỏ hơn là điều khiển liên kết logic và điều khiển truy cập trung gian (MAC) nhằm định nghĩa khung truyền và những nguyên tắc về quyền ưu tiên.

Hình 8. Cấu trúc phân lớp của mạng CAN 

Cấu trúc bức điện 

Giao thức ở mạng can sử dụng 4 loại khung (frame) khác nhau để truyền tải dữ liệu và điều khiển. Bốn loại khung này gồm: 

Khung dữ liệu (Data frame) là khung mang dữ liệu từ một bộ truyền đến các bộ nhận. Khung này có vùng để mang các byte dữ liệu. 

Khung yêu cầu hay khung điều khiển (Remote frame) là khung được truyền từ một node để yêu cầu node khác truyền khung dữ liệu có ID (IDENTIFIER) trùng với khung yêu cầu. 

Khung báo lỗi (Error frame) là khung được truyền bởi bất kỳ node nào khi node đó phát hiện lỗi từ bus. 

Khung báo quá tải (Overload frame) được sử dụng để tạo thêm độ trễ giữa các khung dữ liệu hoặc khung yêu cầu. 

Chỉ có khung dữ liệu và khung yêu cầu là có ID, cơ chế phân xử sẽ áp dụng cho hai loại khung này khi chúng được truyền trên bus. Khung dữ liệu và khung yêu cầu có hai định dạng khác nhau là định dạng chuẩn (Standard) và định dạng mở rộng (Extended): 

Định dạng khung chuẩn sử dụng ID có độ dài 11 bit. 

Định dạng khung mở rộng sử dụng ID có độ dài 29 bit. 

Khung dữ liệu 

Một khung dữ liệu bao gồm bảy vùng bit khác nhau theo thứ tự là: Vùng bắt đầu khung (Start of frame – SOF).

Vùng phân xử (Arbitration field). 

Vùng điều khiển (Control field). 

Vùng dữ liệu (Data field). 

Vùng kiểm tra (CRC field). 

Vùng báo nhận (ACK field). 

Vùng kết thúc khung (End of frame – EOF). 

Hình 9. Khung tiêu chuẩn [5] 

Hình 10. Khung mở rộng [5] 

Vùng bắt đầu khung (Start of Frame – SOF): là vùng khởi đầu của khung dữ liệu, có độ dài là 1 bit và luôn là một bit trội. Khi Bus rảnh node mới được phép truyền dữ liệu. Tất cả các trạm phải đồng bộ hóa dựa vào bit khởi đầu này. Một nút CAN muốn gửi một tin nhắn thì nút đó sẽ đưa SOF trạng thái trội 0 để thông báo cho các nút khác. Ngoài ra, SOF còn có nhiệm vụ bắt đầu quá trình đồng bộ giữa các nút và đồng thời báo hiệu quá trình phân xử sắp diễn ra. 

Vùng phân xử (Arbitration field): Vùng phân xử là vùng giải quyết tranh chấp khi một lúc có nhiều thông tin được truyền đi. Giá trị số của mã ID càng thấp thì có mức ưu tiên càng cao. Vùng phân xử có độ dài 12 bit bao gồm 11 bit ID và 1 bit RTR đối với khung tiêu chuẩn. Đối với khung mở rộng có độ dài 32 bit, bao gồm có 29 bit ID, 1 bit SRR, 1 bit IDE và 1 bit RTR. 

Bit RTR (Remote Transmission Request): là bit dùng để phân biệt khung  dữ liệu và khung yêu cầu. Bit này bằng 0 (bit dominant) là khung dữ liệu, bằng 1 (bit recessive) là khung yêu cầu. Bit này luôn đặt ngay sau ID. Chú ý, bit RTR là nằm sau bit ID -18 với khung chuẩn và sau ID -0 với khung mở rộng. 

Bit SRR (Substitute Remote Request): là bit chỉ có ở khung mở rộng và luôn là bit 1. Khi có hai Node cùng truyền, một Node truyền khung dữ liệu tiêu chuẩn, một Node truyền khung dữ liệu mở rộng có ID giống nhau thì Node truyền khung chuẩn sẽ thắng phân xử vì đến vị trí sau Base ID, khung chuẩn là bit RTR = 0, còn khung

mở rộng là bit SRR = 1. Tóm lại, khung chuẩn chiếm ưu thế hơn so với khung mở rộng khi có Base ID như nhau. 

Bit IDE: là bit phân biệt giữa loại khung chuẩn và khung mở rộng. Nếu IDE  =0 (dominant) là khung chuẩn và IDE = 1 (recessive) là khung mở rộng. Bit này có thể thuộc: vùng phân xử nếu là khung mở rộng hoặc thuộc vùng điều khiển nếu là khung chuẩn. 

Dữ liệu trên bus CAN được truyền nối tiếp, các node nhận từng bit, khi một node nhận xong Base ID thì sẽ nhận tiếp bit tiếp theo, bit này có thể là SRR (nếu là khung mở rộng) hoặc RTR (nếu là khung chuẩn) vì đến đây node chưa xác định được loại khung. 

Node sẽ xác định như sau: 

Nếu bit ngay sau Base ID là bit dominant (bit 0) chắc chắn là khung dữ liệu định dạng chuẩn. 

Nếu bit ngay sau Base ID là bit recessive (bit 1) là khung điều khiển định dạng chuẩn hoặc khung mở rộng (khung dữ liệu hoặc khung yêu cầu). Node sẽ nhận tiếp bit tiếp theo là bit IDE để phân biệt. 

Nếu IDE = 0 thì bit trước đó là bit RTR và đây là khung yêu cầu dạng chuẩn. 

Nếu bit IDE = 1 thì bit trước đó là bit SRR và đây là khung mở rộng nhưng chưa biết là khung dữ liệu hay khung yêu cầu. Node sẽ nhận tiếp Extended ID và đến bit RTR mới phân biệt được. 

Vùng điều khiển (Remote Field): có tổng chiều dài 6 bit, IDE bit trội nếu là khung tiêu chuẩn (bit 0), khung mở rộng bit lặn (bit 1) khi khung tiêu chuẩn và khung mở rộng cùng truyền một lúc thì khung tiêu chuẩn sẽ được ưu tiên (bit 0), r0 bit không sử dụng để sử dụng cho mục đích tương lai, 4 bit cuối mã hóa chiều dài dữ liệu. Có nhiệm vụ quy định số byte của trường dữ liệu. 

Hình 11. Vùng điều khiển 

Vùng dữ liệu (Data Field): Vùng dữ liệu là vùng chứa dữ liệu mà khung cần truyền có chiều dài từ 0 đến 8 byte, trong đó mỗi byte được truyền đi theo thứ tự từ bit có giá trị cao nhất (MSB) đến bít có giá trị thấp nhất (LSB). Độ dài của vùng dữ liệu phải tương ứng với giá trị của DLC. 

Vùng kiểm tra (CRC field): Vùng kiểm tra hay vùng CRC gồm 16 bit và được chia làm hai phần là chuỗi CRC (CRC Sequence) và phần phân cách CRC (CRC

Delimiter). 

Chuỗi CRC. 

  • Gồm 15 bit. 
  • Được đánh dấu từ CRC-14 đến CRC-0. 
  • Giá trị của CRC sẽ ứng với một phép tính, thực chất là một phép chia đa thức (chia bit nhị phân). 

– Gờ ngăn cách CRC. 

  • Có độ dài 1 bit. 
  • Vị trí của bit ngăn cách CRC luôn nằm ngay sau CRC-0. 
  • Giá trị của bit ngăn cách CRC luôn là bit lặn nhằm làm nhiệm vụ phân cách vùng 

CRC với vùng liền kề nó. 

Một chuỗi CRC cho phép hệ thống kiểm tra sự nguyên vẹn của dữ liệu truyền. Tất cả các nút nhận dữ liệu đều phải thực hiện bước này. Vùng dữ liệu được đưa vào để tính toán CRC được cung cấp từ: 

Khởi đầu khung. 

Trường phân xử. 

Vùng điều khiển dữ liệu chỉ đối với khung yêu cầu dữ liệu. 

Vùng dữ liệu chỉ đối với khung dữ liệu. 

Quá trình tính toán CRC thực chất là một phép chia nhị phân sử dụng modulo -2 (là một dạng phép toán tìm phần dư của phép chia 2 số, còn gọi là modulus). Lưu ý rằng mã CRC chỉ phù hợp nhất đối với các chuỗi bit được kiểm tra có độ dài dưới 127 bit. Đối với khung CAN, tổng bit cần tính CRC tối đa là 83 bit (tiêu chuẩn) và 103 bit (mở rộng). 

Vùng báo nhận (ACK Field): Vùng xác nhận có độ dài 02 bit và được chia làm 02 phần: 

Rảnh ACK. 

  • Có độ dài 1 bit. 
  • Nút truyền khung CAN ban đầu sẽ đặt bit này ở giá trị lặn (ACK = 1). 
  • Khi một hoặc nhiều nút nhận khung hoàn tất đầy đủ các dữ liệu trong trường dữ liệu mà không trả về lỗi nào đồng thời tính toán CRC chính xác, thì các nút đó sẽ phản hồi lại đến nút nhận thông qua ACK Slot bit. 
  • Thông tin phản hồi được thể hiện qua việc các nút nhận khung sẽ kéo giá trị ACK Slot thành bit trội (ACK = 0). Gờ ngăn cách ACK có độ dài 1 bit. 
  • Có nhiệm vụ phân cách giữa phần ACK với phần khác liền kề sau nó.

Lưu ý, bit ACK Slot luôn được đặt giữa 02 bit lặn là gờ ngăn cách CRC và gờ ngăn cách ACK. 

Hình 12. Vùng báo nhận 

Vùng kết thúc khung (End of frame – EOF): là vùng thông báo kết thúc một khung dữ liệu hay một khung yêu cầu dữ liệu. EOF có độ dài 07 bit, giá trị của 07 bit này luôn là lặn. 

Hình 13. Vùng kết thúc 

Ở khoảng giữa hai khung bất kỳ cũng phải giữ ít nhất 3 bit ở trạng thái “lặn” gọi là khoảng nghỉ của bus. Nếu sau đó không có nút nào muốn truyền dữ liệu thì bus tiếp tục giữ ở trạng thái “lặn”, tức trạng thái bus không tải. 

Khung yêu cầu 

Khung yêu cầu có tác dụng thông báo cho node nguồn đang truyền dữ liệu. Một khung yêu cầu có thể là dạng chuẩn hay dạng mở rộng. Khung yêu cầu cũng gồm  sáu vùng bit khác nhau là: Vùng bắt đầu khung (Start Of Frame), vùng phân xử (Arbitration Field), vùng điều khiển (Control Field), vùng kiểm tra (CRC Field), vùng ACK (ACK Field), vùng kết thúc khung (End Of Frame). 

Khung lỗi 

Khung báo lỗi (Error frame) được truyền trên bus bởi các node sẽ phát hiện thấy có điều kiện lỗi. Khung báo lỗi gồm hai vùng khác nhau. Vùng đầu tiên (superposition of Error Flags) là sự chồng chập của các cờ lỗi (Error Flag) được phát từ các node khác nhau trên bus. Tiếp theo đó là vùng phân cách khung báo lỗi (Error delimiter). 

Hình 14. Khung lỗi

Một khung lỗi được gửi từ bất kỳ trạm nào phát hiện lỗi trên bus. Khung lỗi bao gồm cờ lỗi và phân cách lỗi. CAN phân biệt hai loại lỗi là lỗi chủ động và lỗi bị động. 

Tương ứng với chúng là hai dạng cờ lỗi: 

Dạng cờ lỗi chủ động bao gồm 6 bit trội liền nhau. 

  

Hình 15. Khung lỗi 

Dạng cờ lỗi bị động bao gồm 6 bit lặn liền nhau, một trạm lỗi chủ động khi phát hiện lỗi sẽ gửi một cờ lỗi chủ động. Cờ lỗi chủ động vi phạm luật nhồi bit hoặc phá bỏ dạng cố định của trường ACK hay bit kết thúc khung. Chính vì vậy, tất cả các trạm khác cũng phát hiện ra lỗi và bắt đầu gửi cờ lỗi. Cuối cùng, dãy bit trội quan sát được trên bus thực tế là kết quả của sự xếp chồng nhiều cờ lỗi khác nhau phát riêng từ các trạm. Tổng chiều dài của dãy này dao động trong khoảng từ 6 đến 12 bit. Phân cách lỗi được đánh dấu bằng 8 bit lặn liên tục. Sau khi gửi xong một cờ lỗi, mỗi trạm phải gửi tiếp một số bit lặn và đồng thời quan sát bus. Cho đến khi phát hiện ra một bit lặn (tức là khi các trạm khác đã gửi xong cờ lỗi chủ động), chúng sẽ phát tiếp bảy bit lặn. 

Hình 16. Khung lỗi

Khung quá tải 

Hình 17. Khung quá tải 

Một khung quá tải có cấu trúc tương tự như ở khung lỗi bao gồm cờ quá tải và phân cách quá tải. 

Cờ quá tải gồm sáu bit trội tương tự như cờ lỗi chủ động. Cờ quá tải xóa bỏ dạng cố định ở khoảng trống giữa hai khung. Do đó tất cả các trạm khác cũng sẽ phát hiện sự quá tải và bắt đầu gửi cờ quá tải. Cũng giống như khung lỗi, phân cách quá tải được đánh dấu bằng 8 bít lặn liên tục. 

Có 3 kiểu tình trạng quá tải, cả 3 đều dẫn đến sự truyền của cờ báo quá tải. 

Tình trạng bên trong của bộ thu nhận, nó đòi hỏi phải trì hoãn khung dữ liệu hay khung yêu cầu dữ liệu kế tiếp. 

Phát hiện một bit “trội” tại bit thứ nhất hoặc bit thứ hai của khoảng nghỉ. 

Nếu nút ở mạng can lấy một bit trội ở bit thứ 8 (bit cuối cùng) của gờ phân cách lỗi hay gờ phân cách quá tải, nó sẽ bắt đầu truyền một khung quá tải chứ không truyền một khung lỗi, vì thế bộ đếm lỗi sẽ không bị gia tăng. 

Nhiều nhất là hai khung quá tải có thể được tạo ra để trì hoãn các khung dữ liệu và khung yêu cầu dữ liệu kế tiếp tức là một nút chỉ có thể truyền tối đa 2 khung quá tải liên tiếp như hình dưới đây: 

Hình 18. Khung quá tải

Cách truyền dữ liệu 

Hình 19. Sơ đồ nhận CAN message 

Message được truyền bằng cách ghi vào các thanh ghi tương ứng. Trạng thái và các lỗi có thể phát hiện bằng đọc các thanh ghi tương ứng. Tất cả các message được kiểm tra lỗi và so sánh với các filter (thanh ghi lọc) để xem nó có được nhận và chứa vào trong 1 trong 2 thanh ghi nhận. 

Hình 20. Sơ đồ truyền CAN message

Can hỗ trợ các kiểu frame sau: 

  • Kiểu frame chuẩn. 
  • Kiểu mở rộng. 
  • Remote frame. 
  • Error frame. 
  • Overload Frame Reception. 
  • Khoảng giữa các frame truyền. 

Các tài nguyên trong module CAN:  

  • 3 thanh ghi truyền: TXB0, TXB1 và TXB2. 
  • 2 thanh ghi nhận: RXB0 và RXB. 
  • 2 mặt nạ nhận (filter mask), mỗi cái cho một thanh ghi nhận: RXM0, RXM1. 
  • 6 thanh ghi lọc, 2cho RXB0 và 4 cho RXB1: RXF0, RXF1, RXF2, RXF3,RXF4, RXF5. 

Module CAN sử dụng chân RB2/CANTX và RB3/CANRX để giao tiếp với busCAN. Trình tự sau để thiết lập CAN module trước khi sử dụng để truyền hay nhận: 

  • Đảm bảo module trong chế độ thiết lập. 
  • Thiết lập chế độ baud. 
  • Thiết lập các thanh ghi lọc và mặt nạ. 
  • Đưa module CAN về chế độ hoạt động bình thường hay các chế độ khác tùy theo áp dụng. 

Các mode hoạt động: 

  • Configuration mode: trong mode này, module CAN được khởi tạo trước  khi hoạt động. Module CAN không cho phép vào mode này khi có một sự  truyền hay nhận đang xảy ra, nó giống như cái khóa bảo vệ các thanh ghi khi hoạt động. 
  • Loop back mode:mode này cho phép truyền các message từ buffer truyền sang buffer nhận mà không thực sự truyền message ra ngoài CAN bus, sử dụng  phát triển và kiểm tra hệ thống. Bit ACK không được kiểm tra và thiết bị cho phép các messages của nó như những message từ các node khác. 
  • Disabled mode: trong mode này, module không truyền hay nhận, Mode này giống như tắt module, làm cho xung clock dừng. 
  • Normal mode: là mode hoạt động cho thiết bị. Trong mode này, thiết bị kiểm tra tất cả các message trên bus và tạo bit ACK, frame lỗi… và chỉ là mode  duy nhất cho phép truyền nhận message lên bus CAN.
  • Error recognition mode: mode có thể thiết lập để bỏ qua tất cả các lỗi và nhận bất cứ message nào.

Bài viết của VATC đã cung cấp thông tin chi tiết về mạng CAN (Controller Area Network) trong ô tô. Hy vọng bạn đã có cho mình thêm những kiến thức thú vị và hữu ích. Đừng quên theo dõi website của chúng tôi để tiếp tục cập nhật những kiến thức ô tô hay nhất mỗi ngày nhé!

Trung Tâm Huấn Luyện Kỹ Thuật Ô Tô Việt Nam – VATC

  • Địa chỉ: Số 4-6, Đường số 4, Phường Hiệp Bình Phước, Thành Phố Thủ Đức, Thành phố Hồ Chí Minh
  • Điện thoại: 0945711717
  • Email: info@oto.edu.vn

Có thể bạn quan tâm:

admin_donaweb