LIN bus là gì? Cách hoạt động & so sánh LIN vs CAN

Khi bạn mở khóa xe, gương chiếu hậu tự bung ra. Ngồi vào ghế lái, ghế tự chỉnh về đúng vị trí quen thuộc. Cabin nóng lên, quạt gió tự thổi mạnh hơn. Những tiện nghi tưởng như “sang chảnh” đó thực ra được điều phối bởi một giao thức rất khiêm tốn và rẻ tiền: LIN bus. Bài viết này giải thích LIN là gì, nó hoạt động thế nào ở mức frame, và vì sao nó gần như luôn xuất hiện bên cạnh CAN trong mọi chiếc xe hiện đại.

LIN bus là gì?

LIN (Local Interconnect Network) là một giao thức truyền thông nối tiếp (serial) tốc độ thấp, chi phí thấp, dùng cho các mạng con (sub-network) trong ô tô. LIN được chuẩn hóa quốc tế theo bộ tiêu chuẩn ISO 17987 (kế thừa các phiên bản LIN 2.x và SAE J2602), phủ đầy đủ các lớp trong mô hình OSI cùng bộ test tuân thủ.

Ý tưởng cốt lõi: không phải chức năng nào trên xe cũng cần đường truyền nhanh và đắt tiền. Gập gương, chỉnh ghế, đọc công tắc kính, bật đèn nội thất… đều là những tác vụ chậm rãi. Dùng một bus đơn giản, một dây, giá rẻ cho chúng là hợp lý hơn nhiều so với việc kéo CAN tới từng mô-đun nhỏ.

Vì sao LIN ra đời? Bài toán chi phí bên cạnh CAN

Mỗi chức năng tiện nghi trên xe nằm ở một bộ điều khiển riêng — trong cửa, trong ghế, trong bảng điều hòa. Chúng phải “hiểu nhau” thì mới phối hợp được: gương cần biết khi nào cửa mở, ghế cần biết khi nào phải thức dậy, điều hòa cần biết bạn vừa vào xe.

Nối tất cả bằng CAN bus thì vừa tốn kém vừa dư thừa. CAN được thiết kế cho những hệ thống đòi hỏi tốc độ cao và độ tin cậy tuyệt đối như động cơ, hộp số hay phanh ABS. Mỗi node CAN cần vi điều khiển mạnh hơn, transceiver chống nhiễu tốt hơn, và bắt buộc dùng cặp dây xoắn đôi (twisted pair) để giữ tín hiệu ở tốc độ hàng trăm kbit/s. Đem CAN đi bật/tắt một bóng đèn thì chẳng khác nào dùng siêu máy tính để bật công tắc — tốn linh kiện, tăng trọng lượng dây điện, mà tốc độ dư thừa không mang lại lợi ích gì.

Vì thế các kỹ sư cần một giao thức nhẹ hơn, rẻ hơn, chỉ đủ nhanh cho các chức năng tiện nghi. Đó chính là lý do LIN ra đời — đóng vai trò “mạng con” giá rẻ nằm dưới CAN.

Kiến trúc Master–Slave và LIN cluster

Sơ đồ tổng quan LIN bus Master-Slave trong ô tô

LIN hoạt động theo cơ chế Master–Slave. Một mạng LIN thường có tối đa 16 node: 1 Master và tối đa 15 Slave. Nhóm node này tạo thành một cụm gọi là LIN cluster, mỗi cụm chạy độc lập với nhịp và lịch truyền riêng.

Một chiếc xe có thể có nhiều LIN cluster khác nhau: một cụm cho cửa lái, một cụm cho ghế, một cụm cho điều hòa. Trong mỗi cụm:

  • Master giữ nhịp và lập lịch cho toàn cụm, đảm bảo mọi giao tiếp diễn ra có trật tự, không xung đột và có tính tất định về thời gian (deterministic) — luôn dự đoán được khi nào frame nào được gửi.
  • Slave chỉ làm ba việc: lắng nghe, phản hồi khi được hỏi, hoặc im lặng.

Một điểm quan trọng: Master thường kiêm luôn vai trò gateway giữa mạng LIN và mạng CAN của xe. Dữ liệu từ các mô-đun nhỏ trong cụm LIN (công tắc cửa, cảm biến gương…) được Master tổng hợp rồi đẩy lên CAN, để các hệ thống lớn hơn nhận và phản ứng kịp thời.

Lớp vật lý: một dây, open-drain, 12V

Mỗi thiết bị trong mạng LIN thực chất là một ECU nhỏ: bên trong có vi điều khiển, một cổng nối tiếp kiểu UART và một mạch LIN transceiver để giao tiếp trên đường truyền.

Tất cả node nối chung trên một sợi dây duy nhất, chia sẻ nguồn 12V và mass (GND) — không cần cặp dây xoắn phức tạp như CAN. Đường truyền hoạt động theo kiểu open-drain, một dây, hai chiều:

  • Khi không ai truyền, đường dây được kéo lên mức điện áp cao (recessive) — trạng thái “yên tĩnh”.
  • Khi một thiết bị muốn truyền bit 0 (dominant), nó kéo đường dây xuống mức thấp.

