Tối Sáng
Hình 1. PMBus là gì?

Tối ưu quản lý năng lượng hệ thống nhúng với giao thức PMBus Để lại bình luận

Hình 1. PMBus là gì?
Hình 1. PMBus là gì?

Công nghệ nguồn điện (power-supply) ngày càng phát triển, dù không nhanh bằng các lĩnh vực khác như vi xử lý. Trong vài năm gần đây, các yêu cầu về kích thước, tích hợp, tính năng, linh hoạt, giám sát và điều khiển của nguồn điện đã trở nên phức tạp hơn, đòi hỏi một giải pháp hiện đại hơn so với nguồn điện truyền thống. Một trong những giải pháp đó là PMBus (Power Management Bus).

Xem thêm: System Management Bus (SMBus) trong hệ thống nhúng

PMBus là gì?

Trước đây, nguồn điện chỉ có nhiệm vụ cấp điện mà không có khả năng giám sát hoặc điều chỉnh linh hoạt. Nhưng với các hệ thống hiện đại, người ta cần:
• Giám sát điện áp, dòng điện, nhiệt độ của nguồn điện.
• Điều chỉnh mức điện áp từ xa mà không cần thay đổi phần cứng.
• Phát hiện và xử lý lỗi tự động khi có sự cố.

Để đáp ứng những nhu cầu này, PMBus ra đời như một chuẩn giao tiếp chung giữa bộ điều khiển trung tâm và các nguồn điện.

Hiểu đơn giản, PMBus là một tiêu chuẩn giúp điều khiển nguồn điện bằng kỹ thuật số. Nó quy định cách giao tiếp giữa bộ điều khiển trung tâm và các nguồn điện thông qua một giao thức truyền thông và ngôn ngữ lệnh.

Hình 2. PMBus diagram
Hình 2. PMBus diagram

Ngoài ra, nguồn điện phải có khả năng khởi động độc lập mà không cần giao tiếp với PMBus. Điều này giúp hệ thống khởi động nhanh hơn, vì không cần chờ bộ điều khiển gửi lệnh để thiết lập tham số hoạt động. Trong trường hợp bộ điều khiển trung tâm cũng lấy nguồn từ một thiết bị PMBus, thiết bị đó bắt buộc phải tự khởi động, nếu không toàn bộ hệ thống sẽ không hoạt động được.

Mối quan hệ giữa PMBus, SMBus và I²C

PMBus không phải là một giao thức hoàn toàn mới mà được phát triển dựa trên SMBus (System Management Bus) phiên bản 1.1, vốn là một cải tiến từ I²C (Inter-Integrated Circuit) – một giao thức truyền thông nối tiếp đơn giản, sử dụng hai dây, được thiết kế để các vi mạch giao tiếp với nhau trong khoảng cách gần.

SMBus cải tiến so với I²C ở các điểm:
• SMBALRT (System Management Bus Alert) – giúp thông báo lỗi cho bộ điều khiển trung tâm mà không cần liên tục kiểm tra trạng thái của từng thiết bị.
• PEC (Packet Error Checking) – giúp kiểm tra lỗi gói tin để tránh nhiễu gây sai lệch dữ liệu.

1. Sự khác biệt giữa PMBus và SMBus

Thông báo lỗi từ thiết bị đến host:
• SMBus yêu cầu bắt buộc phải hỗ trợ host notification để cảnh báo lỗi.
• PMBus không bắt buộc nhưng hầu hết thiết bị hỗ trợ tính năng này vì nó giúp hệ thống phản ứng nhanh hơn với lỗi mà không cần host phải liên tục kiểm tra từng thiết bị.

Nhóm lệnh (Group Command Protocol):
• PMBus có thêm chế độ nhóm lệnh, cho phép nhiều thiết bị nhận lệnh và thực hiện đồng thời. Điều này hữu ích khi cần thay đổi nhiều nguồn điện cùng lúc.
• SMBus không có tính năng này.

2. Cách hoạt động của SMBALRT (System Management Bus Alert)

SMBALRT là một đường tín hiệu dùng để cảnh báo lỗi:
• Mặc định, SMBALRT được kéo lên mức cao (logic 1).
• Khi một thiết bị phát hiện lỗi hoặc có thông tin quan trọng, nó kéo SMBALRT xuống mức thấp (logic 0).
• Host nhận tín hiệu này và sau đó có thể kiểm tra từng thiết bị để tìm ra nguyên nhân.

Xem thêm: Tổng quan về Inter-Integrated Circuit (I2C)

Group Command Protocol

