问朋友借了一个STIM300来做一下实验,由于没有配置的软件,所以只能自己研究一下怎么从中读取数据。
STIM300尺寸38.6mm x 44.8mm x 21.5mm,内置24bit 陀螺仪、加速度计、倾角加速度计、温度传感器数据,使用高速422接口进行通信,采用5V供电,最大功耗2w,整体性能很不错:
打开串口工具,设备上电后立即给设备发SERVICEMODE+回车可以进入service模式,我这个串口助手有点问题,ascii发送回车发送的多了个\r,而STIM300要以0x0D结尾,直接使用hex发送就可以了.
上电后STIM300自动转到normal模式下发送数据,数据以identifier开头,长度跟配置的有关,servicemode下可以看到,我这里设置的数据是以0x93开头,长度为38,DATAGRAME=NONE 代表数据末尾不含0x0D 0x0A
采集到的数据:
93 00 01 A5 00 04 42 00 01 0B 00 FF FA F1 00 00 5B 07 F6 06 00 00 4F 53 00 4B 07 3F E1 20 00 8F 02 03 47 F4 C8 3C
93 00 01 12 FF FF 52 00 01 4A 00 FF FA 38 00 01 13 07 F1 DB 00 00 4F 38 00 59 74 3F ED 90 00 90 02 03 2C 0F 40 03
93 FF FB 5D FF FC DE FF FD 54 00 FF F8 11 00 00 A8 07 ED 69 00 00 52 29 00 58 28 3F F9 FE 00 91 02 04 AD 99 DF B0
93 FF F6 CE FF FC 0A FF FB 19 00 FF F6 32 00 00 FC 07 ED 8C 00 00 4E 0A 00 49 96 40 05 B4 00 92 02 04 33 63 BA A1
93 FF FA D8 00 00 E2 00 01 51 00 FF F4 7E 00 03 82 07 F0 E1 00 00 46 39 00 40 00 40 0C 58 00 93 02 04 29 91 18 A8
93 00 02 5D 00 06 44 00 0B 00 00 FF F3 5F 00 04 AE 07 F4 66 00 00 44 D8 00 3E 3B 40 0B 48 00 94 02 04 31 87 70 ED
93 00 06 AF 00 00 81 00 09 C5 00 FF F4 3E 00 03 1F 07 F7 40 00 00 4A D3 00 3E 55 40 05 F9 00 95 02 04 ED 02 BD 60
93 00 08 9C FF FA C7 00 00 A2 00 FF F7 C2 00 02 0D 07 F6 ED 00 00 55 D2 00 41 35 40 01 F0 00 96 02 04 B3 86 CC F2
93 00 03 7C FF FF A1 FF FC 89 00 FF FB 2A 00 02 2A 07 F3 E9 00 00 63 94 00 41 A1 40 02 38 00 97 02 05 31 9A B6 AE
93 FF FB 03 00 05 38 FF FE CC 00 FF FA F7 00 02 46 07 F2 6D 00 00 6D B1 00 35 CA 40 04 9F 00 98 02 03 B2 3B 27 C1
93 FF FB 51 00 07 0A 00 04 11 00 FF F8 A3 00 03 EF 07 F3 E1 00 00 6D C3 00 23 47 40 04 12 00 99 02 03 9D FA EF 1B
93 00 01 E0 00 06 E5 00 09 D3 00 FF F5 D1 00 06 69 07 F5 1F 00 00 66 8A 00 18 BA 3F FC CF 00 9A 02 03 35 87 4D 39
93 00 05 89 00 03 0A 00 0A CB 00 FF F4 06 00 06 48 07 F3 58 00 00 5F 62 00 17 30 3F F0 04 00 9B 02 03 90 53 83 06
以其中一条为例:
93 //帧头
00 02 81 //陀螺仪x
00 04 89 //陀螺仪y
00 04 D9 //陀螺仪z
00 //陀螺仪状态
FF F2 72 //加速度计x
00 11 43 //加速度计y
07 F7 AF //加速度计z
00 //加速度计状态
00 56 4B //倾角计x
00 7F FE //倾角计y
40 35 5B //倾角计z
00 //倾角计状态
40 //自增计数器
02 04 //数据延迟
62 C4 63 99 //crc
我设置的是陀螺仪输出角速率,陀螺仪z轴输出为:00 04 D9,计算为1241/2^14=0.07574 (deg/s) ,如果是负数需要先计算原码。
以加速度Z轴为例,我这里使用的量程为10g,计算 0x07F7AF/2^10=0.9959g
这个STIM300的CRC之前我也遇到一些问题,这里记一下,它这个CRC肯定计算没问题的,就是标准的CRC32/MPEG2,多项式为0x04C11DB7,初始值是0xffffffff,结果异或值为0x00000000,输入和输出都不反转. 但是CRC32要补足32位的整数倍,比如93 00 05 89 00 03 0A 00 0A CB 00 FF F4 06 00 06 48 07 F3 58 00 00 5F 62 00 17 30 3F F0 04 00 9B 02 03 90 53 83 06,最后4字节为CRC,去掉CRC剩34字节,要补到36字节,在02 03 后面补2字节0再计算:93 00 05 89 00 03 0A 00 0A CB 00 FF F4 06 00 06 48 07 F3 58 00 00 5F 62 00 17 30 3F F0 04 00 9B 02 03 00 00 可以在http://www.ip33.com/crc.html,选CRC-32/MPEG2就行
关于串口误码的问题也更新一下,之前我使用串口助手在windows上用921600bps采集是没问题的,但是在树莓派和ubuntu18.04上均出现误码的问题 ,后来发现是linux自带的CH340的驱动较老造成的,需要更新.http://www.wch.cn/download/CH341SER_LINUX_ZIP.html 自己编译一下,编译的时候有可能会有错误,稍微改一下几个地方,或者去下载一个别人编译好的内核更新一下就行