- Các loại giao thức truyền thông
- Chế độ truyền trong giao tiếp nối tiếp
- Đồng bộ hóa đồng hồ
- Các điều khoản khác liên quan đến giao tiếp nối tiếp
- Giao thức nối tiếp đồng bộ
- Giao thức nối tiếp không đồng bộ
- Phần kết luận
Trước khi bắt đầu với Giao thức truyền thông nối tiếp, chúng ta hãy chia thuật ngữ thành ba phần. Giao tiếp là một thuật ngữ rất nổi tiếng liên quan đến việc trao đổi thông tin giữa hai hoặc nhiều phương tiện. Trong các hệ thống nhúng, giao tiếp có nghĩa là trao đổi dữ liệu giữa hai vi điều khiển dưới dạng các bit. Việc trao đổi các bit dữ liệu này trong vi điều khiển được thực hiện bởi một số bộ quy tắc xác định được gọi là giao thức truyền thông. Bây giờ nếu dữ liệu được gửi theo chuỗi tức là cái này đến cái khác thì giao thức truyền thông được gọi là Giao thức truyền thông nối tiếp. Cụ thể hơn, các bit dữ liệu được truyền lần lượt theo cách tuần tự qua bus dữ liệu hoặc kênh truyền thông trong Giao tiếp nối tiếp.
Các loại giao thức truyền thông
Có nhiều kiểu truyền dữ liệu khác nhau có sẵn trong điện tử kỹ thuật số như truyền thông nối tiếp và truyền thông song song. Tương tự như vậy các giao thức được chia thành hai loại như Giao thức truyền thông nối tiếp và Giao thức truyền thông song song. Ví dụ về Giao thức Truyền thông Song song là ISA, ATA, SCSI, PCI và IEEE-488. Tương tự, có một số ví dụ về các Giao thức Giao tiếp Nối tiếp như CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire và SATA, v.v.
Trong bài viết này, các loại Giao thức Truyền thông Nối tiếp khác nhau sẽ được thảo luận. Giao tiếp nối tiếp là cách tiếp cận được sử dụng rộng rãi nhất để truyền thông tin giữa các thiết bị ngoại vi xử lý dữ liệu. Mọi thiết bị điện tử dù là Máy tính Cá nhân (PC) hay Di động đều chạy trên giao tiếp nối tiếp. Giao thức là hình thức giao tiếp an toàn và đáng tin cậy có một tập hợp các quy tắc được giải quyết bởi máy chủ nguồn (người gửi) và máy chủ đích (máy nhận) tương tự như giao tiếp song song.
Chế độ truyền trong giao tiếp nối tiếp
Như đã nói ở trên rằng trong truyền thông nối tiếp dữ liệu được gửi dưới dạng các bit tức là các xung nhị phân và ai cũng biết rằng, số nhị phân đại diện cho mức logic CAO và số 0 đại diện cho mức logic THẤP. Có một số loại giao tiếp nối tiếp tùy thuộc vào loại chế độ truyền và truyền dữ liệu. Các chế độ truyền được phân loại là Simplex, Half Duplex và Full Duplex.
Phương pháp Simplex:
Trong phương thức simplex, một trong hai phương tiện tức là người gửi hoặc người nhận có thể hoạt động tại một thời điểm. Vì vậy, nếu người gửi đang truyền dữ liệu thì người nhận chỉ có thể chấp nhận và ngược lại. Vì vậy, phương pháp simplex là kỹ thuật giao tiếp một chiều. Các ví dụ nổi tiếng về phương pháp simplex là Truyền hình và Đài phát thanh.
Phương pháp Half Duplex:
Trong phương pháp bán song công, cả người gửi và người nhận đều có thể hoạt động nhưng không hoạt động cùng một lúc. Vì vậy, nếu người gửi đang truyền thì người nhận có thể chấp nhận nhưng không thể gửi và tương tự ngược lại. Các ví dụ nổi tiếng về bán song công là Internet nơi người dùng gửi yêu cầu dữ liệu và nhận dữ liệu đó từ máy chủ.
Phương pháp song công đầy đủ:
Trong phương thức song công, cả máy thu và máy phát có thể gửi dữ liệu cho nhau cùng một lúc. Ví dụ nổi tiếng là điện thoại di động.
Ngoài ra, để truyền dữ liệu thích hợp, đồng hồ đóng vai trò quan trọng và nó là một trong những nguồn chính. Sự cố của đồng hồ dẫn đến việc truyền dữ liệu không mong muốn, thậm chí đôi khi mất dữ liệu. Vì vậy, đồng bộ hóa đồng hồ trở nên rất quan trọng khi sử dụng giao tiếp nối tiếp.
Đồng bộ hóa đồng hồ
Đồng hồ là khác nhau đối với các thiết bị nối tiếp và nó được phân loại thành hai loại viz. Giao diện nối tiếp đồng bộ và giao diện nối tiếp không đồng bộ.
Giao diện nối tiếp đồng bộ:
Nó là một kết nối điểm-điểm từ chủ đến nô lệ. Trong kiểu giao diện này, tất cả các thiết bị đều sử dụng một bus CPU để chia sẻ dữ liệu và đồng hồ. Việc truyền dữ liệu trở nên nhanh hơn với cùng một bus để chia sẻ đồng hồ và dữ liệu. Ngoài ra, không có sự sai lệch về tốc độ truyền trong giao diện này. Ở phía máy phát, có sự dịch chuyển dữ liệu sang đường nối tiếp cung cấp đồng hồ dưới dạng tín hiệu riêng biệt vì không có bit bắt đầu, dừng và chẵn lẻ được thêm vào dữ liệu. Ở phía máy thu, dữ liệu đang được trích xuất bằng cách sử dụng đồng hồ do máy phát cung cấp và chuyển đổi dữ liệu nối tiếp trở lại dạng song song. Các ví dụ nổi tiếng là I2C và SPI.
Giao diện nối tiếp không đồng bộ:
Trong Giao diện nối tiếp không đồng bộ, tín hiệu đồng hồ bên ngoài không có. Giao diện Nối tiếp Không đồng bộ có thể được nhìn thấy hầu hết trong các ứng dụng khoảng cách xa và là một sự phù hợp hoàn hảo cho giao tiếp ổn định. Trong Giao diện nối tiếp không đồng bộ, việc không có Nguồn xung nhịp bên ngoài khiến nó dựa vào một số tham số như Kiểm soát luồng dữ liệu, Kiểm soát lỗi, Kiểm soát tốc độ truyền, Kiểm soát truyền và Kiểm soát tiếp nhận. Ở phía máy phát, có sự dịch chuyển dữ liệu song song vào đường dây nối tiếp bằng cách sử dụng đồng hồ của chính nó. Ngoài ra nó còn thêm các bit bắt đầu, dừng và kiểm tra chẵn lẻ. Ở phía máy thu, máy thu trích xuất dữ liệu bằng cách sử dụng đồng hồ của chính nó và chuyển đổi dữ liệu nối tiếp trở lại dạng song song sau khi loại bỏ các bit bắt đầu, dừng và chẵn lẻ. Các ví dụ nổi tiếng là RS-232, RS-422 và RS-485.
Các điều khoản khác liên quan đến giao tiếp nối tiếp
Ngoài Đồng bộ hóa đồng hồ, có một số điều cần nhớ khi truyền dữ liệu tuần tự như Tốc độ Baud, Lựa chọn bit dữ liệu (Framing), Đồng bộ hóa và kiểm tra lỗi. Hãy thảo luận ngắn gọn về các thuật ngữ này.
Tốc độ truyền: Tốc độ truyền là tốc độ mà tại đó dữ liệu được truyền giữa máy phát và máy thu dưới dạng bit trên giây (bps). Tốc độ truyền được sử dụng phổ biến nhất là 9600. Nhưng có những lựa chọn khác về tốc độ truyền như 1200, 2400, 4800, 57600, 115200. Tốc độ truyền càng cao thì dữ liệu sẽ được truyền tại một thời điểm. Ngoài ra, đối với truyền thông dữ liệu, tốc độ truyền phải giống nhau cho cả máy phát và máy thu.
Framing: Framing được gọi là số lượng bit dữ liệu được gửi từ máy phát đến máy thu. Số lượng bit dữ liệu khác nhau trong trường hợp ứng dụng. Hầu hết ứng dụng sử dụng 8 bit làm bit dữ liệu tiêu chuẩn nhưng nó cũng có thể được chọn là 5, 6 hoặc 7 bit.
Đồng bộ hóa: Đồng bộ hóa Bit rất quan trọng để chọn một phần dữ liệu. Nó cho biết điểm bắt đầu và kết thúc của các bit dữ liệu. Máy phát sẽ đặt các bit bắt đầu và dừng cho khung dữ liệu và máy thu sẽ xác định nó tương ứng và thực hiện các xử lý tiếp theo.
Kiểm soát lỗi: Kiểm soát lỗi đóng một vai trò quan trọng trong giao tiếp nối tiếp vì có nhiều yếu tố ảnh hưởng và gây thêm tiếng ồn trong giao tiếp nối tiếp. Để loại bỏ lỗi này, các bit chẵn lẻ được sử dụng để kiểm tra tính chẵn lẻ và chẵn lẻ. Vì vậy, nếu khung dữ liệu chứa số chẵn của 1 thì nó được gọi là chẵn lẻ và bit chẵn lẻ trong thanh ghi được đặt thành 1. Tương tự nếu khung dữ liệu chứa số lẻ của 1 thì nó được gọi là chẵn lẻ và xóa bit chẵn lẻ lẻ trong thanh ghi.
Giao thức chỉ giống như một ngôn ngữ chung mà hệ thống sử dụng để hiểu dữ liệu. Như đã mô tả ở trên, giao thức truyền thông nối tiếp được chia thành các loại tức là Synchronous và Asynchronous. Bây giờ cả hai sẽ được thảo luận chi tiết.
Giao thức nối tiếp đồng bộ
Các loại đồng bộ các giao thức nối tiếp như SPI, I2C, CAN và LIN được sử dụng trong các dự án khác nhau vì nó là một trong những nguồn lực tốt nhất cho thiết bị ngoại vi trên máy bay. Ngoài ra đây là những giao thức được sử dụng rộng rãi trong các ứng dụng lớn.
Giao thức SPI
Giao diện ngoại vi nối tiếp (SPI) là một giao diện đồng bộ cho phép một số vi điều khiển SPI được kết nối với nhau. Trong SPI, cần có dây riêng cho dữ liệu và đường đồng hồ. Ngoài ra, đồng hồ không được bao gồm trong luồng dữ liệu và phải được trang bị dưới dạng tín hiệu riêng biệt. SPI có thể được cấu hình dưới dạng chính hoặc như một nô lệ. Bốn tín hiệu SPI cơ bản (MISO, MOSI, SCK và SS), Vcc và Ground là một phần của giao tiếp dữ liệu. Vì vậy, nó cần 6 dây để gửi và nhận dữ liệu từ slave hoặc master. Về mặt lý thuyết, SPI có thể có số lượng nô lệ không giới hạn. Giao tiếp dữ liệu được cấu hình trong thanh ghi SPI. SPI có thể cung cấp tốc độ lên đến 10Mbps và lý tưởng cho truyền dữ liệu tốc độ cao.
Hầu hết các bộ vi điều khiển đều có hỗ trợ SPI sẵn có và có thể được kết nối trực tiếp với thiết bị hỗ trợ SPI:
- Giao tiếp SPI với Vi điều khiển PIC PIC16F877A
- Cách sử dụng giao tiếp SPI trong vi điều khiển STM32
- Cách sử dụng SPI trong Arduino: Giao tiếp giữa hai Bo mạch Arduino
Giao tiếp nối tiếp I2C
Mạch tích hợp liên (I2C) giao tiếp hai dòng giữa các IC hoặc mô-đun khác nhau trong đó hai dòng là SDA (Dòng dữ liệu nối tiếp) và SCL (Dòng đồng hồ nối tiếp). Cả hai đường dây phải được kết nối với một nguồn cung cấp tích cực bằng cách sử dụng một điện trở kéo lên. I2C có thể cung cấp tốc độ lên đến 400Kbps và nó sử dụng hệ thống địa chỉ 10 bit hoặc 7 bit để nhắm mục tiêu một thiết bị cụ thể trên bus i2c để nó có thể kết nối tới 1024 thiết bị. Nó có độ dài giao tiếp hạn chế và lý tưởng cho giao tiếp trên bo mạch. Mạng I2C dễ dàng thiết lập vì nó chỉ sử dụng hai dây và các thiết bị mới có thể được kết nối đơn giản với hai đường bus I2C chung. Giống như SPI, vi điều khiển thường có các chân I2C để kết nối bất kỳ thiết bị I2C nào:
- Cách sử dụng Giao tiếp I2C trong Vi điều khiển STM32
- Giao tiếp I2C với Vi điều khiển PIC PIC16F877
- Cách sử dụng I2C trong Arduino: Giao tiếp giữa hai Bo mạch Arduino
USB
USB (Universal Serial Bus) là giao thức rộng rãi với nhiều phiên bản và tốc độ khác nhau. Có thể kết nối tối đa 127 thiết bị ngoại vi với một bộ điều khiển máy chủ USB. USB hoạt động như một thiết bị "cắm và chạy". USB được sử dụng trong hầu hết các thiết bị như bàn phím, máy in, thiết bị media, máy ảnh, máy quét và chuột. Nó được thiết kế để cài đặt dễ dàng, đánh giá dữ liệu nhanh hơn, ít dây cáp hơn và trao đổi nóng. Nó đã thay thế các cổng nối tiếp và song song cồng kềnh và chậm hơn. USB sử dụng tín hiệu vi sai để giảm nhiễu và cho phép truyền tốc độ cao trên một khoảng cách xa.
Một bus vi sai được xây dựng với hai dây, một dây đại diện cho dữ liệu được truyền và dây kia là phần bù của nó. Ý tưởng là điện áp 'trung bình' trên dây dẫn không mang bất kỳ thông tin nào, dẫn đến ít nhiễu hơn. Trong USB, các thiết bị được phép sử dụng một lượng điện năng nhất định mà không cần hỏi máy chủ. USB chỉ sử dụng hai dây để truyền dữ liệu và nhanh hơn so với giao diện nối tiếp và song song. Các phiên bản USB hỗ trợ các tốc độ khác nhau như 1.5Mbps (USB v1.0), 480 Mbps (USB2.0), 5Gbps (USB v3.0). Chiều dài của cáp USB cá nhân có thể lên đến 5 mét nếu không có hub và 40 mét với hub.
CÓ THỂ
Mạng Vùng Bộ điều khiển (CAN) được sử dụng trong ô tô để cho phép giao tiếp giữa các ECU (Bộ điều khiển động cơ) và cảm biến. Giao thức CAN mạnh mẽ, chi phí thấp và dựa trên thông điệp và bao gồm trong nhiều ứng dụng - ví dụ như ô tô, xe tải, máy kéo, rô bốt công nghiệp. Hệ thống bus CAN cho phép cấu hình và chẩn đoán lỗi trung tâm trên tất cả các ECU. Các tin nhắn CAN được ưu tiên thông qua các ID để các ID có mức ưu tiên cao nhất không bị gián đoạn. Mỗi ECU chứa một chip để nhận tất cả các thông điệp đã truyền, quyết định mức độ liên quan và hành động tương ứng - điều này cho phép dễ dàng sửa đổi và đưa vào các nút bổ sung (ví dụ: bộ ghi dữ liệu bus CAN). Các ứng dụng bao gồm khởi động / dừng xe, hệ thống tránh va chạm. Hệ thống bus CAN có thể cung cấp tốc độ lên đến 1Mbps.
Microwire
MICROWIRE là một giao diện 3 dây nối tiếp 3Mbps về cơ bản là một tập con của giao diện SPI. Microwire là một cổng I / O nối tiếp trên vi điều khiển, do đó, bus Microwire cũng sẽ được tìm thấy trên EEPROM và các chip Ngoại vi khác. 3 dòng là SI (Serial Input), SO (SerialOutput) và SK (Serial Clock). Dòng Đầu vào Nối tiếp (SI) tới bộ vi điều khiển, SO là dòng đầu ra nối tiếp và SK là dòng xung nhịp nối tiếp. Dữ liệu được chuyển ra trên cạnh giảm của SK và được đánh giá cao trên cạnh tăng. SI được dịch chuyển trên cạnh lên của SK. Một cải tiến bus bổ sung cho MICROWIRE được gọi là MICROWIRE / Plus. Sự khác biệt chính giữa hai bus dường như là kiến trúc MICROWIRE / Plus bên trong vi điều khiển phức tạp hơn. Nó hỗ trợ tốc độ lên đến 3Mbps.
Giao thức nối tiếp không đồng bộ
Loại giao thức nối tiếp không đồng bộ là rất cần thiết khi nói đến truyền dữ liệu đáng tin cậy khoảng cách xa hơn. Giao tiếp không đồng bộ không yêu cầu đồng hồ định thời chung cho cả hai thiết bị. Mỗi thiết bị độc lập lắng nghe và gửi các xung kỹ thuật số đại diện cho các bit dữ liệu với tốc độ đã thỏa thuận. Giao tiếp nối tiếp không đồng bộ đôi khi được gọi là nối tiếp Transistor-Transistor Logic (TTL), trong đó mức điện áp cao là mức logic 1 và điện áp thấp là mức logic 0. Hầu hết mọi vi điều khiển trên thị trường hiện nay đều có ít nhất một Máy thu không đồng bộ đa năng- Máy phát (UART) để giao tiếp nối tiếp. Các ví dụ là RS232, RS422, RS485, v.v.
RS232
RS232 (Tiêu chuẩn khuyến nghị 232) là giao thức rất phổ biến được sử dụng để kết nối các thiết bị ngoại vi khác nhau như Màn hình, CNC, v.v. RS232 có các đầu nối nam và nữ. RS232 là cấu trúc liên kết điểm-điểm với tối đa một thiết bị được kết nối và bao phủ khoảng cách lên đến 15 mét với tốc độ 9600 bps. Thông tin trên giao diện RS-232 được truyền kỹ thuật số bởi logic 0 và 1. Giá trị logic "1" (MARK) tương ứng với điện áp trong khoảng từ -3 đến -15 V. Giá trị logic "0" (SPACE) tương ứng với a điện áp trong phạm vi từ +3 đến +15 V. Nó có trong đầu nối DB9 có 9 sơ đồ chân như TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.
RS422
RS422 tương tự như RS232 cho phép đồng thời gửi và nhận tin nhắn trên các đường riêng biệt nhưng sử dụng tín hiệu vi sai cho việc này. Trong mạng RS-422, chỉ có thể có một thiết bị truyền và tối đa 10 thiết bị nhận. Tốc độ truyền dữ liệu trong RS-422 phụ thuộc vào khoảng cách và có thể thay đổi từ 10 kbps (1200 mét) đến 10 Mbps (10 mét). Đường RS-422 là 4 dây để truyền dữ liệu (2 dây xoắn để truyền và 2 dây xoắn để nhận) và một dây nối đất GND chung. Điện áp trên các đường dữ liệu có thể nằm trong khoảng từ -6 V đến +6 V. Sự khác biệt hợp lý giữa A và B lớn hơn +0,2 V. Mức logic 1 tương ứng với sự khác biệt giữa A và B nhỏ hơn -0,2 V. Tiêu chuẩn RS-422 không xác định một loại đầu nối cụ thể, thông thường nó có thể là một khối đầu cuối hoặc một đầu nối DB9.
RS485
Vì RS485 sử dụng cấu trúc liên kết đa điểm nên nó được sử dụng nhiều nhất trong các ngành công nghiệp và là giao thức được ưa thích trong ngành. RS422 có thể kết nối 32 trình điều khiển đường truyền và 32 bộ thu trong một cấu hình khác biệt nhưng với sự trợ giúp của bộ lặp bổ sung và bộ khuếch đại tín hiệu lên đến 256 thiết bị. RS-485 không xác định một loại đầu nối cụ thể, nhưng nó thường là một khối đầu cuối hoặc một đầu nối DB9. Tốc độ hoạt động cũng phụ thuộc vào độ dài của đường dây và có thể đạt 10 Mbit / s ở 10 mét. Điện áp trên các đường dây nằm trong khoảng từ -7 V đến +12 V. Có hai loại RS-485 như chế độ bán song công RS-485 với 2 tiếp điểm và chế độ song công RS-485 với 4 tiếp điểm. Để tìm hiểu thêm về cách sử dụng RS485 với các bộ vi điều khiển khác, hãy kiểm tra các liên kết:
- Giao tiếp nối tiếp RS-485 MODBUS sử dụng Arduino UNO làm nô lệ
- Giao tiếp nối tiếp RS-485 giữa Raspberry Pi và Arduino Uno
- Giao tiếp nối tiếp RS485 giữa Arduino Uno và Arduino Nano
- Giao tiếp nối tiếp giữa STM32F103C8 và Arduino UNO sử dụng RS-485
Phần kết luận
Giao tiếp nối tiếp là một trong những hệ thống giao diện truyền thông được sử dụng rộng rãi trong điện tử và hệ thống nhúng. Tốc độ dữ liệu có thể khác nhau đối với các ứng dụng khác nhau. Giao thức truyền thông nối tiếp có thể đóng vai trò quyết định khi xử lý loại ứng dụng này. Vì vậy việc lựa chọn giao thức Serial phù hợp trở nên rất quan trọng.