Khi cần gửi nhiều lệnh đến nhiều thiết bị trên PMBus trong một lần truyền, ta dùng Group Command Protocol. Điều này giúp các thiết bị thực hiện lệnh đồng thời ngay khi nhận được tín hiệu dừng (STOP condition), thay vì xử lý từng thiết bị một.

1. Điểm quan trọng

Master có thể gửi nhiều lệnh khác nhau cho nhiều thiết bị trong cùng một lần truyền.
• Thiết bị A nhận lệnh tăng điện áp.
• Thiết bị B nhận lệnh giảm điện áp.
• Thiết bị C nhận lệnh giữ nguyên điện áp.

Master không thể gửi 2 lệnh khác nhau cho cùng một thiết bị trong cùng một Group Command. Ví dụ: Không thể gửi cùng lúc “Tăng điện áp” và “Giảm dòng điện” cho thiết bị A.

Khi master gửi STOP condition, tất cả thiết bị sẽ cùng bắt đầu thực thi lệnh ngay lập tức, không có độ trễ giữa các thiết bị.

Group Command chỉ dùng để gửi lệnh một chiều, không dùng để đọc dữ liệu từ thiết bị.

2. Nguyên tắc hoạt động

Hình 3. Group command protol không sử dụng PEC
Hình 3. Group command protol không sử dụng PEC

Bước 1: Master gửi START condition → địa chỉ thiết bị đầu tiên + bit ghi (write = 0)
Bước 2: Thiết bị ACK → Master gửi lệnh + dữ liệu
Bước 3: Master không gửi STOP, mà thay vào đó gửi REPEATED START → Địa chỉ thiết bị thứ hai + bit ghi
Bước 4: Thiết bị ACK → Master gửi lệnh + dữ liệu
Lặp lại quá trình trên cho đến thiết bị cuối cùng
Bước cuối: Khi gửi xong lệnh cho thiết bị cuối, Master gửi STOP condition
Sau STOP, tất cả thiết bị thực thi lệnh ngay lập tức.

3. Tích hợp Packet Error Checking (PEC)

Hình 4. Group command protol sử dụng PEC
Hình 4. Group command protol sử dụng PEC

Nếu dùng PEC, mỗi thiết bị có một PEC byte riêng, được tính chỉ từ:
• Địa chỉ của thiết bị (kèm bit ghi).
• Mã lệnh (Command Code).
• Dữ liệu (Data bytes).

Ví dụ:
Thiết bị A tính PEC 1 dựa trên (Địa chỉ A + Lệnh + Dữ liệu).
Thiết bị B tính PEC 2 dựa trên (Địa chỉ B + Lệnh + Dữ liệu).
Thiết bị C tính PEC 3 dựa trên (Địa chỉ C + Lệnh + Dữ liệu).

Các loại lệnh trong PMBus

PMBus cung cấp một tập hợp lệnh đa dạng để điều khiển và giám sát nguồn cấp điện số. Dưới đây là các nhóm lệnh chính và chức năng của chúng:

1. Lệnh Bật/Tắt và Kiểm Tra Biên Độ (On, Off, and Margin Testing)

Các lệnh: OPERATION, ON_OFF_CONFIG, VOUT_MARGIN_HIGH, VOUT_MARGIN_LOW.

  • Bật/tắt bộ nguồn
  • Cấu hình điều kiện khởi động (khi cấp nguồn, khi có tín hiệu điều khiển, hoặc khi có lệnh từ PMBus™)
  • Kiểm tra biên độ điện áp: Xác định điện áp tối đa (VOUT_MARGIN_HIGH) và tối thiểu (VOUT_MARGIN_LOW) để đảm bảo thiết bị hoạt động tốt trong các điều kiện cực đoan.

2. Lệnh Điều Khiển Điện Áp Đầu Ra (Output Voltage Control)

Các lệnh: VOUT_COMMAND, VOUT_TRIM, VOUT_CAL_OFFSET, VOUT_SCALE_LOOP, VOUT_SCALE_MONITOR.

  • Thay đổi điện áp đầu ra của bộ nguồn.
  • Hiệu chỉnh điện áp đầu ra.
  • Giám sát điện áp đầu ra để đảm bảo tính chính xác.

3. Lệnh Địa Chỉ, Bộ Nhớ và Giao Tiếp (Addressing, Memory, Communication, and Capability)

Các lệnh: STORE_DEFAULT_ALL, RESTORE_DEFAULT_ALL, WRITE_PROTECT, PAGE, PHASE, QUERY.

  • Lưu và khôi phục thông số mặc định trong bộ nhớ non – volatile.
  • Bảo vệ thông số nguồn điện khỏi thay đổi ngoài ý muốn.
  • Xác định phase khi dùng bộ nguồn nhiều phase.
  • Kiểm tra khả năng của bộ nguồn (QUERY).

