Phần 4 – Bitrate, Timing & Đồng bộ trong mạng CAN

Sau khi đã hiểu cấu trúc CAN Frame và cơ chế Arbitration, một yếu tố then chốt quyết định mạng CAN có hoạt động ổn định hay không chính là bitrate, timing và cơ chế đồng bộ. Rất nhiều lỗi CAN ngoài hiện trường không đến từ frame hay ID, mà xuất phát từ việc cấu hình timing sai, bitrate không phù hợp hoặc độ dài cáp vượt giới hạn. Trong phần này, BKAII sẽ cùng các bạn đi rõ từng vấn đề cụ thể nhé!


1. Bitrate trong CAN là gì?

Bitrate trong CAN là tốc độ truyền bit trên bus, được tính bằng bit/giây (bps). Ví dụ: 125 kbps, 250 kbps, 500 kbps hoặc 1 Mbps.

Điểm quan trọng cần nhớ: tất cả các node trên cùng một CAN bus phải sử dụng cùng một bitrate. Chỉ cần một node cấu hình sai bitrate, toàn bộ bus có thể phát sinh lỗi liên tục.

CAN không có cơ chế tự động thương lượng bitrate, vì vậy bitrate phải được thiết kế và cấu hình chính xác ngay từ đầu.


2. Tổng quan về Bit Timing trong CAN

Trong mạng CAN Bus, mỗi bit truyền đi không phải chỉ là một khoảng thời gian cố định như ta thường nghĩ. Để đảm bảo nhiều node khác nhau (với thạch anh, clock và độ trễ khác nhau) vẫn có thể hiểu đúng cùng một bit, chuẩn CAN chia thời gian của 1 bit thành nhiều phân đoạn timing.

Bạn có thể hình dung 1 bit CAN giống như một “khung thời gian”, bên trong được chia nhỏ để phục vụ cho việc đồng bộ – bù trễ – lấy mẫu chính xác.


2.1 Một CAN Bit Time gồm những phần nào?

Theo chuẩn CAN, mỗi bit time được chia thành 4 segment chính:

  • Sync Segment
  • Propagation Segment (Prop Seg)
  • Phase Segment 1 (Phase Seg1)
  • Phase Segment 2 (Phase Seg2)

Tất cả các segment này đều được đo bằng một đơn vị chung gọi là Time Quantum (TQ).


2.2 Time Quantum (TQ) là gì?

Time Quantum (TQ)đơn vị thời gian nhỏ nhất trong cơ chế timing của CAN. Bạn có thể hiểu:

  • TQ giống như “ô thời gian” nhỏ nhất
  • Mỗi segment = nhiều TQ ghép lại
  • 1 bit CAN = tổng số TQ của tất cả các segment

Ví dụ:

1 Bit CAN = 1 TQ (Sync) 
          + 5 TQ (Prop Seg)
          + 6 TQ (Phase Seg1)
          + 4 TQ (Phase Seg2)
          = 16 TQ

Khi biết thời gian của 1 TQ, ta sẽ tính được bitrate CAN.


2.3 Ý nghĩa từng segment 

🔹 Sync Segment – Đồng bộ cạnh tín hiệu

Sync Segment luôn có độ dài 1 TQ. Nhiệm vụ của nó là:

  • Đánh dấu thời điểm bắt đầu của bit
  • Giúp các node trên bus đồng bộ cạnh tín hiệu

Khi một node phát hiện cạnh chuyển mức (dominant ↔ recessive), nó sẽ dùng Sync Segment để căn chỉnh lại clock nội bộ.


🔹 Propagation Segment (Prop Seg) – Bù trễ truyền trên cáp

Prop Seg dùng để bù thời gian tín hiệu lan truyền trên:

  • Dây cáp CAN
  • Transceiver
  • IC CAN Controller

Vì tín hiệu điện không truyền tức thời, nên Prop Seg đảm bảo rằng: khi node lấy mẫu, tín hiệu đã ổn định trên toàn bus.


