3.18. Căn bản về UART

UART (Bộ thu phát không đồng bộ vạn năng) là phương thức lâu đời và đơn giản nhất để truyền byte giữa hai vi điều khiển, hoặc giữa một vi điều khiển và máy tính chủ. Hai dây dẫn mang dữ liệu -- một dây cho mỗi chiều -- và đường nối đất chung dùng để tham chiếu tín hiệu. Không bên nào cần dùng xung nhịp chung; hai bên thỏa thuận về tốc độ baud trước và tự khôi phục thời điểm lấy mẫu bit từ chính đường dữ liệu.

3.18.1. Khung hình

Mỗi ký tự truyền trên đường dây được đóng gói trong một khung hình: một bit bắt đầu, các bit dữ liệu, một bit chẵn lẻ tùy chọn, và một hoặc hai bit dừng.

A UART frame waveform. The signal sits idle high on the left, falls low for one bit time (the start bit), then carries eight data bits in sequence, then returns high for one bit time (the stop bit) before returning to idle.

Một khung UART: một bit bắt đầu, tám bit dữ liệu, và một bit dừng, mỗi bit rộng một khoảng thời gian bit (1 / baudrate giây).

Đường dây ở trạng thái nghỉ mức cao. Bộ thu theo dõi cạnh xuống, đây là dấu hiệu bắt đầu của một khung mới. Sau đó nó lấy mẫu đường dữ liệu một lần trong mỗi khoảng thời gian bit -- thường vào giữa mỗi bit -- và ghép các bit lại thành một ký tự. Bit dừng đưa đường dây trở về trạng thái nghỉ để bit bắt đầu tiếp theo có thể được phát hiện.

3.18.2. Tốc độ baud

Khoảng thời gian bit -- và tốc độ của liên kết -- được xác định bởi tốc độ baud, tức số bit trên giây. 9600, 19200, 38400, 57600, 115200, 230400, 460800921600 là các giá trị chuẩn; 115200 là giá trị mặc định phổ biến nhất. Cả hai đầu phải thỏa thuận tốc độ baud trong vòng sai số vài phần trăm, nếu không bộ thu sẽ lấy mẫu bit tại các điểm sai và dữ liệu nhận được sẽ bị nhiễu loạn.

Tốc độ baud cao hơn truyền nhiều dữ liệu hơn mỗi giây nhưng nhạy cảm hơn với độ dài cáp, điện dung, và độ chính xác của xung nhịp ở mỗi đầu. Đối với các liên kết ngắn giữa hai bo mạch trên cùng một bàn làm việc, 115200 đến 921600 hoạt động tốt.

3.18.3. Đấu nối dây

Một liên kết UART dùng ba dây:

Two boards labelled A and B, connected by three wires. Board A's TX pin connects to board B's RX pin; board B's TX pin connects to board A's RX pin; and both boards' ground pins are tied together.

Đấu nối UART: TX của bo mạch này nối với RX của bo mạch kia, và cả hai đường nối đất được nối chung.

  • TX → RX, cả hai chiều. Chân phát của mỗi bo mạch là chân thu của bo mạch kia. Lỗi thường gặp của người mới là nối TX → TX -- hai đầu ra tranh nhau, không có dữ liệu nào đến bộ thu.

  • Đường nối đất chung. Các mức tín hiệu được tham chiếu theo đường nối đất, vì vậy hai bo mạch phải có đường nối đất chung, nếu không bộ thu sẽ thấy điện áp sai trên đường dây.

3.18.4. Mức điện áp và các lớp vật lý

Các mức tín hiệu trên chân UART của camera là 3,3 V CMOS: mức thấp cho logic 0, 3,3 V cho logic 1. Bất kỳ thiết bị nào sử dụng UART CMOS 3,3 V -- vi điều khiển khác, bộ chuyển đổi USB sang nối tiếp được đặt ở 3,3 V, module GPS 3,3 V -- đều có thể kết nối trực tiếp.

Ghi chú

Các thiết bị UART CMOS 5 V (vi điều khiển cũ, một số module GPS, một số bo mạch mở rộng cảm biến cũ) dùng cùng khung UART nhưng ở mức logic 5 V. Nối chúng trực tiếp vào camera là không an toàn: chân TX ở 5 V khi lái chân RX của camera sẽ vượt quá điện áp vào tuyệt đối tối đa trên các cam không chịu được 5 V, và chân TX 3,3 V của camera có thể không đạt đến ngưỡng mức cao của thiết bị 5 V để nhận dạng logic 1 sạch.

Để chuyển đổi giữa hai mức điện áp cần có bộ lái đường dây tích cực -- IC dịch mức hai chiều chuyên dụng với transistor lái riêng trên cả hai phía của mỗi đường dây. Các bộ dịch mức thụ động dùng MOSFET và điện trở kéo lên từ Dịch chuyển mức điện áp không đủ ở đây: cạnh lên của chúng dựa vào việc nạp điện cho đường dây qua điện trở, ổn với tốc độ đóng cắt nhưng quá chậm cho UART. Ở 115200 baud, mỗi bit kéo dài khoảng 8 µs, và độ dốc RC của bộ dịch thụ động sẽ làm nhòe một bit sang bit tiếp theo.

Bộ lái đường dây tích cực tạo ra các cạnh sắc nét ở cả hai chiều với tốc độ UART đầy đủ. Chọn linh kiện được đánh giá cho tốc độ baud mà liên kết sẽ chạy, nối TX và RX của camera vào phía 3,3 V của bộ dịch, và nối TX và RX của thiết bị 5 V vào phía 5 V của bộ dịch.

Ba lớp vật lý cũ hơn dùng cùng khung hình nhưng điện áp khác nhau, và cần bộ chuyển đổi mức giữa chúng và vi điều khiển 3,3 V:

  • RS-232. Được dùng bởi cổng nối tiếp trên máy tính để bàn và một số thiết bị công nghiệp. Đường dây dao động giữa khoảng ±5 V±15 V, với trạng thái nghỉ ở mức âm. Phân cực đảo và điện áp cao so với CMOS; họ chip MAX232 / MAX3232 (hoặc tương tự) xử lý việc chuyển đổi.

  • RS-422. Chuẩn tín hiệu vi sai cho liên kết điểm-điểm (một bộ lái, tối đa mười bộ thu). Bộ lái gửi trên một cặp dây cân bằng; bộ thu thấy hiệu giữa chúng và bỏ qua nhiễu chế độ chung dọc theo đường dây. Liên kết song công sử dụng hai cặp -- một cặp cho mỗi chiều. RS-422 đạt được khoảng cách hàng chục mét đến một kilomet tùy thuộc vào tốc độ baud, và một chip thu phát RS-422 đặt giữa TX / RX của camera và cặp dây cân bằng.

  • RS-485. Biến thể đa điểm của RS-422 -- cùng tín hiệu vi sai, nhưng được thiết kế để có tối đa 32 bộ lái và bộ thu trên một bus. Hầu hết các liên kết hoạt động bán song công trên một cặp dây đơn, với bộ lái và bộ thu của mỗi nút dùng chung dây và phần mềm phân xử ai được nói. Được dùng trong các bus tự động hóa công nghiệp (Modbus, DMX512, Profibus) nơi dây dẫn chạy xa và nhiễu cao; một chip thu phát RS-485 đặt giữa TX / RX của camera và cặp vi sai.

Cả hai vẫn gửi các khung UART ở cấp bit cơ bản. Cấu hình machine.UART của camera (tốc độ baud, số bit, chẵn lẻ, bit dừng) là như nhau bất kể lớp vật lý nào mang tín hiệu ở phía kia của bộ thu phát.