4. Lệnh Quản Lý Lỗi (Fault Management)

Các lệnh: IOUT_OC_FAULT_LIMIT, IOUT_OC_FAULT_RESPONSE, VIN_UV_WARN_LIMIT, OT_FAULT_LIMIT, CLEAR_FAULTS.

  • Xác định và xử lý lỗi như quá dòng, quá áp, quá nhiệt.
  • Cấu hình phản ứng khi có lỗi (tiếp tục hoạt động, dừng lại, thử khởi động lại, hoặc yêu cầu can thiệp từ hệ thống).
  • Lệnh CLEAR_FAULTS dùng để xóa trạng thái lỗi để nguồn có thể khởi động lại.

5. Lệnh Trình Tự Khởi Động (Sequencing)

Các lệnh: TON_DELAY, TON_RISE, TOFF_DELAY, TOFF_FALL.

  • Xác định độ trễ khi bật nguồn (TON_DELAY).
  • Cấu hình tốc độ tăng điện áp đầu ra (TON_RISE).
  • Điều khiển quá trình tắt nguồn (TOFF_DELAY, TOFF_FALL).

6. Lệnh Trạng Thái (Status)

Các lệnh: STATUS_BYTE, STATUS_WORD, STATUS_VOUT, STATUS_IOUT, STATUS_CML.

  • Giám sát trạng thái bộ nguồn
  • Xác định lỗi xảy ra (ví dụ: STATUS_BYTE cho biết lỗi chung, STATUS_IOUT cho biết lỗi quá dòng)

7. Lệnh Giám Sát (Telemetry)

Các lệnh: READ_VIN, READ_VOUT, READ_IIN, READ_IOUT, READ_TEMPERATURE.

  • Đọc các thông số hoạt động của bộ nguồn như điện áp vào/ra, dòng điện vào/ra, nhiệt độ.
  • Hữu ích trong việc giám sát tình trạng hệ thống và phát hiện lỗi sớm.

8. Các Lệnh Khác (Other Commands)

Các lệnh: FREQUENCY_SWITCH, VIN_ON, VIN_OFF, POUT_MAX.

  • Thay đổi tần số chuyển mạch (FREQUENCY_SWITCH).
  • Cấu hình ngưỡng điện áp bật/tắt (VIN_ON, VIN_OFF).
  • Giới hạn công suất đầu ra tối đa (POUT_MAX).

Xem thêm: Giao thức SDIO (Secure Digital Input Output) Là Gì?

Extended Command Protocol

PMBus thông thường chỉ có 256 lệnh vì mã lệnh (command code) chỉ dùng 1 byte (8 bit). Tuy nhiên, đôi khi cần nhiều hơn 256 lệnh, nên Extended Command Protocol được sử dụng để mở rộng số lệnh lên 65.536 bằng cách dùng 2 byte lệnh (16 bit) thay vì 1 byte.

1. Cách hoạt động của Extended Command Protocol

Thay vì gửi 1 byte lệnh, master sẽ gửi 2 byte:
• Byte đầu tiên (low byte): Là một giá trị đặc biệt, dùng để báo rằng đây là lệnh mở rộng.
• Byte thứ hai (high byte): Chính là mã lệnh PMBus thực sự.

2. Extended Command Protocol hoạt động với các loại lệnh nào?

Extended Command Protocol có thể dùng với mọi kiểu giao tiếp trong PMBus, ví dụ:
• READ BYTE / WRITE BYTE (Đọc/Ghi 1 byte).
• READ WORD / WRITE WORD (Đọc/Ghi 2 byte).
• Các lệnh đặc biệt của nhà sản xuất (Manufacturer Specific Commands).

3. Các ví dụ

a. Gửi một lệnh mở rộng với READ WORD (đọc 2 byte dữ liệu)
Hình 5. Extended command read byte protocol
Hình 5. Extended command read byte protocol
Hình 6. Extended command read byte protocol sử dụng PEC
Hình 6. Extended command read byte protocol sử dụng PEC

• Master gửi địa chỉ thiết bị + bit ghi (Write).
• Thiết bị phản hồi (ACK).
• Master gửi byte đầu tiên (low byte) để báo hiệu lệnh mở rộng.
• Master gửi byte thứ hai (high byte) là mã lệnh thực tế.
• Master gửi REPEATED START + địa chỉ thiết bị + bit đọc (Read).
• Thiết bị gửi dữ liệu (2 byte).
• Master gửi STOP condition để kết thúc.

