HWT101 Protocol
HWT101 Protocol
Instructions for use:
The serial port sending command must be completed within 10S, otherwise it will be automatically locked. To avoid automatic locking, the following steps can be performed.
1. Enter the unlock command
2. Enter the command that needs to modify or read the data
3. Save the command
Register
ADDR
(Hex)
ADDR
(Dec)
REGISTER NAME
FUNCTION
SERIAL
I/F
Bit15
Bit14
Bit13
Bit12
Bit11
Bit10
Bit9
Bit8
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
00
00
SAVE
save/rebbot/reset
R/W
SAVE[15:0]
03
03
RRATE
output rate
R/W
RRATE[3:0]
04
04
BAUD
Serial port baud rate
R/W
BAUD[3:0]
1A
26
IICADDR
device address
R/W
IICADDR[7:0]
1B
27
LEDOFF
turn off LED light
R/W
LEDOFF
27
39
READADDR
Read registers
R/W
READADDR[7:0]
2E
46
VERSION
version number
R
VERSION[15:0]
30
48
YYMM
year/mouth
R/W
MOUTH[15:8]
YEAR[7:0]
31
49
DDHH
day/hour
R/W
HOUR[15:8]
DAY[7:0]
32
50
MMSS
minute/seconds
R/W
SECONDS[15:8]
MINUTE[7:0]
33
51
MS
millisecond
R/W
MS[15:0]
38
56
GY
Angular velocityY
R
GY[15:0]
39
57
GZ
Angular velocityZ
R
GZ[15:0]
3F
63
Yaw
Heading angle
R
Yaw[15:0]
41
65
AUTOPTP
Automatically obtain zero bias peak-to-peak
R/W
AUTOPTP[15:0]
43
67
AUTOT
Automatically obtain zero bias time
R/W
AUTOT[15:0]
44
68
AUTOTH
Automatically obtain zero bias threshold
R/W
AUTOTH[15:0]
48
72
WORKMODE
working mode
R/W
WORKMODE[2:0]
4A
74
GYROPTP
Z-axis static peak-to-peak
R/W
GYROPTP[15:0]
4B
75
GPTPTIME
Z-axis peak-to-peak acquisition time
R/W
GPTPTIME[15:0]
4C
76
GYROBAIS
Z-axis zero bias value
R/W
GYROBAIS[15:0]
4D
77
GBAISTIME
Z-axis zero bias acquisition time
R/W
GYROBAIS[15:0]
4E
78
GSTATICTHRE
Z-axis static threshold
R/W
GSTATICTHRE[15:0]
4F
79
GSTATICTIME
Z-axis stabilization time
R/W
GSTATICTIME[15:0]
50
80
PGSCALE
Z-axis calibration factor P
R/W
PGSCALE[15:0]
52
82
GSCALERANGE
Z-axis calibration angle
R/W
GSCALERANGE[15:0]
61
97
GYROCALITHR
Static detection threshold
R/W
GYROCALITHR[15:0]
63
99
GYROCALTIME
Gyro auto calibration time
R/W
GYROCALTIME[15:0]
6A
106
WERROR
Gyroscope change value
R/W
GYROPTP[15:0]
6E
110
WZTIME
Angular velocity continuous rest time
R/W
WZTIME[15:0]
6F
111
WZSTATIC
Angular velocity integral threshold
R/W
WZSTATIC[15:0]
74
116
MODDELAY
485 data response delay
R/W
MODDELAY[15:0]
76
118
CALIYAW
Z axis angle to zero
R/W
CALIYAW[15:0]
Read format
Data is sent in hexadecimal, not ASCII.
Each data is transmitted in sequence by low byte and high byte, and the two are combined into a signed short type of data. For example, for data DATA1, DATA1L is the low byte and DATA1H is the high byte. The conversion method is as follows:
Assuming that DATA1 is the actual data, DATA1H is the high byte part, and DATA1L is the low byte part, then: DATA1=(short)((short)DATA1H<<8|DATA1L). It must be noted here that DATA1H needs to be coerced into a signed short type of data before shifting, and the data type of DATA1 is also a signed short type, so that negative numbers can be represented.
protocol head
Data content
Data lower 8 bits
Data high 8 bits
Data lower 8 bits
Data high 8 bits
Data lower 8 bits
Data high 8 bits
Data lower 8 bits
Data high 8 bits
SUMCRC
0x55
TYPE【1】
DATA1L[7:0]
DATA1H[15:8]
DATA2L[7:0]
DATA2H[15:8]
DATA3L[7:0]
DATA3H[15:8]
DATA4L[7:0]
DATA4H[15:8]
SUMCRC【2】
【1】TYPE(Data content):
TYPE
Remark
0x52
Angular velocity
0x53
Angle
【2】SUMCRC(data and checksum):
SUMCRC=0x55+TYPE+DATA1L+DATA1H+DATA2L+DATA2H+DATA3L+DATA3H+DATA4L+DATA4H
SUMCRC is a char type, taking the lower 8 bits of the checksum
Angular velocity
0x55
0x52
0x00
0x00
WyL
WyH
WzL
WzH
0x00
0x00
SUM
Name
Description
Remark
0x00
meaningless
0x00
meaningless
WzL
Angular velocity Z low 8 bits
Angular velocity Z=((WzH<<8)|WzL)/32768*2000°/s【1】
WzH
Angular velocity Z high 8 bits
WzL
Angular velocity Z low 8 bits
Angular velocity Z=((WzH<<8)|WzL)/32768*2000°/s【2】
WzH
Angular velocity Z high 8 bits
0x00
meaningless
0x00
meaningless
SUM
Checksum
SUM=0x55+0x52+WyL+WyH+WzL+WzH
【1】Raw data of angular velocity Z
【2】 The angular velocity Z obtained after the original data of the angular velocity Z is calibrated
Angle output
0x55
0x53
RollL
RollH
PitchL
PitchH
0x00
0x00
VL
VH
SUM
Name
Description
Remark
0x00
Meaningless
0x00
Meaningless
0x00
Meaningless
0x00
Meaningless
YawL
Yaw angle Z low 8 bits
yaw angle Z=((YawH<<8)|YawL)/32768*180(°)
YawH
Yaw angle Z high 8 bits
VL
Version number lower 8 bits
Version number calculation formula: version number=(VH<<8)|VL
VH
Version number high 8 bits
SUM
checksum
SUM=0x55+0x53+YawH+YawL+VL+VH
Read format
The following data, all using Hex code in hexadecimal
All settings need to operate the unlock register (KEY) first
protocol header
protocol header
register
Data lower 8 bits
Data high 8 bits
0xFF
0xAA
ADDR
DATAL[7:0]
DATAH[15:8]
Data is sent in hexadecimal, not ASCII.
Each data is transmitted in sequence by low byte and high byte, and the two are combined into a signed short type of data. For example, data DATA, where DATAL is the low byte and DATAH is the high byte. The conversion method is as follows:
Assuming that DATA is the actual data, DATAH is its high-byte part, and DATAL is its low-byte part, then: DATA=(short)((short)DATAH<<8|DATAL). It must be noted here that DATAH needs to be coerced into a signed short type of data before shifting, and the data type of DATA is also a signed short type, so that negative numbers can be represented.
SAVE (save/reboot/reset)
Register Name: SAVE
Register Address: 0 (0x00)
Read and write direction: R/W
Default: 0x0000
Bit
NAME
FUNCTION
15:0
SAVE[15:0]
Save: 0x0000
Reboot: 0x00FF
Factory reset: 0x0001
Example: FF AA 00 FF 00 (reboot)
RRATE(output rate)
Register Name: RRATE
Register Address: 3 (0x03)
Read and write direction: R/W
Default: 0x0006
Bit
NAME
FUNCTION
15:4
3:0
RRATE[3:0]
set output rate:
0001(0x01): 0.2Hz
0010(0x02): 0.5Hz
0011(0x03): 1Hz
0100(0x04): 2Hz
0101(0x05): 5Hz
0110(0x06): 10Hz
0111(0x07): 20Hz
1000(0x08): 50Hz
1001(0x09): 100Hz
1011(0x0B): 200Hz
1011(0x0C): 500Hz
Example: FF AA 03 03 00 (set 1Hz output)
BAUD RATE(Serial port baud rate)
Register Name: BAUD
Register Address: 4 (0x04)
Read and write direction: R/W
Default: 0x0002
Bit
NAME
FUNCTION
15:4
3:0
BAUD[3:0]
Set serial port baud rate:
0001(0x01): 4800bps
0010(0x02): 9600bps
0011(0x03): 19200bps
0100(0x04): 38400bps
0101(0x05): 57600bps
0110(0x06): 115200bps
0111(0x07): 230400bps
Example: FF AA 04 06 00 (set serial port baud rate 115200)
IIC ADDRESS(Device address)
Register Name: IICADDR
Register Address: 26 (0x1A)
Read and write direction: R/W
Default: 0x0050
Bit
NAME
FUNCTION
15:8
7:0
IICADDR[7:0]
Set the device address for I2C use
0x01~0x7F
Example: FF AA 1A 02 00 (set the device address to 0x02)
LEDOFF(turn off LED light)
Register Name: LEDOFF
Register Address: 27 (0x1B)
Read and write direction: R/W
Default: 0x0000
Bit
NAME
FUNCTION
15:1
0
LEDOFF
1: turn off LED light
0: open up LED light
Example: FF AA 1B 01 00 (turn off the LED light)
READADDR(Read registers)
Register Name: READADDR
Register Address: 39 (0x27)
Read and write direction: R/W
Default: 0x00FF
Bit
NAME
FUNCTION
15:8
7:0
READADDR[7:0]
Read register range: Please refer to "Register Table"
Example:
Send: FF AA 27 34 00 (read acceleration X-axis 0x34)
Return: 55 5F AXL AXH AYL AYH AZL AZH GXL GXH SUM
For details, please refer to "Read Register Return Value" in the "Read Format" chapter
VERSION(version number)
Register Name: VERSION
Register Address: 46 (0x2E)
Read and write direction: R
Default: none
Bit
NAME
FUNCTION
15:0
VERSION[15:0]
Different products, different version numbers
Example:
Send: FF AA 27 2E 00 (read version number, 0x27 means read, 0x2E is version number register)
Return: 55 5F VL VH XX XX XX XX XX XX SUM
VERSION[15:0]=(short)(((short)VH<<8)|VL)
YYMM~MS(on-chip time)
Register Name: YYMM~MS
Register address: 48~51 (0x30~0x33)
Read and write direction: R/W
Default: 0x0000
Bit
NAME
FUNCTION
15:8
YYMM[15:8]
mouth
7:0
YYMM[7:0]
year
15:8
DDHH[15:8]
hour
7:0
DDHH[7:0]
day
15:8
MMSS[15:8]
seconds
7:0
MMSS[7:0]
minute
15:0
MS[15:0]
millisecond
Example:
FF AA 30 16 03 (set year 22-03)
FF AA 31 0C 09 (set date 12-09)
FF AA 32 1E 3A (set minute seconds 30:58)
FF AA 33 F4 01 (set ms 500)
Example:
Send: FF AA 27 30 00 (read version number, 0x27 means read, 0x30 is year month register)
Returns: 55 5F YYMM[7:0] YYMM[15:8] DDHH[7:0] DDHH[15:8] MMSS[7:0] MMSS[15:8] MS[7:0] MS[15: 8] SUM
GY~GZ(Angular velocity)
Register Name: GY~GZ
Register address: 56~57 (0x38~0x39)
Read and write direction: R
Default: 0x0000
Bit
NAME
FUNCTION
15:0
GY[15:0]
Angular velocity Y=GY[15:0]/32768*2000°/s【1】
15:0
GZ[15:0]
Angular velocity Z=GZ[15:0]/32768*2000°/s【2】
[1] Raw data of angular velocity Z
[2] The angular velocity Z obtained after the original data of the angular velocity Z is calibrated
Yaw(yaw angle)
Register Name: Yaw
Register Address: 63 (0x3F)
Read and write direction: R
Default: 0x0000
Bit
NAME
FUNCTION
15:0
Yaw[15:0]
yaw angle Z=Yaw[15:0]/32768*180°
WORKMODE(Z-axis operation mode)
Register Name: WORKMODE
Register Address: 72 (0x48)
Read and write direction: R/W
Default: 0x0000
Bit
NAME
FUNCTION
15:4
3:0
WORKMODE[3:0]
Set the Z-axis operation mode:
0000(0x00): normal data mode
0001(0x01): peak-to-peak mode
0010(0x02): seek zero offset mode
0011 (0x03): find scale factor mode
Example: Send: FF AA 48 01 00 (Automatically obtain zero bias)
GYROPTP(Z-axis static peak-to-peak)
Register Name: GYROPTP
Register Address: 74 (0x4A)
Read and write direction: R/W
Default: 0x0000
Bit
NAME
FUNCTION
15:0
GYROPTP[15:0]
Parameters used in calculating zero bias, no need to set for sensor automatic acquisition
Write 0x01 to the "WORKMODE" register to enter the "peak-to-peak mode", in this mode the sensor automatically calculates the maximum and minimum values of the Z-axis angular velocity within the time set by "GPTPTIME" and records them in "GYROPTP". In "Zero Offset Mode", this data will be used to calculate and filter the zero offset.
Z-axis static peak-to-peak value = GYROPTP/1000 (°/s)
Example:
Send: FF AA 27 4A 00 (read Z-axis static peak-to-peak value)
Return: 55 5F 64 00 XX XX XX XX XX XX SUM
0x0064=100, Z-axis static peak-to-peak value = 100/1000=0.1 (°/s)
GPTPTIME(Z-axis peak-to-peak acquisition time)
Register Name: GPTPTIME
Register Address: 75 (0x4B)
Read and write direction: R/W
Default: 0x000A
Bit
NAME
FUNCTION
15:0
GPTPTIME[15:0]
Calculate the peak-to-peak time, the default is 10S
Example:
Send: FF AA 4B 0A 00 (set the Z-axis peak-to-peak acquisition time to 10S)
After entering the "Peak-to-Peak Mode", obtain the difference between the maximum value and the minimum value of the Z-axis angular velocity within the "GPTPTIME" time, store it in "GYROPTP", and use this data for zero bias in the "Zero Bias Mode". calculation filter.
GYROBAIS(Z axis zero bias value)
Register Name: GYROBAIS
Register Address: 76 (0x4C)
Read and write direction: R/W
Default: 0x0000
Bit
NAME
FUNCTION
15:0
GYROBAIS[15:0]
The zero bias value of the horizontal gyroscope, which can be obtained through the "Zero Bias Mode"
The Z-axis horizontal gyroscope has a certain zero bias value when placed at rest, and the angular velocity at rest can be eliminated by this zero bias value. The zero offset value can be automatically calculated by automatically obtaining the zero offset. Enter the "Zero Offset Mode" to automatically calculate the zero offset value according to the peak-to-peak value of "GYROPTP" and the "GBAISTIME" offset acquisition time.
Z axis zero bias value = GYROBAIS/1000 (°/s)
Example:
Send: FF AA 27 4C 00 (read Z-axis static peak-to-peak value)
Return: 55 5F 64 00 XX XX XX XX XX XX SUM
0x0064=100, Z-axis static peak-to-peak value = 100/1000=0.1 (°/s)
GBAISTIME(Z axis zero offset acquisition time)
Register Name: GBAISTIME
Register Address: 77 (0x4D)
Read and write direction: R/W
Default: 0x000A
Bit
NAME
FUNCTION
15:0
GBAISTIME[15:0]
Time required to calculate the zero bias value of the horizontal gyroscope
Example: Send: FF AA 4D 0A 00 (set the Z-axis zero bias acquisition time to 10S)
The time required to obtain the Z-axis zero bias, and the zero bias value is obtained according to this time when the zero bias is obtained.
GSTATICTHRE(Z-axis stillness threshold)
Register Name: GSTATICTHRE
Register Address: 78 (0x4E)
Read and write direction: R/W
Default: 0x0032
Bit
NAME
FUNCTION
15:0
GSTATICTHRE[15:0]
The larger the GSTATICTHRE[15:0], the weaker the seismic performance and the smaller the error
The smaller the GSTATICTHRE[15:0], the better the seismic performance and the larger the error.
Default value 50
The Z-axis horizontal gyroscope has slight data jitter when it is placed at rest. This parameter can filter out these slight jitters. When the angular velocity is less than the "GSTATICTHRE" setting value and lasts for the time set by "GSTATICTIME", it is regarded as stationary, and the Z-axis angular velocity is zero. This parameter can be appropriately increased when it is used in scenes with jitter and the Z-axis is accumulated due to jitter, and this parameter can be appropriately decreased in scenes with very slow and uniform rotation.
Z axis zero bias value = GSTATICTHRE/1000 (°/s)
Example:
Send: FF AA 4E 64 00 ((set the Z axis static threshold 0.1g), 0x0064=100, 100/10000=0.1(°))
GSTATICTIME(Z-axis settling time)
Register Name: GSTATICTIME
Register Address: 79 (0x4F)
Read and write direction: R/W
Default: 0x0064
Bit
NAME
FUNCTION
15:0
GSTATICTIME[15:0]
Z-axis judges the still time
Z-axis static judgment time threshold. It is considered stationary when the angular velocity is less than the value set by "GSTATICTHRE" for the time set by "GSTATICTIME". If the stabilization time is required to be higher, this parameter can be adjusted appropriately. Lowering this parameter can speed up settling time but may also increase error.
Z-axis stabilization time = GSTATICTIME/1000 (s)
Example:
Send: FF AA 4F 32 00 ((set the Z axis stabilization time to 0.05s), 0x0032=50, 50/10000=0.05(°))
PGSCALE(Z-axis calibration factor P)
Register Name: PGSCALE
Register Address: 80 (0x50)
Read and write direction: R/W
Default: 0x2710
Bit
NAME
FUNCTION
15:0
PGSCALE[15:0]
Range:0~20000
This parameter is written in the factory using a high-precision turntable, please do not modify it
There is an error in the measurement of the Z-axis gyroscope, and a high-precision turntable will be used to measure this error when leaving the factory, and this parameter will be written into the sensor. Do not modify this parameter unless necessary. This parameter can be automatically calculated in the "scale factor mode". After entering the "scale factor mode", rotate the sensor by the angle set by "GSCALERANGE" to calculate the calibration factor.
Z-axis calibration factor P=PGSCALE/10000.0
Example:
Send: FF AA 27 50 00 (read Z-axis calibration factor P)
Return: 55 5F 74 27 XX XX XX XX XX XX SUM
0x2774 = 10100, read Z-axis calibration factor P = 10100/10000=1.01
GSCALERANGE(Z-axis angle calibration range)
Register Name: GSCALERANGE
Register Address: 82 (0x52)
Read and write direction: R/W
Default: 0x02D0
Bit
NAME
FUNCTION
15:0
GSCALERANGE[15:0]
When calibrating the factor, it needs to be calibrated according to this parameter
Example:
Send: FF AA 52 68 01 ((set Z-axis calibration angle 360), 0x0168=360)
The required rotation angle of the Z axis in the "scale factor mode" is generally set to an integer multiple of 360°.
GYROCALITHR(Gyro Rest Threshold)
Register Name: GYROCALITHR
Register Address: 97 (0x61)
Read and write direction: R/W
Default: 0x0000
Bit
NAME
FUNCTION
15:0
GYROCALITHR[15:0]
Set the gyroscope inactivity threshold:
Gyro Gyro Still Threshold=GYROCALITHR[15:0]/1000(°/s)
Example:
FF AA 61 32 00 (set the gyro static threshold to 0.05°/s,
0x0032=50, 50/1000=0.05(°/s))
When the angular velocity change is less than 0.05°/s and lasts for the time of "GYROCALTIME", the sensor recognizes it as stationary and automatically resets the angular velocity less than 0.05°/s to zero
The setting rule of the static threshold of the gyroscope can be determined by reading the value of the "WERROR" register. The general setting rule is: GYROCALITHR=WERROR*1.2, unit: °/s
This register needs to be used in conjunction with the GYROCALTIME register
GYROCALTIME(Gyro auto calibration time)
Register Name: GYROCALTIME
Register Address: 99 (0x63)
Read and write direction: R/W
Default: 0x03E8
Bit
NAME
FUNCTION
15:0
GYROCALTIME[15:0]
Set gyroscope auto-calibration time
Example: Set gyroscope auto-calibration time to 500ms
FF AA 63 F4 01
When the angular velocity change is less than "GYROCALITHR" and lasts for 500ms, the sensor recognizes that it is stationary and automatically resets the angular velocity less than 0.05°/s to zero
This register needs to be used in conjunction with the GYROCALITHR register
WERROR(Gyroscope change value)
Register Name: WERROR
Register Address: 106 (0x6A)
Read and write direction: R
Default: 0x0000
Bit
NAME
FUNCTION
15:0
WERROR[15:0]
Gyroscope change value=WERROR[15:0]/1000*180/3.1415926(°/s)
When the sensor is stationary, the "GYROCALITHR" register can be set by changing this register
WZTIME(Angular velocity continuous rest time)
Register Name: WZTIME
Register Address: 110 (0x6E)
Read and write direction: R/W
Default: 0x01F4
Bit
NAME
FUNCTION
15:0
WZTIME[15:0]
Angular velocity continuous rest time
Example: Set the angular velocity continuous static time to 500ms
FFAA 6E F4 01
When the angular velocity is less than "WZSTATIC" and lasts for 500ms, the angular velocity output is 0, and the Z-axis heading angle is not integrated
This register needs to be used in conjunction with the "WZSTATIC" register
WZSTATIC(Angular velocity integral threshold)
Register Name: WZSTATIC
Register Address: 111 (0x6F)
Read and write direction: R/W
Default: 0x012C
Bit
NAME
FUNCTION
15:0
WZSTATIC[15:0]
Angular velocity integral threshold=WZSTATIC[15:0]/1000(°/s)
Example: Set the angular velocity integration threshold to 0.5°/s
FF AA 6F F4 01
When the angular velocity is greater than 0.5°/s, the Z-axis heading angle starts to integrate the acceleration
When the angular velocity is less than 0.5°/s, and the duration set by the register "WZTIME", the angular velocity output is 0, and the Z-axis heading angle is not integrated
This register needs to be used in conjunction with the "WZTIME" register
CALIYAW(Z-axis angle to zero)
Register Name: CALIYAW
Register address: 118(0x76)
Read and write direction: R/W
Default: 0x0000
Bit
NAME
FUNCTION
15:0
CALIYAW[15:0]
Set the Z-axis to zero:
0 (0x00): Z-axis returns to zero
Example: FF AA 76 00 00 (Z-axis angle return to zero)
Last updated