🔹 Phase Segment 1 (Phase Seg1) – Điều chỉnh trước điểm lấy mẫu

Phase Seg1 nằm trước điểm lấy mẫu (Sample Point). Nhiệm vụ chính:

  • Cho phép CAN controller dịch chuyển điểm lấy mẫu sớm hoặc muộn
  • Giúp hệ thống bù sai lệch clock giữa các node

Phase Seg1 có thể được kéo dài hoặc rút ngắn trong quá trình đồng bộ.


🔹 Phase Segment 2 (Phase Seg2) – Điều chỉnh sau điểm lấy mẫu

Phase Seg2 nằm sau điểm lấy mẫu, đảm bảo:

  • Kết thúc bit một cách ổn định
  • Chuẩn bị tốt cho bit tiếp theo

Khác với Phase Seg1, Phase Seg2 chỉ có thể rút ngắn, không thể kéo dài.


2.4 Minh họa trực quan

| Sync | Prop Seg | Phase Seg1 | Sample Point | Phase Seg2 |
|  1TQ |   xTQ    |    yTQ     |      ●       |    zTQ     |

👉 Sample Point thường nằm ở khoảng 70% – 87.5% của toàn bộ bit time, tùy theo cấu hình và tốc độ CAN.


2.5 Vì sao CAN cần chia bit time phức tạp như vậy?

  • Cho phép nhiều node với clock khác nhau vẫn giao tiếp ổn định
  • Bù được độ trễ cáp dài
  • Giảm lỗi do jitter và nhiễu
  • Là nền tảng cho cơ chế đồng bộ không collision của CAN

Nhờ cơ chế bit timing này, CAN có thể hoạt động ổn định trong các hệ thống thời gian thực và môi trường nhiễu cao.


3. Sample Point – Điểm lấy mẫu quan trọng nhất trong CAN

Trong mạng CAN Bus, Sample Pointthời điểm duy nhất mà mỗi node quyết định:

  • Bit này là dominant (0) hay recessive (1)

Nói cách khác, dù tín hiệu trên bus có thể dao động hoặc bị trễ ở đầu bit, node chỉ “chốt kết quả” tại Sample Point. Nếu đọc đúng → bit hợp lệ. Nếu đọc sai → toàn bộ frame có thể bị lỗi.


3.1 Hình dung Sample Point một cách đơn giản

Bạn có thể tưởng tượng 1 bit CAN giống như một cửa sổ thời gian.

  • Tín hiệu bắt đầu thay đổi ở đầu cửa sổ
  • Sau một thời gian, tín hiệu mới ổn định hoàn toàn
  • Sample Point chính là khoảnh khắc “nhìn vào và đọc”

Nếu nhìn quá sớm → tín hiệu chưa ổn định Nếu nhìn quá muộn → có thể đã bị ảnh hưởng bởi bit kế tiếp


3.2 Sample Point nằm ở đâu trong Bit Time?

Sample Point nằm giữa Phase Segment 1 và Phase Segment 2, sau các giai đoạn:

  • Sync Segment
  • Propagation Segment
  • Phase Segment 1
| Sync | Prop Seg | Phase Seg1 | ● Sample Point | Phase Seg2 |

👉 Tại dấu , CAN controller sẽ đọc mức logic của bus.


3.3 Vì sao Sample Point thường đặt ở 75% – 87.5%?

Trong thực tế, tín hiệu CAN cần thời gian để:

  • Lan truyền từ node phát đến node nhận
  • Ổn định mức điện áp CAN_H / CAN_L
  • Vượt qua nhiễu và ringing trên đường dây

Do đó, Sample Point không đặt ở giữa bit, mà thường được đẩy về cuối bit.

📌 Giá trị Sample Point phổ biến

  • ~75% bit time → Mạng ngắn, ít node, tốc độ cao (500 kbps – 1 Mbps)
  • ~80–87.5% bit time → Mạng dài, nhiều node, cáp dài, môi trường nhiễu

