Liệu một baudrate trong giao tiếp nối tiếp (USB hoặc RS232) cần phải chính xác?


8

Trong giao tiếp nối tiếp, baudrate có nghĩa là chúng ta phải sử dụng tốc độ xung nhịp chính xác hay đó là một phạm vi tốc độ mà chúng ta có thể sử dụng?

và nếu đó là một giá trị chính xác, nó phải chính xác đến mức nào? ví dụ, tôi có thể sử dụng 555 làm đồng hồ của mạch giao tiếp nối tiếp không?


Một UART thường có thể chịu được độ lệch khoảng ~ 3%. Phụ thuộc vào một cụ thể, mặc dù.
Eugene Sh.

Đối với USB, nó sẽ được chỉ định trong tiêu chuẩn, miễn phí để tải xuống.
Photon

Câu trả lời:


6

Thời gian phải đủ chính xác để chúng không bị trôi đi trước khi đồng bộ hóa giao thức.


Đồng bộ hóa nối tiếp UART trên mỗi byte và một byte là khoảng 10 bit (8 bit dữ liệu cộng với bắt đầu và dừng). Chúng tôi giả định rằng UART của chúng tôi nhắm vào giữa mỗi bit. Nếu mọi thứ đều hoàn hảo và chỉ có một đầu là không chính xác, cho phép chênh lệch khoảng 5% giữa hai đầu của liên kết.

Tuy nhiên:

  1. Cả hai đầu của liên kết có thể không chính xác so với danh nghĩa. Trong trường hợp xấu nhất, một đầu có thể dưới danh nghĩa trong khi đầu kia là trên danh nghĩa.
  2. Có thể có sự thiếu chính xác có hệ thống. Ví dụ, hầu hết các UARTS có phạm vi cài đặt trình tạo tốc độ baud giới hạn.
  3. UART của bạn dựa trên đồng hồ chủ với tốc độ hữu hạn. Ngay cả khi bộ tạo tốc độ xung nhịp và tốc độ baud hoàn hảo, điều này sẽ dẫn đến việc nó không đạt được chính xác giữa mỗi bit.

Điểm mấu chốt là lỗi 1% trên đồng hồ của bạn gần như chắc chắn là ổn. Lỗi 5% gần như chắc chắn là một vấn đề. Giữa hai hình này có thể có hoặc không có vấn đề tùy thuộc vào bức tranh tổng thể.

Đó là một thứ tự cao cho một oscilator RC. Hãy nói rằng R của bạn có dung sai 1% và C của bạn có dung sai 2%. Điều đó mang lại khả năng chịu đựng khoảng 3% cho hằng số thời gian của mạng RC và đó là trước khi bạn nghĩ về bất kỳ lỗi nào được đưa ra bởi chip điều khiển của bạn.

Vì vậy, điểm mấu chốt là bạn nên nhìn vào một bộ cộng hưởng tinh thể hoặc gốm.


Đối với USB, tôi không có kinh nghiệm để phân tích từ các nguyên tắc đầu tiên nhưng https://www.silabs.com/community/interface/ledgeledge-base.entry.html/2004/03/15/usb_clock_tolerance-gVai cho biết 1,5% cho tốc độ thấp và 0,25% cho tốc độ tối đa.


Nếu một người có thể lập trình tốc độ baud trong 3% hoặc các bước tốt hơn và có thể sử dụng trình tự "đào tạo" phù hợp, độ chính xác RC có thể không phải là vấn đề. Nếu ai đó biết rằng đầu kia sẽ luân phiên gửi 0xF8 và 0xF0 liên tục (tương ứng thấp trong bốn và năm lần bit), đặt tốc độ truyền nhanh hơn 33% sẽ khiến một người luôn nhận được 0xF0 (5,33 bit lần) và 0x80 (6,67 bit lần). Nhận các giá trị khác sẽ cho người ta biết một tốc độ nhanh hơn hoặc chậm hơn tốc độ "33% so với" đó, trong khi nhận được 0xF0 0x80 lặp đi lặp lại sẽ chỉ ra rằng một người nên giảm tốc độ 25% và bắt đầu giao tiếp thực sự.
supercat

8

Các UART thường được sử dụng trong các hệ thống nối tiếp loại RS232 hoạt động bằng cách lấy mẫu đường dữ liệu ở đâu đó giữa bit theo sự phân chia của đồng hồ tần số cơ sở tốc độ baud được xác định trước. Như vậy, nếu dữ liệu được gửi và máy thu không cùng tần số, "điểm mẫu" sẽ đi lang thang gần hơn với cạnh của khung bit trên các bit liên tiếp.

Với UART bình thường, độ dài bit cho một byte là 10 hoặc 11 bit. 1 Bắt đầu, 8 dữ liệu và 1 hoặc 2 bit stop. Một nửa thời gian đi lang thang trên bit thứ 10 chuyển thành 0,5 / 10 = 5% lỗi.

Tuy nhiên, trong thực tế, dung sai của bạn ít hơn thế bởi vì bạn cũng cần thêm độ trễ của khoảng thời gian tần số cơ sở sẽ thêm vào phần bù từ cạnh đầu của bit start. Tần số cơ sở của bạn càng cao, càng ít ảnh hưởng.

Đối với việc sử dụng bộ đếm thời gian 555 cho mục đích này, tôi sẽ không khuyến nghị sử dụng trừ khi bạn có kế hoạch điều chỉnh thủ công trong mạch 555.

Mặt khác, USART sử dụng một phương pháp điều khiển phức tạp hơn nhằm cố gắng đồng bộ hóa việc truyền tới dữ liệu nhận được. Điều này có thể thông qua việc sử dụng một mẫu dữ liệu có đồng hồ nhúng, bằng cách sử dụng đồng hồ đã qua hoặc bằng một số hình thức khóa pha với các cạnh dữ liệu nhận được. (Mặc dù có thể cho rằng cái sau thực sự giả đồng bộ.)


Vì bạn biết những gì bạn đang nói về, tôi nghĩ rằng tôi muốn đề cập đến chữ viết tắt "U S ART", mà nên là một phần của câu trả lời này. Vâng, nó sẽ làm cho câu trả lời hoàn chỉnh theo ý kiến của tôi , và sau đó xứng đáng được +1 từ tôi.
Harry Svensson

1
@HarrySvensson hmm .. Tôi đồng ý .. nhưng cố gắng quyết định là điều đó chỉ khiến câu trả lời trở nên khó hiểu hơn đối với một OP đóng gói 555.
Trevor_G

1
Một USART khác ở chỗ nó có thể đồng bộ. Và nếu nó được sử dụng như một giao diện đồng bộ, thì đồng hồ là chung cho cả hai đầu, và sau đó tốc độ đồng hồ không thành vấn đề.
gbarry

1
Ồ tốt, nó có thể là trong các ý kiến ​​thay thế, cảm ơn bạn @gbarry. Tôi không phiền +1 cho Trevor.
Harry Svensson

@HarrySvensson Tôi đã thêm một lời giải thích gợn sóng ngắn về sự khác biệt cho sự hoàn chỉnh ..
Trevor_G
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.