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
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