Để chống nhiễu, LIN dùng ngưỡng điện áp bất đối xứng giữa bên gửi và bên nhận: bên phát dùng ngưỡng rộng hơn (khoảng 80%/20% điện áp nguồn) để tạo tín hiệu “mạnh”, còn bên thu chỉ cần 60%/40% để xác định logic. Nhờ vậy tín hiệu vẫn đọc đúng ngay cả khi dây dài hoặc có nhiễu. Chỉ bằng việc thay đổi mức cao/thấp trên cùng một sợi dây, LIN gửi được từng bit — cực kỳ tiết kiệm và gọn gàng. Chính vì single-wire nên tốc độ LIN bị giới hạn ở mức tối đa 20 kbit/s (các baud phổ biến: 2400, 9600, 19200 bit/s).

Cấu trúc một LIN frame

Một LIN frame gồm hai phần: Header (do Master gửi) và Response (do Slave trả lời). Header lại chia thành ba trường: Break, Sync và Protected ID.

Cấu trúc LIN frame: Break, Sync 0x55, PID, Data, Checksum

Break field — “chuông báo hiệu”

Frame bắt đầu bằng Break field: một đoạn tín hiệu kéo đường LIN xuống mức thấp trong ít nhất 13 bit — dài hơn hẳn một byte thường (một byte chỉ 8 bit). Break giống như tiếng chuông mở màn: báo cho tất cả node biết một frame mới sắp bắt đầu. Sau Break là một bit mức cao gọi là delimiter.

Sync field — đồng bộ baud rate

Ngay sau đó là Sync field với giá trị cố định 0x55 (chuỗi bit 0101 0101). Vì sao lại chọn con số này? Chuỗi cao/thấp xen kẽ giúp mỗi Slave đo chính xác khoảng cách giữa các cạnh tín hiệu, từ đó tính lại baud rate thực tế mà Master đang dùng.

Có thể bạn thắc mắc: nếu cả Master và Slave đều được cấu hình 9600 baud thì cần gì gửi Sync? Thực ra con số 9600 chỉ là danh nghĩa. Tốc độ thật của mỗi vi điều khiển luôn lệch nhau vài phần trăm vì dùng dao động nội (internal oscillator) khác nhau. Chỉ cần lệch một chút, vài byte sau là dữ liệu đã trượt pha và đọc sai. Nhờ Sync 0x55 gửi trước mỗi frame, các Slave tự đồng bộ lại tốc độ ngay lập tức, giữ cho cả mạng luôn đúng nhịp dù mỗi node có clock riêng.

Protected ID (PID)

Tiếp theo là Protected Identifier (PID) gồm 6 bit ID + 2 bit parity = 8 bit. Sáu bit ID cho biết frame này dành cho ai; hai bit parity được tính từ ID để phát hiện lỗi. Khi nhận PID, mỗi node tự quyết định: không liên quan thì bỏ qua; là của mình thì chuẩn bị gửi data; chỉ cần nghe thì chờ nhận từ node khác.

Data field và Checksum

Sau khi mọi node biết ai sẽ lên tiếng, Slave được gọi tên gửi Data field — từ 1 đến 8 byte tùy loại frame (diagnostic frame luôn đủ 8 byte). Frame kết thúc bằng Checksum field, lớp bảo vệ cuối cùng để phát hiện lỗi truyền. LIN có hai kiểu checksum: classic (chỉ tính trên data) và enhanced (tính cả PID).

Master task và Slave task: gửi từng phần, không phải nguyên khối

Một điểm hay của LIN là frame không được gửi một lần nguyên khối, mà tách thành hai nhiệm vụ:

  1. Master task — Master gửi Header (Break + Sync + PID) rồi tạm dừng, nhường quyền điều khiển đường truyền.
  2. Slave task — Node được gọi tên bắt đầu gửi Response (các byte data + checksum). Trong lúc đó, Master và các node khác chỉ lắng nghe, không ai được phát thêm.

Mỗi phần được truyền như một gói UART có start bit, dữ liệu và stop bit. LIN lặp lại quy trình này cho từng frame trong lịch của nó.

Schedule table và Frame ID table

Để các frame phối hợp nhịp nhàng, LIN dựa vào schedule table — bảng thời gian của mạng. Mỗi frame được xếp theo thứ tự cố định, kèm chu kỳ lặp riêng. Frame này kết thúc, đúng thời điểm Master khởi tạo frame tiếp theo, tạo thành một nhịp truyền ổn định lặp lại liên tục. Ví dụ:

  • Cứ mỗi 10 ms, Master gửi frame hỏi trạng thái khóa cửa (door status).
  • Sau 20 ms, Slave của gương phản hồi vị trí hiện tại (mirror position).
  • 50 ms sau, Master đọc công tắc kính.
  • Cứ 100 ms, Master gửi lệnh điều khiển đèn nội thất.