b. Gửi một lệnh mở rộng với WRITE BYTE (ghi 1 byte dữ liệu):
Hình 7. Extended command write byte protocol
Hình 7. Extended command write byte protocol
Hình 8. Extended command write byte protocol sử dụng PEC
Hình 8. Extended command write byte protocol sử dụng PEC

• Master gửi địa chỉ thiết bị + bit ghi (Write).
• Thiết bị phản hồi (ACK).
• Master gửi byte đầu tiên (low byte) để báo hiệu lệnh mở rộng.
• Master gửi byte thứ hai (high byte) là mã lệnh thực tế.
• Master gửi dữ liệu (1 byte).
• Master gửi STOP condition để hoàn thành giao tiếp.

ZONE_READ và ZONE_WRITE trong PMBus

ZONE_READ và ZONE_WRITE là các giao thức giúp đọc hoặc ghi dữ liệu đồng thời từ/tới nhiều thiết bị trên bus PMBus/I²C trong một lệnh duy nhất.

1. Tại sao cần ZONE_READ và ZONE_WRITE?

Thông thường, để đọc hoặc ghi dữ liệu từ nhiều thiết bị, master phải gửi từng lệnh riêng lẻ cho từng thiết bị. Điều này làm tăng số lần giao tiếp, gây chậm trễ.
Với ZONE_READ và ZONE_WRITE, master có thể đọc hoặc ghi nhiều thiết bị cùng lúc, giúp tăng hiệu suất truyền dữ liệu.

Ví dụ:
ZONE_WRITE: Tắt tất cả nguồn điện của một hệ thống cùng lúc.
ZONE_READ: Kiểm tra trạng thái của nhiều nguồn điện chỉ trong một lệnh.

2. Cách hoạt động của ZONE_READ

Hình 9. Zone_Read PMBus command
Hình 9. Zone_Read PMBus command

Master gửi ZONE_READ đến địa chỉ 28h với bit ghi (Write).Master gửi địa chỉ đặc biệt 28h (ZONE_READ address) kèm theo bit ghi (0b).
Master gửi một “CONTROL COMMAND CODE” để xác định cần đọc loại dữ liệu nào.
Master gửi một REPEATED START và gửi lại địa chỉ 28h, lần này với bit đọc (1b).
• Lúc này, tất cả các thiết bị trong vùng đọc bắt đầu gửi dữ liệu lên bus.
• Nếu có nhiều thiết bị phản hồi cùng lúc, chúng sẽ tranh chấp bằng cơ chế “bit-wise arbitration” (ai có bit thấp hơn sẽ thắng).
• Các thiết bị thua sẽ dừng gửi dữ liệu và chờ lượt sau.
Master nhận dữ liệu từ từng thiết bị. Dữ liệu gửi về gồm:
• Dữ liệu mà master yêu cầu.
• Địa chỉ của thiết bị gửi dữ liệu.
• Trạng thái trang (PAGE STATUS).
Master lặp lại quá trình này với các thiết bị còn lại bằng cách gửi thêm REPEATED START.
Master kết thúc ZONE_READ bằng cách gửi STOP:
• Các thiết bị reset trạng thái và sẵn sàng cho giao tiếp tiếp theo.

Xem thêm: Tổng quan về CAN Flexible Data-rate (CAN FD)

3. COMMAND CONTROL CODE

COMMAND CONTROL CODE là một byte điều khiển dùng trong giao tiếp PMBus để xác định cách thiết bị phản hồi dữ liệu khi master gửi lệnh ZONE_READ..
Gồm 8 bit, trong đó có 4 bit quan trọng ([7:4]) và 4 bit dự phòng ([3:0]).

a. Cấu trúc byte COMMAND CONTROL CODE
BitTênChức năng
7AR (All Respond)Điều khiển chế độ phản hồi của nhiều thiết bị
6ST (Status)Xác định có trả về trạng thái thiết bị hay không
5DI (Data Inversion)Có đảo ngược bit dữ liệu phản hồi không
4DS (Data Swap)Thứ tự byte trong dữ liệu phản hồi
3:0ReservedDự phòng, luôn bằng 0000b

Bit 7: AR (All Respond) – Chế độ phản hồi của tất cả thiết bị:

  • AR = 0 → Chỉ một thiết bị chiến thắng trong tranh chấp (arbitration) được gửi dữ liệu.
  • AR = 1 → Tất cả thiết bị tiếp tục thử gửi dữ liệu đến khi thành công.

Các bit 6-4: ST, DI, DS – Kiểm soát cách dữ liệu phản hồi:

