STIM300读取数据

STIM300 IMU读取数据

  • 参数
  • 硬件连接
  • 服务模式
  • 数据格式
  • CRC计算
  • 串口误码问题

参数

问朋友借了一个STIM300来做一下实验,由于没有配置的软件,所以只能自己研究一下怎么从中读取数据。
STIM300尺寸38.6mm x 44.8mm x 21.5mm,内置24bit 陀螺仪、加速度计、倾角加速度计、温度传感器数据,使用高速422接口进行通信,采用5V供电,最大功耗2w,整体性能很不错:
STIM300读取数据_第1张图片
STIM300读取数据_第2张图片STIM300读取数据_第3张图片

硬件连接

我用的是绿联的422转usb线,
串口设置:STIM300读取数据_第4张图片
硬件连接图:
STIM300读取数据_第5张图片

服务模式

打开串口工具,设备上电后立即给设备发SERVICEMODE+回车可以进入service模式,我这个串口助手有点问题,ascii发送回车发送的多了个\r,而STIM300要以0x0D结尾,直接使用hex发送就可以了.在这里插入图片描述STIM300读取数据_第6张图片STIM300读取数据_第7张图片

数据格式

上电后STIM300自动转到normal模式下发送数据,数据以identifier开头,长度跟配置的有关,servicemode下可以看到,我这里设置的数据是以0x93开头,长度为38,DATAGRAME=NONE 代表数据末尾不含0x0D 0x0A
STIM300读取数据_第8张图片STIM300读取数据_第9张图片采集到的数据:
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

STIM300读取数据_第10张图片我设置的是陀螺仪输出角速率,陀螺仪z轴输出为:00 04 D9,计算为1241/2^14=0.07574 (deg/s) ,如果是负数需要先计算原码。
STIM300读取数据_第11张图片
以加速度Z轴为例,我这里使用的量程为10g,计算 0x07F7AF/2^10=0.9959g

CRC计算

这个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就行STIM300读取数据_第12张图片

串口误码问题

关于串口误码的问题也更新一下,之前我使用串口助手在windows上用921600bps采集是没问题的,但是在树莓派和ubuntu18.04上均出现误码的问题 ,后来发现是linux自带的CH340的驱动较老造成的,需要更新.http://www.wch.cn/download/CH341SER_LINUX_ZIP.html 自己编译一下,编译的时候有可能会有错误,稍微改一下几个地方,或者去下载一个别人编译好的内核更新一下就行

你可能感兴趣的:(IMU,嵌入式)