CHÈN BIT TRONG CAN CỔ ĐIỂN
Cách bộ thu tách dữ liệu tải khỏi các bit chèn
Trong vùng áp dụng chèn bit, bộ phát chèn một bit có giá trị ngược lại sau năm bit cùng giá trị trên đường truyền. Bộ thu kiểm tra và loại bỏ bit đó trước khi diễn giải các trường. Trước tiên, hãy xác định ranh giới khung, rồi đối chiếu dạng sóng trên đường truyền với khung đã giải mã.
Chèn bit
Bộ phát chèn một bit có giá trị ngược lại sau năm bit cùng giá trị trên đường truyền.
Xác định ranh giới
Bộ thu ngừng áp dụng quy tắc chèn bit động sau chuỗi CRC.
Đo tín hiệu ở cả hai đầu
So sánh cùng một khung thử nghiệm trên hai đoạn cáp đồng.
Xác nhận đây là CAN cổ điển, rồi xác định loại khung và tốc độ bit danh định.
Kiểm tra xem dãy bit liên tiếp có nằm trong vùng áp dụng chèn bit hay không.
Đối chiếu các cạnh chuyển mức trên tín hiệu thô với khung do máy phân tích giải mã và các lỗi do bộ điều khiển ghi nhận.
Danh sách kiểm tra dạng sóng — mở rộng
| Mục kiểm tra | Nội dung cần xác nhận | Cách xác minh |
|---|---|---|
| Các bit trên đường truyền | Dãy bit liên tiếp cùng trạng thái | Đếm từ đầu vùng áp dụng quy tắc |
| Ranh giới trường | Điểm kết thúc chuỗi CRC | Xác định bit phân cách, ACK và EOF |
| Mở rộng kết nối qua cáp quang | Vị trí quan sát | Căn chỉnh hai bản ghi tín hiệu trên cáp đồng |
Sau khi ghi dữ liệu CAN vào bộ điều khiển, bạn có thể thấy trên máy hiện sóng nhiều bit hơn tổng số bit của các trường logic trong khung. Các bit dư này là do cơ chế chèn bit. Trong vùng áp dụng quy tắc chèn bit của khung CAN cổ điển, bộ phát chèn một bit có giá trị ngược lại sau năm bit liên tiếp cùng giá trị. Bộ thu dùng cùng quy tắc để nhận diện và loại bỏ bit đó, rồi diễn giải các trường gốc. Cơ chế này giúp bộ thu hiệu chỉnh định thời bit và giải thích vì sao các thông điệp có cùng độ dài có thể chiếm dụng bus trong những khoảng thời gian khác nhau.
Tín hiệu không đổi mức vẫn mang các bit
Trên bus CAN tốc độ cao dùng cáp đồng, bộ thu phát chuyển các bit từ bộ điều khiển thành các trạng thái vi sai giữa CAN_H và CAN_L. Bit trội biểu thị mức logic 0, còn bit lặn biểu thị mức logic 1. Khi một nút phát trạng thái trội, trạng thái đó có thể lấn át các trạng thái lặn do các nút khác phát. Dù trạng thái điện không đổi, bộ điều khiển thu vẫn xác định giá trị bit tại điểm lấy mẫu trong mỗi khoảng thời gian bit. Một đoạn tín hiệu giữ ở mức trội có thể chứa nhiều bit 0, mỗi bit chiếm một khoảng thời gian bit.
Mỗi nút có bộ dao động riêng. Có thể đặt cùng một thời gian bit danh định cho các nút, nhưng trên thực tế vẫn có sai lệch nhỏ. Bộ thu đồng bộ định thời ở đầu khung và dùng các cạnh chuyển mức đáp ứng điều kiện để hiệu chỉnh pha trong khung. Nếu không có cạnh phù hợp trong một thời gian dài, độ lệch giữa thời điểm lấy mẫu của bộ thu và các ranh giới bit của bộ phát sẽ tăng. Việc chèn bit tạo ra các cạnh chuyển mức trong những dãy bit dài cùng giá trị, tạo cơ hội đồng bộ. Việc lấy mẫu chính xác còn phụ thuộc vào độ trễ lan truyền, cấu hình điểm lấy mẫu và chất lượng tín hiệu.