Bên cạnh đó là frame ID table. Nếu schedule table cho biết khi nào frame được gửi, thì frame ID table cho biết frame đó thuộc loại gì và dùng để làm gì. Trong LIN, mỗi frame có ID từ 0 đến 63:

  • 0–59 (0x00–0x3B): frame truyền thông thường.
  • 60–61 (0x3C–0x3D): diagnostic frame.
  • 62–63 (0x3E–0x3F): user-defined (0x3E) và reserved (0x3F).

Các loại LIN frame

Unconditional frame — phổ biến nhất. Đây là kiểu giao tiếp định kỳ: Master hỏi một Slave cụ thể theo lịch trong schedule table. Nó chiếm phần lớn lưu lượng của mạng LIN thực tế.

Event-triggered frame — dùng khi cần phản ứng nhanh hơn. Master gửi một header chung, và chỉ Slave nào có dữ liệu mới mới trả lời. Nếu hai Slave cùng phản hồi và gây xung đột, Master phát hiện rồi quay lại hỏi từng node riêng bằng unconditional frame. Cách này vừa tiết kiệm thời gian vừa giữ trật tự.

Sporadic frame (đôi khi gọi broadcast) — Master dùng để gửi dữ liệu của chính nó, nhưng chỉ khi giá trị thực sự thay đổi. Nếu không có gì mới, slot đó được bỏ qua để tiết kiệm băng thông.

Diagnostic frame — dành riêng cho cấu hình và chẩn đoán, với hai ID đặc biệt 0x3C (master request) và 0x3D (slave response), luôn chứa đủ 8 byte. Chúng tuân theo UDS – ISO 14229 (trên nền ISO 15765), cho phép máy chẩn đoán ở gara đọc lỗi, ghi cấu hình hay cập nhật firmware cho từng node.

User-defined frame — dành cho ứng dụng tùy chỉnh: ID 0x3E được phép dùng, còn 0x3F để trống dành cho tương lai.

LIN vs CAN: khi nào dùng cái nào?

So sánh LIN bus và CAN bus trong mạng ô tô

Tiêu chí LIN CAN
Chuẩn ISO 17987 ISO 11898
Dây 1 dây (single-wire) + 12V/GND Cặp xoắn đôi (twisted pair)
Tốc độ ≤ 20 kbit/s 125 kbit/s – 1 Mbit/s (CAN FD cao hơn)
Cơ chế Master–Slave, tất định theo schedule Multi-master, tranh bus theo ưu tiên
Đồng bộ Sync field 0x55 mỗi frame Bit stuffing, không cần master clock
Chi phí/node Thấp (chỉ cần UART + transceiver) Cao hơn (CAN controller riêng)
Ứng dụng Gương, ghế, đèn, công tắc, cảm biến chậm Động cơ, hộp số, phanh ABS, khung an toàn

Nói ngắn gọn: CAN cho phần “xương sống” tốc độ cao, LIN cho phần “tiện nghi” chậm và rẻ. Master của LIN đóng vai gateway đẩy dữ liệu lên CAN khi cần. Hai giao thức bổ sung cho nhau chứ không thay thế nhau — đó là lý do gần như mọi xe hiện đại đều có cả hai.

Câu hỏi thường gặp (FAQ)

LIN bus là viết tắt của gì?
LIN là viết tắt của Local Interconnect Network — một giao thức serial một dây, tốc độ thấp, giá rẻ dùng cho các mạng con trong ô tô, chuẩn hóa theo ISO 17987.

Tốc độ tối đa của LIN là bao nhiêu?
LIN đạt tối đa 20 kbit/s do dùng kiến trúc một dây; các baud phổ biến là 2400, 9600 và 19200 bit/s.

Một mạng LIN có tối đa bao nhiêu node?
Tối đa 16 node: 1 Master và tối đa 15 Slave, tạo thành một LIN cluster.

Sync field 0x55 để làm gì?
Chuỗi bit xen kẽ 0101 0101 giúp mỗi Slave đo và đồng bộ lại baud rate thực tế của Master trước mỗi frame, bù cho sai lệch clock giữa các vi điều khiển.

LIN khác CAN như thế nào?
LIN dùng một dây, chậm (≤ 20 kbit/s), Master–Slave, rẻ — hợp cho tiện nghi. CAN dùng cặp xoắn đôi, nhanh (đến 1 Mbit/s), multi-master, đắt hơn — dùng cho hệ thống an toàn và động lực.

Kết luận

LIN là một giao thức đơn giản, gọn gàng nhưng đủ thông minh: một dây, cơ chế Master–Slave tất định, Sync 0x55 để đồng bộ, schedule table để giữ nhịp, và bộ frame linh hoạt (unconditional, event-triggered, sporadic, diagnostic, user-defined). Chính sự tối giản đó khiến LIN trở thành lựa chọn kinh tế để kết nối hàng loạt chức năng tiện nghi trên xe — và là mảnh ghép không thể thiếu bên cạnh CAN trong gần như mọi chiếc ô tô hiện đại.


Leave a Reply