• ST (Bit 6) – Chọn dữ liệu trả về:

  • ST = 0 → Trả về dữ liệu của lệnh PMBus.
  • ST = 1 → Trả về trạng thái (status byte/status word) của thiết bị.

• DI (Bit 5) – Đảo bit dữ liệu:

  • DI = 0 → Giữ nguyên dữ liệu.
  • DI = 1 → Mỗi bit trong dữ liệu bị đảo (0 → 1, 1 → 0).

• DS (Bit 4) – Sắp xếp byte

  • DS = 0 → Theo tiêu chuẩn SMBus (LSB trước).
  • DS = 1 → Most Significant Byte (MSB) trước.

Bit 3:0 – Dự phòng:

  • Luôn là 0000b, không dùng để tránh lỗi

4. Cách hoạt động của ZONE_WRITE

Hình 11. ZONE_WRITE PMBus command
Hình 11. ZONE_WRITE PMBus command

Master gửi địa chỉ đặc biệt 37h (ZONE_WRITE address) kèm theo bit ghi (0b): Tất cả các thiết bị trong “vùng ghi” (Write Zone) sẽ nhận lệnh này.
Master gửi lệnh PMBus và dữ liệu đi kèm: Mọi thiết bị trong vùng ghi đều nhận được lệnh này và xử lý nó như một lệnh PMBus thông thường.
Các thiết bị thực hiện lệnh và cập nhật dữ liệu tương ứng.
Master có thể kết thúc bằng một STOP để báo hiệu kết thúc quá trình ghi.

Địa chỉ của thiết bị PMBus

  • PMBus sử dụng địa chỉ 7 bit, giống với SMBus và I²C.
  • Một số địa chỉ bị dành riêng trong SMBus/I²C sẽ không được sử dụng.
  • Cấu hình địa chỉ qua chân cứng (pin programming):
    • Địa chỉ thiết bị có thể được cấu hình qua các chân phần cứng.
    • Không bắt buộc phải hỗ trợ toàn bộ dải địa chỉ 7 bit.
    • Cách đặt địa chỉ sẽ do nhà sản xuất quy định.

Cách PMBus giao tiếp với Host

Có hai cách chính để thiết bị PMBus gửi dữ liệu về host:

1. SMBus Host Notify Protocol

  • PMBus có thể tạm thời trở thành master để gửi thông tin đến host.
  • Dữ liệu gửi đi giống với lệnh STATUS_WORD trong PMBus.

2. Sử dụng tín hiệu ngắt SMBALERT#

  • PMBus có thể gửi tín hiệu SMBALERT# để báo host biết rằng nó có dữ liệu cần truyền.

Các tín hiệu phần cứng (Hardwired Signals)

1. Tín hiệu điều khiển (CONTROL)

  • Là tín hiệu đầu vào dùng để bật/tắt thiết bị.
  • Có thể được cấu hình là active high hoặc active low qua lệnh ON_OFF_CONFIG.
  • Tùy chọn nhưng được khuyến nghị sử dụng.

2. Write Protect – WP

PMBus hỗ trợ tín hiệu Write Protect (WP).
Nếu WP ở mức cao hoặc không kết nối → Không thể ghi vào bộ nhớ.
Nếu WP ở mức thấp → Có thể ghi dữ liệu.

3. Các chân khác

Các thiết bị PMBus có thể có chân cấu hình hoặc lập trình (ví dụ: RESET, chân thiết lập điện áp, v.v.).

Nếu một thiết bị PMBus có một chức năng nào đó (ví dụ: thiết lập điện áp đầu ra) và chức năng này có thể được điều khiển cả bằng phần cứng (chân pin) lẫn bằng lệnh gửi qua PMBus, thì lệnh gửi qua PMBus sẽ ưu tiên hơn.

4. Giao diện điện (Electrical Interface)

Tất cả các tín hiệu phần cứng phải tuân theo chuẩn SMBus 100 kHz High Power DC. Các chân nhị phân (high/low) cũng phải tuân theo chuẩn này.

PMBus đã chứng minh được vai trò quan trọng trong việc tối ưu hóa quản lý năng lượng của hệ thống nhúng hiện đại. Với khả năng giám sát, điều khiển linh hoạt và hỗ trợ giao tiếp kỹ thuật số, PMBus giúp cải thiện hiệu suất, tăng độ tin cậy và đơn giản hóa việc phát triển hệ thống nguồn điện. Việc nắm vững các lệnh và cơ chế giao tiếp của PMBus sẽ giúp các kỹ sư nhúng triển khai những giải pháp quản lý năng lượng hiệu quả và tối ưu hơn.

Xem thêm: Fritzing Cơ Bản: Hướng dẫn chi tiết vẽ mạch trực quan

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *