Cách tính thời gian truyền UART từ baudrate

Cách tính thời gian truyền 1 byte và một dòng log UART dựa trên baudrate, frame format và độ dài message.

3 phút đọc
STM32 / UART cover

Ghi chú nhanh

UART thường truyền 1 byte theo frame gồm:

1 start bit + 8 data bits + 1 stop bit = 10 bits

Với baudrate 115200 bps:

Thời gian truyền 1 byte = 10 / 115200 ≈ 86.8 µs

Nếu một dòng log dài 60 ký tự:

60 × 86.8 µs ≈ 5.2 ms

5 ms nghe không nhiều, nhưng trong firmware real-time, 5 ms đôi khi là cả một đời người.

Vì sao phải tính?

Nhiều người cảm giác UART debug “nhanh” vì terminal hiện chữ gần như ngay lập tức. Nhưng cảm giác của mắt người không giống timing của MCU.

Nếu task của bạn chạy mỗi 1 ms, một dòng log blocking mất 5 ms có thể làm task trễ 5 chu kỳ.

Nếu bạn đọc tín hiệu bằng interrupt, log trong ISR còn nguy hiểm hơn: UART chưa truyền xong thì interrupt khác đã phải chờ.

Công thức tổng quát

Với UART format phổ biến 8N1:

bits_per_byte = 1 start + 8 data + 1 stop = 10 bits

time_per_byte = bits_per_byte / baudrate

time_message = number_of_bytes × time_per_byte

Ví dụ với 115200 bps:

Độ dài logThời gian truyền xấp xỉ
10 byte0.87 ms
30 byte2.60 ms
60 byte5.21 ms
100 byte8.68 ms

Baudrate cao hơn có giải quyết hết không?

Tăng baudrate giúp giảm thời gian truyền, nhưng không giải quyết toàn bộ vấn đề.

Ví dụ 921600 bps nhanh hơn 115200 bps khoảng 8 lần. Tuy nhiên:

  • không phải USB-UART adapter nào cũng ổn định ở baudrate cao;
  • dây dài hoặc môi trường nhiễu có thể gây lỗi;
  • terminal/log tool trên PC cũng có giới hạn;
  • nếu log quá nhiều, buffer vẫn có thể đầy.

Vì vậy baudrate cao là một phần giải pháp, không phải giấy phép để printf() vô tội vạ.

Khi nào dùng phép tính này?

  • Khi đánh giá printf() có làm chậm firmware không.
  • Khi chọn baudrate debug UART.
  • Khi debug task bị trễ trong RTOS.
  • Khi thiết kế buffer cho UART logger.
  • Khi quyết định log nào được giữ, log nào phải tắt.

Cách nhớ

UART 115200 không nhanh như cảm giác của mình.
Một dòng log dài có thể tốn vài ms để truyền vật lý.

Bài liên quan nên đọc tiếp

Thấy nội dung này hữu ích?

Lưu lại hoặc chia sẻ cho người cũng đang học firmware, BIOS/UEFI và embedded systems.

Nội dung liên quan

Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.

Biến note thành bài viết hoàn chỉnh

Notes là nơi ghi nhanh khái niệm.