3.4 Ví dụ trực quan

Giả sử:

  • 1 bit CAN = 16 TQ

Khi đó:

  • Sample Point = 12 TQ → 75%
  • Sample Point = 14 TQ → 87.5%
| 1 | 2 | 3 | ... | 12 | 13 | 14 | 15 | 16 |
                      ↑
                 Sample Point

Node sẽ đọc giá trị bit tại vị trí mũi tên.


3.5 Điều gì xảy ra nếu đặt Sample Point sai?

❌ Sample Point đặt quá sớm

  • Tín hiệu chưa ổn định
  • Node đọc sai dominant ↔ recessive
  • Dễ xảy ra bit error

❌ Sample Point đặt quá muộn

  • Bị ảnh hưởng bởi bit kế tiếp
  • Dễ gây lỗi đồng bộ
  • Có thể phát sinh error frame

Hậu quả thường gặp:

  • Lỗi CRC
  • Frame bị reject
  • Node tăng error counter → bus-off

3.6 Tóm tắt nhanh

  • Sample Point là thời điểm quan trọng nhất trong 1 bit CAN
  • Node chỉ đọc dữ liệu tại Sample Point
  • Đặt đúng Sample Point giúp mạng CAN:
    • Ổn định
    • Ít lỗi
    • Chạy tốt với cáp dài & nhiều node

4. Đồng bộ trong CAN – Vì sao không cần clock chung?

Mỗi node CAN sử dụng clock nội riêng, nhưng CAN vẫn đảm bảo đồng bộ nhờ:

  • Đồng bộ cứng tại cạnh SOF (Start of Frame)
  • Đồng bộ mềm liên tục tại các cạnh dominant/recessive trong frame

Khi phát hiện cạnh tín hiệu đến sớm hoặc muộn hơn dự kiến, node sẽ kéo giãn hoặc rút ngắn Phase Segment để tái đồng bộ.

Cơ chế này cho phép CAN hoạt động ổn định ngay cả khi các node có sai lệch clock nhỏ (clock tolerance).


5. Clock Tolerance – Dung sai xung nhịp

Clock tolerance là mức sai lệch cho phép giữa clock của các node CAN. Thông thường, CAN cho phép sai lệch tổng cộng khoảng ±0.5%.

Nếu clock sai lệch vượt mức cho phép:

  • Node lấy mẫu sai bit
  • Tăng error frame
  • Node có thể chuyển sang trạng thái bus-off

Vì vậy, chất lượng thạch anh và cấu hình timing là yếu tố rất quan trọng, đặc biệt trong mạng dài hoặc tốc độ cao.


6. Quan hệ giữa Bitrate – Chiều dài cáp – Số node

Trong CAN, bitrate càng cao thì chiều dài cáp cho phép càng ngắn. Lý do là trễ lan truyền tín hiệu trên cáp phải nằm trong giới hạn của bit time.

BitrateChiều dài bus tối đa (tham khảo)
1 Mbps ~40 m
500 kbps ~100 m
250 kbps ~250 m
125 kbps ~500 m

Ngoài ra, số lượng node càng nhiều thì tải điện và jitter càng lớn, yêu cầu timing phải được cấu hình thận trọng hơn.


7. Các lỗi timing CAN thường gặp ngoài hiện trường

  • Cấu hình bitrate giống nhau nhưng timing khác nhau
  • Sample point không phù hợp với chiều dài cáp
  • Dùng thạch anh kém chính xác
  • Mạng dài nhưng vẫn để bitrate cao
  • Kết hợp nhiều thiết bị khác hãng với default timing khác nhau

Những lỗi này thường biểu hiện dưới dạng: CAN error frame liên tục, mất gói, hoặc bus-off không rõ nguyên nhân.



 
 

Số lượng người đang truy cập...

Không thể hiển thị dữ liệu người dùng trực tuyến vào lúc này.