Byte1
Byte2
Byte1 Or 0x01
Thêm vào bit đầu tiên của byte 1 bit 1, để xác dịnh bit strart, khi đó ta được 1 byte mới, có bit đầu tiên là bit 1
Byte1
Xóa giá trị của bit đầu tiên của byte 2 để khi nhận, xác định đang nhận byte 2. Byte2 and 0xFE
Ta được
1 byte mới có bit đầu tiên bằng 0
Byte2
Khi đó ta lấy byte1 xor byte2 được 1 byte, ta lấy 4 bit đầu tiên hoàn toàn mới
0 0 0 0 A1 A2 A3 A4 B1 B2 B3 B4 B5 B6 B7 B8 0 0 0 0 A1 A2 A3 A4 0 0 0 0 A1 A2 A3 1 B1 B2 B3 B4 B5 B6 B7 B8 B1 B2 B3 B4 B5 B6 B7 0
Byte3
Byte thứ 2 ta dịch qua phải 4 bit được byte mới
Byte4
Ta xor byte3 và byte4 với nhau rồi dịch qua trái 4 bit, khi đó ta được byte mới mà 4 bit cuối của nó là check_sum ta đang đi tinh toán.
Khi đưa dữ liệu xuống ta sẽ truyền 2 byte, byte 1 gồm 1 bit start, 3 bít lệnh và 4 bit kiểm tra lỗi
Byte thứ 2 là data,ta sẽ truyền giá trị của PWM xuống, bit đầu tiên la bit start nhận byte 2 còn 7bit là dữ liệu.
byte1
byte2
Check_sum cmd start data start
Lưu đồ 4: Chương trình chuẩn hóa giao thức.
Khi VDK nhận sẽ đi nhận lần lượt từng byte, khi nhận hết byte 1 đi kiểm tra bit start rồi sẽ nhận đến byte 2, rồi xuống đó VDK sẽ làm ngược lại bên trên, nếu Check _sum đúng thì thực hiện chương trình định sẵn.
0 0 0 0 C5 C6 C7 1
0 0 0 0 B1 B2 B3 B4
B1 B2 B3 B4 B5 B6 B7 0