Bộ phát đếm các bit đã phát trên bus
Xét một chuỗi đơn giản trong vùng chèn bit động, với bộ đếm số bit liên tiếp ban đầu bằng 0. Chuỗi logic gồm năm bit 0, theo sau là một bit 1. Sau khi phát bit 0 thứ năm, bộ phát chèn một bit 1 rồi phát bit 1 gốc. Trên bus có năm bit 0, một bit 1 chèn và bit 1 gốc. Vị trí chèn có thể nằm trong một byte hoặc ngay sau điểm kết thúc một trường. Bộ điều khiển theo dõi dòng bit liên tục và không đặt lại bộ đếm khi qua ranh giới byte.
Bit chèn cũng là một phần của chuỗi được phát và bắt đầu một dãy mới. Giả sử chuỗi gốc có bốn bit 1 sau năm bit 0. Bốn bit 1 đó cùng với bit 1 chèn tạo thành năm bit 1 liên tiếp, nên bộ phát tiếp tục chèn một bit 0. Không thể giản lược quy tắc thành cứ năm bit gốc thì chèn một bit. Các trường liền kề và những bit đã chèn trước đó ảnh hưởng đến vị trí chèn tiếp theo.
Sau năm bit giống nhau, bộ thu chờ bit tiếp theo có trạng thái ngược lại. Khi lấy mẫu được giá trị dự kiến, bộ thu nhận diện đó là bit chèn và cập nhật trạng thái theo dõi dãy bit đã nhận, nhưng không đưa bit đó vào quá trình phân tích các trường. Bit 1 gốc theo sau được giữ lại. Hai bit 1 có thể xuất hiện trên bus dưới dạng một đoạn tín hiệu liên tục không đổi mức. Bộ thu phân biệt vai trò của chúng dựa vào vị trí và diễn biến của dãy bit đã nhận.

Điểm dừng đếm dãy bit liên tiếp
Quy tắc chèn bit động cũng áp dụng cho các trường thuộc vùng chèn bit của khung từ xa CAN cổ điển. DLC của khung có thể cho biết độ dài dữ liệu được yêu cầu, nhưng khung không có trường dữ liệu. Khi kiểm tra dạng sóng bằng tay, hãy xác định loại khung trước khi tìm chuỗi CRC. Nếu coi DLC của khung từ xa là số byte dữ liệu theo sau, bạn sẽ xác định sai vị trí của tất cả các ranh giới tiếp theo.
Trong khung dữ liệu CAN cổ điển, quy tắc chèn bit động bắt đầu tại bit đầu khung, áp dụng qua các trường phân xử, điều khiển và dữ liệu, đến hết chuỗi CRC. Bộ thu theo dõi độ dài các trường khi xử lý vùng này. Các bit chèn làm tăng thời gian chiếm dụng bus. Mã độ dài dữ liệu (DLC) vẫn giữ nguyên ý nghĩa. Bố cục logic của các trường có thể khác với các khoảng thời gian thực tế quan sát được trên máy hiện sóng.
Bit phân cách CRC, trường ACK và phần kết thúc khung tuân theo các quy tắc riêng sau chuỗi CRC. Bộ đếm dùng cho chèn bit động ở phần trước không còn áp dụng. Ví dụ, phần kết thúc khung CAN cổ điển chứa bảy bit lặn liên tiếp. Chỉ riêng dãy bit này không phải là dấu hiệu của lỗi chèn bit. Hãy xác định ranh giới khung và mọi cờ lỗi xuất hiện trước khi kết luận đoạn tín hiệu không đổi mức nằm trong vùng nào.
Bộ phát tính chuỗi CRC của CAN cổ điển từ các bit logic chưa chèn bit, tính từ đầu khung đến hết trường dữ liệu. Sau đó, bộ phát đưa chuỗi CRC vào vùng áp dụng quy tắc chèn bit khi truyền. Bộ thu loại bỏ các bit chèn động và thực hiện phép kiểm tra CRC tương ứng. Vì vậy, phần bit bổ sung do mã hóa và phép kiểm tra tính toàn vẹn của trường phục vụ hai mục đích khác nhau. CAN FD áp dụng các quy tắc khác trong trường CRC. Hãy đối chiếu định dạng khung và cấu hình bộ điều khiển với đặc tả áp dụng.
Cùng độ dài dữ liệu nhưng thời gian chiếm dụng bus có thể khác nhau
Hãy phân biệt thời gian truyền khung với thời gian thông điệp chờ được truyền. Việc chèn bit ảnh hưởng đến thời gian truyền của chính khung trên đường truyền. Độ trễ phân xử phụ thuộc vào những gì các nút khác đang phát tại thời điểm đó. Với thông điệp định kỳ, hãy ghi riêng khoảng cách giữa hai bit bắt đầu khung liên tiếp và khoảng thời gian từ đầu đến cuối một khung. Những thay đổi ở hai phép đo này gợi ý các nguyên nhân khác nhau.
Xét hai khung dữ liệu CAN cổ điển được truyền thành công và có cùng số byte dữ liệu. Mã định danh hoặc mẫu dữ liệu của chúng có thể khác nhau. Một khung có thể có nhiều dãy dài gồm các bit cùng giá trị, trong khi các bit 0 và 1 ở khung kia thường xen kẽ. Khung thứ nhất có thể cần nhiều bit chèn hơn, và các giá trị cụ thể trong chuỗi CRC cũng ảnh hưởng đến số bit chèn. Ở cùng tốc độ bit danh định, mỗi bit chèn làm tăng thời gian truyền thêm một khoảng thời gian bit. Khi ước tính tải bus, hãy dùng độ dài khung đo được trên đường truyền hoặc một ước tính thận trọng cho độ dài đó.
Máy phân tích giao thức thường hiển thị mã định danh, DLC và dữ liệu khôi phục được trong chế độ xem đã giải mã. Để kiểm tra mức chiếm dụng bus, hãy xác định điểm bắt đầu và kết thúc phép đo. Thời gian truyền một khung, thời gian chờ từ lúc đưa thông điệp vào hàng đợi đến khi thắng phân xử và thời gian dành cho việc truyền lại sau lỗi là các đại lượng khác nhau. Ghi rõ các ranh giới đo giúp phân biệt phần thời gian tăng do khung dài hơn với độ trễ do tranh chấp quyền truy cập bus.
Xác định vùng xuất hiện lỗi chèn bit
Trong trường áp dụng chèn bit động, bộ thu báo lỗi chèn bit nếu lấy mẫu được bit thứ sáu cùng giá trị tại vị trí lẽ ra phải có bit ngược giá trị. Một đoạn tín hiệu không đổi mức kéo dài có thể do hoạt động bất thường ở phía phát hoặc do cấu hình điểm lấy mẫu, tốc độ bit hay méo tín hiệu tại vị trí thu. Nếu một nút ở trạng thái lỗi chủ động phát cờ lỗi chủ động, các nút khác sau đó có thể thấy một dãy bit trội kéo dài vi phạm quy tắc. Vì vậy, lỗi chèn bit trong một nhật ký có thể là hệ quả của một lỗi xảy ra trước đó.
Hãy ghi lại các loại lỗi, sự kiện xảy ra sớm nhất và mọi dạng sóng thu được. Lỗi CRC cho biết kết quả tính toán của bộ thu không khớp với chuỗi CRC đã nhận. Lỗi định dạng liên quan đến một trường có định dạng quy định sẵn. Lỗi ACK có nghĩa là bên gửi không thấy bit xác nhận ở trạng thái trội như dự kiến trong khe ACK. Các lỗi này có thể nối tiếp nhau trong cùng một sự cố. Sắp xếp sự kiện theo thời gian và kiểm tra trường bị ảnh hưởng giúp thu hẹp phạm vi điều tra.

Kiểm tra từng đoạn cáp đồng và vai trò của từng thiết bị khi mở rộng CAN qua cáp quang
Tài liệu sản phẩm của FCTELE cho modem quang CAN tám kênh gắn ray DIN nêu chức năng lặp tín hiệu từ CAN sang quang và chế độ hoạt động điểm-điểm. Trong thử nghiệm kỹ thuật, hãy liệt kê các đoạn cáp đồng CAN, tuyến cáp quang và các thiết bị đầu cuối thành những điểm quan sát riêng. Đối chiếu định dạng khung, tốc độ bit, kết cuối và cách đấu dây với tài liệu của thiết bị thực tế. Sau đó, dùng một thông điệp đã biết trong hệ thống thử nghiệm cách ly để kiểm tra việc thu ở mỗi đầu. Các hình minh họa chỉ rõ các điểm quan sát. Tham khảo tài liệu của đúng mẫu thiết bị để xác định cách thiết bị truyền tín hiệu qua cáp quang.
Nếu tín hiệu và các khung đã giải mã vẫn ổn định trên đoạn cáp đồng phía phát nhưng lỗi xuất hiện gián đoạn gần bộ thu, hãy đối chiếu trạng thái và dấu thời gian ở đầu bên kia. Kiểm tra xem lỗi có đi theo một sợi cáp, một thiết bị đầu cuối hay một mức tải cụ thể hay không. Ghi lại chu kỳ thông điệp và các điều kiện khác để có thể đối chiếu, đồng thời chỉ thay đổi một biến mỗi lần. Bản ghi cuối cùng cần cho biết các trường có được khôi phục đúng không, lỗi có tái diễn không và lưu lượng ứng dụng thực tế có phục hồi sau khi thay đổi đường truyền không. Việc này giúp phân biệt phần thời gian tăng do chèn bit bình thường với lỗi truyền dẫn thực sự.
Nguồn tham khảo và phạm vi
Bosch: Phát hiện lỗi trong CAN và CAN FD · Microchip: Chèn bit và định dạng khung CAN · Thiết bị quang CAN tám kênh gắn ray DIN của FCTEL (tiếng Trung)
Dịch từ bài viết kỹ thuật bằng tiếng Trung: Đọc bài viết gốc bằng tiếng Trung.
Câu hỏi thường gặp
Vì sao phải chèn một bit sau năm bit cùng giá trị?
Bit có giá trị ngược lại tạo ra một cạnh chuyển mức trên đường truyền. Các cạnh đáp ứng điều kiện đồng bộ có thể được dùng để hiệu chỉnh định thời bit, qua đó giới hạn thời gian tín hiệu duy trì ở cùng một mức.
Bảy bit lặn của EOF có gây lỗi chèn bit không?
EOF của CAN cổ điển có định dạng cố định. Bảy bit lặn của EOF nằm ngoài vùng áp dụng quy tắc chèn bit động.
Làm thế nào để truy tìm lỗi chèn bit qua một tuyến cáp quang?
Ghi lại cùng một khung thử nghiệm trên cả hai đoạn cáp đồng, kiểm tra tốc độ bit, việc lấy mẫu và kết cuối, đối chiếu dấu thời gian lỗi của các bộ điều khiển và kiểm tra cách các thiết bị quang chuyển tiếp lưu lượng.
Đọc thêm
Mở rộng bus CAN bằng cáp quang · Giao diện điện và cơ chế phân xử CAN


