19/10/2022
0

Giới thiệu về chuẩn giao tiếp One Wire

One Wire là gì?

Chuẩn giao tiếp One Wire được nghiên cứu và phát triển bởi Dallas Semiconductor (Maxim). One Wire chỉ sử dụng một dây đường truyền để thực hiện truyền và nhận dữ liệu.

Chuẩn giao tiếp One Wire là chuẩn giao tiếp không đồng bộ bán song công (half-duplex: tại một thời điểm, tín hiệu chỉ có thể chạy theo một hướng). Vì One Wire chỉ sử dụng một dây để nối nguồn và truyền dữ liệu, nên khi ở trạng thái rãnh (không có dữ liệu trên đường truyền) thì nó cần phải ở mức cao, do đó cần kết nối dây này với nguồn thông qua một điện trở. Điện trở này thường được gọi là điện trở kéo lên (pull-up resistor). Tùy theo các thiết bị mà giá trị điện trở này có thể thay đổi.

One Wire có hai chế độ làm việc là standard và overdrive. Khi làm việc ở chế độ standard thì tốc độ truyền dữ liệu là 15.4kbps, với chế độ overdrive là 125kbps.

Chuẩn giao tiếp One Wire tuân theo mô hình master - slave. Trên một đường truyền dữ liệu có thể gắn nhiều thiết bị slave, nhưng chỉ có duy nhất một thiết bị là master. Mỗi một thiết bị slave sẽ có duy nhất 64-bit địa chỉ lưu trữ trong bộ nhớ ROM của mình. Nhờ thế, khi kết nối vào chung một bus dữ liệu thì thiết bị master sẽ có thể nhận biết được giữa các slave. Trong 8 byte (64 bit) này sẽ được chia ra làm 3 phần chính: 

  • Bắt đầu là LSB (least significant bit), byte đầu tiên bao gồm 8 bit được gửi đi là mã họ thiết bị (family codes) giúp xác định đó là loại thiết bị nào.

  • 6 byte tiếp theo lưu trữ một địa chỉ riêng của từng thiết bị với 48 bit tùy biến.

  • Byte cuối cùng MSB (most significant bit) là byte kiểm tra tính toàn vẹn của dữ liệu – cyclic redundancy check (CRC), đây là byte giúp kiểm tra xem tín hiệu gửi đi có bị lỗi hay không.

Cơ sở truyền nhận

Chuẩn giao tiếp One Wire sử dụng khái niệm time slot (khe thời gian). Một time slot là một khoảng thời gian trong đó mức logic 1 hoặc 0 sẽ được ghi hoặc đọc. Time slot có khoảng thời gian là 60µs khi hoạt động ở chế độ standard, và 8µs với chế độ overdrive.​
 
Có 3 hoạt động cơ bản của One Wire là Read, Write, Reset/Present.
  • Write​: Đối với bit 1 master kéo đường truyền xuống mức thấp trong khoảng 1 đến 15µs, sau đó sẽ giải phóng đường truyền về mức cao.​ Đối với bit 0 master sẽ kéo đường truyền xuống mức thấp trong khoảng 60µs đến 120µs, sau đó sẽ giải phóng đường truyền về mức cao.​ Giữa các lần gửi bit (0 hoặc 1) sẽ có khoảng thời gian nghỉ (recovery time) tối thiểu 1µs.​
  • Read: Master sẽ kéo tín hiệu truyền xuống mức thấp trong khoảng 0-15µs. Nếu slave muốn gửi bit 1 sẽ giải phóng đường truyền trở về mức cao, nếu muốn gửi bit 0 slave sẽ giữ đường truyền ở mức thấp trong khoảng thời gian 15µs đến 60µs.​ Các khoảng thời gian trong các hoạt động trên được xác định ở chế độ standard​.
  • Reset/Present: Master sẽ kéo tín hiệu truyền xuống mức thấp trong khoảng 480µs đến 640µs. Khoảng thời gian này được hiểu là khoảng thời gian reset. Sau khoảng thời gian này, nếu có slave sẽ gửi trả tín hiệu present. Tức là slave sẽ kéo tín hiệu xuống mức thấp trong khoảng 60µs đến 240µs. Nếu​ không có tín hiệu present trả về thì master sẽ hiểu là không có slave nào được kết nối vào mạng, và các quá trình tiếp theo sẽ không được diễn ra.​

Tiến trình hoạt động

Trước khi bắt đầu xác định một slave để làm việc, master cần đưa ra lệnh reset để xác định là có slave nào đó có nằm trên đường truyền bằng cách phản hồi lại tín hiêu present.

Sau khi đã xác định có thiết bị slave được kết nối, master sẽ chọn tất cả hay chỉ 1 slave (dựa trên địa chỉ của thiết bị) để làm việc. Hoặc sẽ xác định slave tiếp theo bằng thuật toán tìm kiếm nhị phân.

Sau khi đã xác định được slave làm việc thì tất cả các slave khác sẽ được bỏ qua, và tất cả các tín hiệu truyền đi sẽ chỉ được nhận bởi thiết bị master và slave đã được chọn.

Nếu muốn giao tiếp với một slave khác, master sẽ bắt đầu lại quá trình từ bước đầu.

Khi một thiết bị được chọn, master có thể đưa ra các lệnh cụ thể cho thiết bị, gửi dữ liệu đến nó hoặc đọc dữ liệu từ nó. Bởi vì mỗi loại thiết bị thực hiện các chức năng khác nhau và phục vụ cho mục đích khác nhau, mỗi máy có một giao thức duy nhất khi nó đã được chọn. Mặc dù mỗi loại thiết bị có thể có các giao thức và tính năng khác nhau nhưng tất cả chúng đều có quy trình lựa chọn giống nhau và tuân theo tiến trình nhất định.

Ứng dụng sử dụng One Wire

Cảm biến nhiệt độ DS18B20 sử dụng giao tiếp One Wire

Cảm biến DHT11 sử dụng giao tiếp One Wire

Đăng nhập