Cho dù đó là thiết bị ngoại vi máy tính, thiết bị thông minh, thiết bị Internet vạn vật (IoT) hay công cụ đo lường điện tử, chúng đều sử dụng giao thức truyền thông nối tiếp để kết nối các thành phần điện tử khác nhau với nhau.
Các thành phần này thường bao gồm bộ vi điều khiển và các mô-đun phụ như cảm biến vân tay, ESP8266 (mô-đun Wi-Fi), servos và màn hình nối tiếp.
Các thiết bị này sử dụng các loại giao thức truyền thông khác nhau. Dưới đây, bạn sẽ tìm hiểu về một số giao thức truyền thông nối tiếp phổ biến nhất, cách chúng hoạt động, ưu điểm của chúng và tại sao chúng vẫn được sử dụng.
Giao tiếp nối tiếp là gì?
Các giao thức truyền thông nối tiếp đã có ở đây kể từ khi phát minh ra Mã Morse vào năm 1838. Ngày nay, các giao thức truyền thông nối tiếp hiện đại sử dụng các nguyên tắc tương tự. Tín hiệu được tạo ra và truyền đi trên một sợi dây bằng cách nối tắt nhiều lần hai dây dẫn với nhau. Đoạn ngắn này hoạt động giống như một công tắc; nó bật (cao) và tắt (thấp), cung cấp tín hiệu nhị phân. Cách tín hiệu này được truyền và nhận sẽ phụ thuộc vào loại giao thức truyền thông nối tiếp được sử dụng.
Tín dụng hình ảnh: shankar.s / Wikimedia Commons
Với việc phát minh ra bóng bán dẫn và những cải tiến sau đó, các kỹ sư và thợ mày mò đã làm cho các đơn vị xử lý và bộ nhớ nhỏ hơn, nhanh hơn và tiết kiệm điện hơn. Những thay đổi này đòi hỏi các giao thức truyền thông xe buýt phải có công nghệ tiên tiến như các thành phần được kết nối. Do đó, việc phát minh ra các giao thức nối tiếp như UART, I2C và SPI. Mặc dù các giao thức nối tiếp này đã có tuổi đời vài thập kỷ, nhưng chúng vẫn được ưu tiên sử dụng cho các bộ vi điều khiển và lập trình kim loại trần.
UART (Bộ thu-phát không đồng bộ đa năng)
Giao thức UART là một trong những giao thức truyền thông nối tiếp lâu đời nhất nhưng đáng tin cậy nhất mà chúng ta vẫn sử dụng ngày nay. Giao thức này sử dụng hai dây được gọi là Tx (truyền) và Rx (Nhận) cho cả hai thành phần để giao tiếp.
Để truyền dữ liệu, cả người phát và người nhận phải đồng ý với năm cấu hình phổ biến, đó là:
- Tốc độ truyền : Tốc độ truyền tải dữ liệu nhanh như thế nào.
- Độ dài dữ liệu: Số bit đã thỏa thuận mà máy thu sẽ lưu vào các thanh ghi của nó.
- Start Bit: Một tín hiệu thấp cho phép người nhận biết khi nào dữ liệu sắp được truyền.
- Bit dừng: Một tín hiệu cao cho phép người nhận biết khi nào bit cuối cùng (bit quan trọng nhất) đã được gửi đi.
- Bit chẵn lẻ: Tín hiệu cao hoặc thấp được sử dụng để kiểm tra xem dữ liệu được gửi là chính xác hay bị hỏng.
Vì UART là một giao thức không đồng bộ nên nó không có đồng hồ riêng để điều chỉnh tốc độ truyền dữ liệu. Thay vào đó, nó sử dụng tốc độ truyền để định thời khi một bit đang được truyền đi. Tốc độ truyền thông thường được sử dụng cho UART là 9600 baud, nghĩa là tốc độ truyền 9600 bit mỗi giây.
Nếu chúng ta thực hiện phép toán và chia một bit cho 9600 baud, chúng ta có thể tính được tốc độ một bit dữ liệu được truyền đến máy thu.
1/9600 = 104 micro giây
Điều này có nghĩa là các thiết bị UART của chúng tôi sẽ bắt đầu đếm 104 micro giây để biết khi nào bit tiếp theo sẽ truyền.
Khi các thiết bị UART đã được kết nối, tín hiệu mặc định luôn được nâng lên mức cao. Khi nó phát hiện một tín hiệu tần số thấp, bộ thu sẽ bắt đầu đếm 104 micro giây cộng thêm 52 micro giây nữa trước khi bắt đầu lưu các bit vào thanh ghi (bộ nhớ) của nó.
Vì nó đã được đồng ý rằng tám bit là độ dài dữ liệu, một khi nó lưu tám bit dữ liệu, nó sẽ bắt đầu kiểm tra tính chẵn lẻ để kiểm tra xem dữ liệu là lẻ hay chẵn. Sau khi kiểm tra chẵn lẻ, bit dừng sẽ tăng tín hiệu cao để thông báo cho các thiết bị rằng toàn bộ tám bit dữ liệu đã được truyền thành công đến máy thu.
Là giao thức nối tiếp tối giản nhất chỉ sử dụng hai dây, ngày nay UART được sử dụng phổ biến trong thẻ thông minh, thẻ SIM và ô tô.
Liên quan: Thẻ SIM là gì? Những điều bạn cần biết
SPI (Giao diện ngoại vi nối tiếp)
SPI là một giao thức nối tiếp phổ biến khác được sử dụng để có tốc độ dữ liệu nhanh hơn khoảng 20Mbps. Nó sử dụng tổng cộng bốn dây, đó là SCK (Dòng xung nhịp nối tiếp), MISO (Master Out Slave In), MOSI (Master In Slave Out) và SS / CS (Chip Select). Không giống như UART, SPI sử dụng định dạng master-to-slave để điều khiển nhiều thiết bị tớ chỉ với một chủ duy nhất.
MISO và MOSI hoạt động giống như Tx và Rx của UART được sử dụng để truyền và nhận dữ liệu. Chip Select được sử dụng để chọn nô lệ mà chủ muốn giao tiếp.
Vì SPI là một giao thức đồng bộ, nó sử dụng đồng hồ tích hợp sẵn từ thiết bị chính để đảm bảo cả thiết bị chủ và thiết bị phụ đều chạy trên cùng một tần số. Điều này có nghĩa là hai thiết bị không còn cần phải thương lượng về tốc độ truyền.
Giao thức bắt đầu với việc chủ chọn thiết bị phụ bằng cách hạ tín hiệu của nó xuống SS / CK cụ thể được kết nối với thiết bị phụ. Khi nô lệ nhận được tín hiệu thấp, nó bắt đầu lắng nghe cả SCK và MOSI. Sau đó, master sẽ gửi một bit bắt đầu trước khi gửi các bit có chứa dữ liệu.
Cả MOSI và MISO đều là song công, có nghĩa là chúng có thể truyền và nhận dữ liệu cùng một lúc.
Với khả năng kết nối với nhiều nô lệ, giao tiếp song công và tiêu thụ điện năng thấp hơn so với các giao thức đồng bộ khác như I2C, SPI được sử dụng trong các thiết bị nhớ, thẻ nhớ kỹ thuật số, bộ chuyển đổi ADC sang DAC và màn hình bộ nhớ tinh thể.
I2C (Mạch tích hợp liên)
I2C là một giao thức nối tiếp đồng bộ khác giống như SPI, nhưng với một số ưu điểm hơn nó. Chúng bao gồm khả năng có nhiều chủ và nô lệ, định địa chỉ đơn giản (không cần chọn chip), hoạt động với nhiều điện áp khác nhau và chỉ sử dụng hai dây kết nối với hai điện trở kéo lên.
I2C thường được sử dụng trong nhiều thiết bị IoT, thiết bị công nghiệp và điện tử tiêu dùng.
Hai chân trong giao thức I2C là SDA (Dòng dữ liệu nối tiếp) truyền và nhận dữ liệu và chân SCL (Dòng đồng hồ nối tiếp), có chức năng như một đồng hồ.
- Giao thức bắt đầu với việc chính gửi một bit bắt đầu (thấp) từ chân SDA của nó, tiếp theo là một địa chỉ bảy bit để chọn phụ và một bit để chọn đọc hoặc ghi.
- Sau khi nhận được bit bắt đầu và địa chỉ, sau đó nô lệ sẽ gửi một bit xác nhận đến chủ và bắt đầu lắng nghe SCL và SDA cho các lần truyền đến.
- Khi chủ nhận được điều này, nó biết kết nối đã được thực hiện với đúng nô lệ. Master bây giờ sẽ chọn thanh ghi (bộ nhớ) cụ thể nào từ slave mà nó muốn truy cập. Nó làm như vậy bằng cách gửi tám bit khác chỉ định thanh ghi nào sẽ được sử dụng.
- Sau khi nhận được địa chỉ, nô lệ sẽ sẵn sàng thanh ghi lựa chọn trước khi gửi một xác nhận khác đến chủ.
- Sau khi đã chọn nô lệ cụ thể nào và đăng ký nào của nó để sử dụng, cuối cùng chủ sẽ gửi bit dữ liệu đến nô lệ.
- Sau khi dữ liệu được gửi, một bit Acknowledge cuối cùng được gửi đến cái chính trước khi cái chính kết thúc bằng một bit dừng (cao).
Liên quan: Các dự án Arduino IoT tốt nhất
Tại sao Truyền thông Nối tiếp vẫn ở đây để duy trì
Với sự gia tăng của nhiều giao thức không dây và song song, truyền thông nối tiếp chưa bao giờ hết phổ biến. Nói chung chỉ sử dụng hai đến bốn dây để truyền và nhận dữ liệu, các giao thức nối tiếp là một phương thức giao tiếp thiết yếu cho các thiết bị điện tử chỉ có một vài cổng dự phòng.
Một lý do khác là tính đơn giản của nó chuyển thành độ tin cậy. Chỉ với một vài dây gửi dữ liệu một lần, nối tiếp đã chứng minh độ tin cậy của nó để gửi các gói dữ liệu hoàn chỉnh mà không bị mất hoặc hỏng khi truyền. Ngay cả ở tần số cao và giao tiếp ở phạm vi xa hơn, các giao thức nối tiếp vẫn đánh bại nhiều giao thức truyền thông song song hiện đại ngày nay.
Mặc dù nhiều người có thể nghĩ rằng các giao tiếp nối tiếp như UART, SPI và I2C có nhược điểm là cũ và lỗi thời, nhưng thực tế là chúng đã chứng minh được độ tin cậy của mình qua vài thập kỷ. Các giao thức cũ như thế này mà không có bất kỳ sự thay thế thực sự nào chỉ cho thấy rằng trên thực tế, chúng là không thể thiếu và sẽ tiếp tục được sử dụng trong lĩnh vực điện tử trong tương lai gần.