INS组合导航 指令与编程手册
Rev 1.0
适用于CH3xx/HI30/HI32系列

文档变更历史
| 版本 | 日期 | 作者 | 变更内容 |
|---|---|---|---|
| V1.0 | 2023年10月1日 | HiPNUC | 初始版本 |
模块配置命令
模块配置采用 ASCII 字符串命令,每条命令必须以回车换行 \r\n 结束(类似 AT 指令),系统才能识别。
配置命令总览
| 指令 | 描述 |
|---|---|
| REBOOT | 复位 |
| LOG | 从设备请求消息输出 |
| CONFIG | 配置模块 |
| UNLOGALL | 取消所有消息输出 |
| SAVECONFIG | 保存配置到Flash |
| SETBASELINE | 设置双天线基线约束长度或倾角,杆壁补偿等参数,保存重启生效。 |
| SERIALCONFIG | 设置串口波特率 |
指令详解
REBOOT
复位重启,立即生效。等效于重新上电。
LOG
ENABLE/DISABLE: 全局打开/关闭数据输出
LOG ENABLE- 全局使能数据帧输出(默认)LOG DISABLE- 全局禁止数据帧输出
VERSION: 显示模块版本信息
LOG VERSION - 打印固件版本信息
COMCONFIG: 显示串口配置信息
LOG COMCONFIG - 打印串口及输出协议配置信息
INSCONFIG: 显示组合导航配置信息
LOG INSCONFIG - 显示组合导航配置信息,包括当前运动学模型、双天线参数以及 NMEA Talker ID。
MOTION_MODEL=CAR
ANTA=0.0,0.0,0.0
ANTB=0.0,1.0,0.0
NMEATID=GP
OKMSG: 配置数据帧输出及设置输出频率
格式:LOG <MSG> <TYPE> <PERIOD>
- MSG:GGA、RMC、SXT、HI81 等
- TYPE:ONTIME 表示定时输出
- PERIOD:输出帧周期,单位为 s,可选值:1(1 Hz)、0.5(2 Hz)、0.1(10 Hz)、0.02(50 Hz)、0.01(100 Hz)、0.005(200 Hz)
示例:
LOG HI81 ONTIME 0.01- 将当前串口的 HI81 数据包输出周期设置为 0.01 s(100 Hz)LOG SXT ONTIME 0.05- 将当前串口的 SXT 数据包输出周期设置为 0.05 s(20 Hz)LOG SXT ONTIME 0- 关闭当前串口的 SXT 数据包输出
CONFIG
用于配置模块工作参数,绝大多数命令执行后立即生效,且需要 SAVECONFIG 才能掉电保存。
配置组合导航工作模式
CONFIG MODEL CAR(出厂默认)将组合导航模型约束配置为车载模式。该模式下,解算引擎会使用 NHC 汽车完整性约束,可显著减小车载导航在隧道、地库等失锁场景下的累积误差。CONFIG MODEL SHIP- 将组合导航模型约束配置为船载模式,可减小船载导航在失锁情况下的累积误差。CONFIG MODEL PLANE- 将组合导航模型约束配置为飞行器模式。该模式下没有运动学约束,适用于飞行器工况。CONFIG MODEL BASE- 将模块设置为基准站模式。设置完成后,模块会在 60 s 内锁定自身位置(位置不再变化),常用于自建 RTK 基准站。配置基站模式时,天线必须处于良好的观测环境。
使用 LOG INSCONFIG 可以查看当前用户配置。
配置NTRIP差分账号信息
本设备支持部分厂家4G DTU终端或以太网接口实现网络RTK功能,可自动配置DTU终端或以太网接口并完成RTK差分数据接入。配置步骤如下:
- 将COM2口连接至DTU, COM2专用于连接DTU并利用4G DTU实现NTRIP RTK差分定义.
- 目前模块支持的DTU型号为: TAS-LTE-364(塔石4G 透传DTU设备),请确保型号正确,且4G流量卡已经插入且能正常工作。
- 配置差分账号信息:
CONFIG NTRIP <SERVER_IP> <PORT> <MNT_POINT> <USER_NAME> <PASSWD>其中:
SERVER_IP: CORS 服务器地址,可以为域名或IP地址。PORT: CORS 服务器端口MNT_POINT:挂载点: 如千寻一般为:AUTO, 中国移动一般为:RTCM33_GRCEUSER_NAME: CORS账号用户名PASSWD: CORS账号密码
例: 配置千寻CORS账号(示例账号qxxrli003 ,密码 123456)设置为:
示例:CONFIG NTRIP rtk.ntrip.qxwz.com 8002 AUTO qxxrli003 123456。此命令掉电保存,配置一次即可。
- 重新启动模块。
- 使用
LOG NTRIPCONFIG查看当前配置,DTU NAME显示为TAS-LTExxx说明模块和DTU的已经建立连接(模块会自动和DTU协商波特率, 如果 NAME为空说明和DTU链路连接失败), 注意NAME有值只是说明和DTU连接成功,并不代表DTU到网路的链路是否正常。
DTU NAME: Revision: TAS-LTE-C_C4002L242_
NTRIP SERVER: xxxxxxx.com:xxxx
NTRIP MOUNT: AUTO
NTRIP UNAME: xxxxxxx
NTRIP PASSWD: xxxxxxx- 如果RTK IP账号等信息正确,则约30s可进入RTK状态。
配置后需要保存配置,重启生效。
使能内置SD卡数据记录
部分产品内部配置有SD存储卡,可以用数据记录.每次上电时,会自动生成以上电UTC时间文件名的jog文件. 可以使用FTP(如FileZilla)工具查看内部存储卡上所有文件.
CONFIG FLOG COM1 1- 开启 COM1 数据记录功能,所有主串口 COM1 输出的数据都会复制并记录到 SD 卡 log 文件中。CONFIG FLOG COM1 0- 关闭 COM1 数据记录功能。
UNLOGALL
将所有定时输出消息输出频率设为0(不输出)
SAVECONFIG
将所有配置保存到Flash,一般配合REBOOT使用,即保存所有配置后重启生效。
SETBASELINE
此命令可以设置A天线相对IMU位置(杆壁补偿)和侧向天线(B天线)相对A天线的夹角,用于双天线安装设置。
设置A天线相对IMU位置(杆壁补偿): 杆壁补偿设置, 其中X,Y,Z为在IMU b系下,天线A相对于IMU的位置,单位为m.
SETBASELINE ANTA <X,Y,Z>
设置B(定向)天线位置: 类似A天线,X,Y,Z为在IMU b系下,天线A相对于IMU的位置,单位为m.
SETBASELINE ANTB <X,Y,Z>
例: 如需设置AB天线所确定的向量(从A到B)与载体前进方向(IMU Y轴正方向)的夹角为90°(顺时针为正, 如下图)。此时A天线相对IMU的位置为:X=-1.5,Y=-1.2,Z=-0.3, B天线相对IMU的位置为X=1.5,Y=-1.2,Z=-0.3, 则设置
SETBASELINE ANTA -1.5,-1.2,-0.3
SETBASELINE ANTB 1.5,-1.2,-0.3注意天线位置安装完毕后,需要重新上电或者重启模块。

- 设置天线参数后可使用
LOG INSCONFIG查看是否配置成功。- 如果不设置杆壁补偿,组合导航也可以工作, 但是正确有效的杆壁补偿可以大幅度提高组合导航系统在GNSS失锁后转弯时的位置精度.
SERIALCONFIG
设置串口波特率,支持 115200/460800/921600。
SERIALCONFIG <BAUD>
示例:将当前串口设置为 115200:SERIALCONFIG 115200。
输出数据协议(RS232/422, 以太网)
简介
本产品数据输出支持ASCII协议和二进制两类协议. ASCII消息使用NMEA协议格式, 二进制消息使用HiPNUC自定义二进制格式. NMEA格式遵循NMEA0183协议.
- 数据输出经纬度均以A天线为参考点
- B天线仅作为双天线定向使用,与定位功能无关
硬件接口说明
- RS232/RS422/RS485: 他们本质上都是串口, 发送接收方都需要遵循相同的波特率,默认出厂波特率115200
- 以太网: 部分产品配有以太网,产品内部支持TCP/IP协议栈, 并默认开启DHCP客户端,请将以太网接口接入到和PC同一网段的路由器LAN口上, 连接路由器成功后,会自动获得IP地址. 以TCP 客户端连接, 默认端口 5944.连接成功后,所有指令和行为和串口完全相同.
出厂默认输出
本产品默认输出二进制HI81协议,频率为100Hz.
NMEA消息(ASCII消息)
NMEA协议以'$'为起始字段,后面跟描述符,ID和数据段,数据段以'*****'结尾,结尾后补两位校验码最后加回车换行(0x0D, 0x0A)结束
NMEA 消息格式ASCII信息结构:
$--<消息类型标识>,<数据字段>,<数据字段>,……,<数据字段>*<校验>和><CR><LF>| 字段 | 字段说明 |
|---|---|
| $ | 起始符(ASCII 码字符0x24)。消息开始的标志。 |
| --- | 卫星系统类别,用于区分北斗、GPS、兼容输出信息类别。 BD-北斗 GP-GPS GN-兼容 |
| 消息类型标识 | 用于区别消息的种类和功能。固定宽度为3 位的英文字符,建议使用大写英文字母。 |
| , | 字段分隔符(ASCII 码字符0x2C)。分隔消息中多个字段。 |
| 数据字段 | 每个消息可包含多个被字段分隔符“,”分开的数据字段。除特殊说明外,数据字段中只允许使用可打印ASCII 码字符。数据传输时,只有通过分隔符“,”确定数据字段在一条消息中的位置,即通过对分隔符的计数来确定字段位置。 |
| * | 校验和定界符。为数据内容和校验和字段的分隔符。 |
| 校验和 | 校验和为消息中$和*之间(不含符号$和*)全部字符按字节异或的结果,前4 比特和后4 比特的16 进制数分别以ASCII 码表示(0~9,A~F),高位在前。 |
| <CR><LF> | 终止符(ASCII 码字符0x0D, 0x0A)。标志一个消息的结束。 |
NMEA消息列表
| NMEA协议 | 描述 | 数据来源 |
|---|---|---|
| GGA | 定位数据,RTC时间,服务质量,可见星 | 纯GNSS定位 |
| RMC | 最小推荐定位信息 | 纯GNSS定位 |
| VTG | 当前地面速度 | 纯GNSS定位 |
| SXT | 组合导航信息 | 组合导航 |
GGA
接收机的时间、位置和定位相关数据。注意:该语句输出为纯GNSS定位结果,不是组合导航结果。
$GPGGA,062134.00,2813.9908005,N,11252.6285300,E,1,28,0.5,83.684,M,-17.038,M,0.000,0000*60| ID | 示例 | 格式 | 描述 |
|---|---|---|---|
| 1 | $GPGGA | 帧头 | |
| 2 | 062134.00 | hhmmss.ss | UTC 时间 |
| 3 | 2813.9908005 | ddmm.mmmm | 纬度,28°13.9908005′,取值范围为0°~90°. 最前两位为°,后面为分 |
| 4 | N | - | 纬度方向N/S, N-北纬,S-南纬 |
| 5 | 11252.6285300 | ddmm.mmmm | 经度,112°52.6285300′,取值范围为0°~180°最前两位为°,后面为分 |
| 6 | E | - | 经度方向E/WE-东经,W-西经7 |
| 7 | 1 | x | 0:无效解;1:单点定位解;2:伪距差分;4:固定解;5:浮点或PPP解。 |
| 8 | 28 | xx | 参与定位解算卫星数 |
| 9 | 0.5 | x.x | HDOP:水平位置精度因子 |
| 10 | 83.684 | x.xxx | 海拔高 |
| 11 | M | U | 海拔高单位:m |
| 12 | -17.038 | x.x | 高程异常值:WGS84 大地高和海拔高的差距“-”表示海平面低于WGS84 椭球面 |
| 13 | M | U | 高程异常值单位:m |
| 14 | 0.000 | xxxx | 差分龄期,单位:s |
| 15 | 0000 | x.x | 差分站台ID |
| 16 | 60 | hh | 校验 |
关于GGA中的经纬度表示格式:
纬度:GPGGA数据中的纬度是以度和分的形式表示的,但不包括秒。格式为ddmm.mmmm,其中dd代表度数(两位数),mm.mmmm代表分钟(两位整数和最多四位小数)。纬度后面会跟随一个字符N(北纬)或S(南纬)来表示纬度的方向。 经度:经度的表示方式与纬度相似,但是度数是三位数的,格式为dddmm.mmmm,其中ddd代表度数(三位数),mm.mmmm代表分钟(两位整数和最多四位小数)。经度后面会跟随一个字符E(东经)或W(西经)来表示经度的方向。
转换为其他格式: 虽然GPGGA原生格式使用度和分,有时可能需要将其转换为度数(十进制)格式。转换公式如下:
纬度或经度(十进制)** = 度 + (分钟/60)
例如,将4807.038分钟转换为度(十进制): 48 + (07.038 / 60) = 48.1173度
RMC
最简导航传输数据。注意:该语句输出为纯GNSS定位结果,不是组合导航结果。
$GPRMC,020550.00,A,2813.9891299,N,11252.6278784,E,0.033,315.7,161117,0.0,E,A,V*4A| ID | 示例 | 格式 | 描述 |
|---|---|---|---|
| 1 | $GPRMC | 帧头 | 起始符+消息类型标识 |
| 2 | 020250.00 | hhmmss.ss | UTC 时间 |
| 3 | A | x.x | 定位状态:A-有效定位,V-无效定位 |
| 4 | 2813.9891299 | ddff.ff | 同GGA语句纬度格式 |
| 5 | N | - | 同GGA语句纬度格式 |
| 6 | 11252.6278784 | dddff.ff | 同GGA语句经度格式 |
| 7 | E | - | 同GGA语句经度格式 |
| 8 | 0.033 | x.x | 地面速度,单位:节(N) |
| 9 | 315.7 | x.x | 地面航向,以真北为参考基准,沿顺时针方向至航向的角度。(取值范围0°~360°) |
| 10 | 161117 | ddmmyy | 日期,日月年 |
| 11 | 0.0 | x.x | 磁偏角,单位:度 |
| 12 | E | - | 磁偏角方向 |
| 13 | A | - | 模式指示:N=数据无效;A=自主定位;E=估算;D=差分;M=手动输入 |
| 14 | V | - | S=Safe C=Caution U=Unsafe V=Not valid |
| 15 | 4A | hh | 校验 |
VTG
输出地面速度信息。
$GPVTG,134.395,T,134.395,M,0.019,N,0.035,K,A*33| ID | 示例 | 格式 | 描述 |
|---|---|---|---|
| 1 | $GPVTG | 帧头 | |
| 2 | 134.395 | xxx.xxx | 地面航向,以真北为参考基准,000~359.999° |
| 3 | T | U | 真北标示符 |
| 4 | 134.395 | xxx.xxx | 地面航向,以磁北为参考基准,000~359.999° |
| 5 | M | U | 磁北标示符 |
| 6 | 0.019 | xxx.xxx | 水平运动速度000~999,单位:节(海里/h) |
| 7 | N | U | 单位,N 表示海里每小时 |
| 8 | 0.035 | xxx.xxx | 水平运动速度 000~999,单位:km/h |
| 9 | K | U | 单位,K 表示千米每小时 |
| 10 | A | U | A-自主定位;D-差分;E-估算;M-手动输入;N-数据无效。 |
| 11 | 33 | hh | 校验 |
SXT
输出组合导航信息。
$GPSXT,20230310090529.59,116.45784882,39.90572287,158.2289,359.87,-4.99,359.87,0.001,171.25,1,0,15,15,0.056,-0.040,0.017,-0.001,-0.000,0.002,8,0*43| ID | 示例 | 格式 | 描述 |
|---|---|---|---|
| 1 | $GPSXT | 帧头 | |
| 2 | 20230310090529.59 | yyyy/mm/dd/hh/mm/ss.ss | UTC 时间 |
| 3 | 116.45784882 | ddd.dddddddd | 组合导航融合后的经度(deg) |
| 4 | 39.90572287 | ddd.dddddddd | 组合导航融合后的纬度(deg) |
| 5 | 158.2289 | ddd.dddd | 组合导航融合后的海拔高(m) |
| 6 | 359.87 | ddd.dd | 航向角(deg), 0-360° |
| 7 | -4.99 | ddd.dd | 俯仰角(deg), -90:90° |
| 8 | 359.87 | ddd.dd | 速度角(deg) |
| 9 | 0.001 | ddd.ddd | 水平速度(m/s) |
| 10 | 171.25 | ddd.dd | 横滚角(deg), -180:180° |
| 11 | 1 | 纯GNSS定位标志: 0:无效解;1:单点定位解;2:伪距差分;4:固定解;5:浮点或PPP解。 该标志只和A天线有关,和B天线无关。 | |
| 12 | 0 | 纯GNSS定向标志:4:固定解,航向角可用;其他值:航向未锁定,航向角不可用。 该标志和A,B天线有关,只有固定解(4)时,定向才有意义 | |
| 13 | 15 | A(定位)天线使用卫星数 | |
| 14 | 15 | B(定向)天线使用卫星数 | |
| 15 | 0.056 | X轴角速度(deg/s) | |
| 16 | -0.040 | Y轴角速度(deg/s) | |
| 17 | 0.017 | Z轴角速度(deg/s) | |
| 18 | -0.001 | ddd.ddd | 东向速度(m/s) |
| 19 | -0.000 | ddd.ddd | 北向速度 (m/s) |
| 20 | 0.002 | ddd.ddd | 天向速度 (m/s) |
| 21 | 8 | 组合导航解状态: 0: 解无效:无GNSS信息,无法初始化位置 1:对准中: 位置初始化成功,但需要一定速度来完成组合导航滤波器初始化,从而进入组合导航状态 3:组合导航中: 当前已进入组合导航状态 6:惯性递推中: 当前处于组合导航状态,但GNSS信号丢失,处于纯惯导状态(隧道或地库等) | |
| 22 | 天线检测状态 | 0:A天线正常,B天线正常, 1:A天线异常(未插入,馈线断路或短路),, B 天线正常 2: A天线正常,B天线异常 3. A天线异常,B天线异常 需要配合我司专用测量天线此位才有效 | |
| 23 | 08 | hh | 校验 |
二进制消息(超核HiPNUC)
该协议是超核定义的二进制协议,可以输出全部传感器信息,UART(RS-232/TTL)、USB、RS-485接口的产品支持该协议。默认串口格式为N-8-N-1(8位数据位,1位停止位,0位校验位)
数据帧格式
模块上电后,按照默认帧率(100Hz)输出帧数据,帧格式如下:
| 域名称 | 值 | 长度(字节) | 说明 |
|---|---|---|---|
| 帧头 | 0x5A | 1 | 0x5A |
| 帧类型 | 0xA5 | 1 | 0xA5 |
| 数据域长度 | 1-512 | 2 | 帧中数据域的长度,LSB(低字节在前) 长度表示数据域的长度(不包含帧头,帧类型,长度,CRC) |
| CRC校验 | - | 2 | 除CRC 字节外其余所有字段(帧头,帧类型,长度, 数据域)的16 位CRC 校验和。 LSB(低字节在前) |
| 数据域 | - | 1-512 | 一帧携带的数据,由若干个子数据包组成,数据包包含数据包标签和数据两部分。 标签决定了数据的类型及长度。 |
数据域内容
组合导航数据(HI81)
数据域共104字节。包含模块所有导航信息数据。
| 字节偏移 | 名称 | 数据类型 | 大小(Byte) | 单位 | 比例因子 | 说明 |
|---|---|---|---|---|---|---|
| 0 | tag | uint8_t | 1 | - | - | 数据包标签:0x81 |
| 1 | status | uint16_t | 2 | - | - | 状态字,保留 |
| 3 | ins_status | uint8_t | 1 | - | - | 组合导航解状态: 0: 解无效:无GNSS信息,无法初始化位置 1:对准中: 位置初始化成功,但需要一定速度来完成组合导航滤波器初始化,从而进入组合导航状态 3:组合导航中: 当前已进入组合导航状态 6:惯性递推中: 当前处于组合导航状态,但GNSS信号丢失,处于纯惯导状态(隧道或地库等) |
| 4 | gpst_wn | uint16_t | 2 | week | 1 | GPS时,周 |
| 6 | gpst_tow | uint32_t | 4 | s | 0.001 | GPS时,周内秒 |
| 10 | 保留 | uint16_t | 2 | - | - | 保留 |
| 12 | gyr_b | int16_t*3 | 6 | rad/s | 0.001 | IMU载体系角速度: X,Y,Z轴(出厂校准后) |
| 18 | acc_b | int16_t*3 | 6 | m/s^(2) | 0.0048828 | IMU载体系加速度: X,Y,Z轴(出厂校准后) |
| 24 | mag_b | int16_t*3 | 6 | uT | 0.030517 | IMU载体系磁强度: X,Y,Z轴(出厂校准后) |
| 30 | air_pressure | int16_t | 2 | Pa | 1 | 大气压+100000Pa : 如2000表示 102000Pa |
| 32 | od_speed | int16_t | 2 | m/s | 0.01 | 里程计速度(汽车ODBII里程计输出速度) |
| 34 | temperature | int8_t | 1 | °C | 1 | 系统平均温度 |
| 35 | utc_year | uint8_t | 1 | 年 | 1 | UTC时间: 年:,如 24 表示2024年 |
| 36 | utc_mouth | uint8_t | 1 | 月 | 1 | UTC时间: 月 |
| 37 | utc_day | uint8_t | 1 | 日 | 1 | UTC时间: 日 |
| 38 | utc_hour | uint8_t | 1 | 时 | 1 | UTC时间: 时 |
| 39 | utc_min | uint8_t | 1 | 分 | 1 | UTC时间: 分 |
| 40 | utc_sec | uint16_t | 2 | s | 0.001 | UTC时间: 秒 |
| 42 | roll | int16_t | 2 | deg | 0.01 | 组合导航 横滚角, 范围: -180:180 |
| 44 | pitch | int16_t | 2 | deg | 0.01 | 组合导航 俯仰角, 范围: -90:90 |
| 46 | yaw | uint16_t | 2 | deg | 0.01 | 组合导航 航向角, 范围: 0-360 北偏东为正 |
| 48 | quat | int16_t*4 | 8 | - | 0.0001 | 四元数: W,X,Y,Z |
| 56 | ins_lon | int32_t | 4 | deg | 1e-7 | 组合导航融合后的经度 |
| 60 | ins_lat | int32_t | 4 | deg | 1e-7 | 组合导航融合后的纬度 |
| 64 | ins_msl | int32_t | 4 | m | 0.001 | 组合导航融合后的高度 |
| 68 | pdop | uint8_t | 1 | - | 0.1 | GNSS定位位置精度因子 |
| 69 | hdop | uint8_t | 1 | - | 0.1 | GNSS定位水平精度因子 |
| 70 | solq_pos | uint8_t | 1 | - | - | 纯GNSS定位标志: 0:无效解;1:单点定位解;2:伪距差分;4:固定解;5:浮点或PPP解。 该标志只和A天线有关,和B天线无关。 |
| 71 | nv_pos | uint8_t | 1 | - | - | GNSS定位天线卫星数 |
| 72 | solq_heading | uint8_t | 1 | - | - | 纯GNSS定向标志:4:固定解, 航向角可用;其他值:航向未锁定,航向角不可用。 该标志和A,B天线有关,只有固定解定向才有意义 |
| 73 | nv_heading | uint8_t | 1 | - | - | GNSS定向天线卫星数 |
| 74 | diff_age | uint8_t | 1 | s | 1 | RTK差分龄期 |
| 75 | undulation | int16_t | 2 | m | 0.01 | 高程异常值 |
| 77 | ant_status | uint8_t | 1 | - | - | 天线检测标志 0:A天线正常,B天线正常, 1:A天线异常(未插入,馈线断路或短路), B 天线正常 2: A天线正常,B天线异常 3. A天线异常,B天线异常 需要配合我司专用测量天线此位才有效 |
| 78 | vel_enu | int16_t*3 | 6 | m/s | 0.01 | 导航系下东北天速度, 组合导航解算输出 |
| 84 | acc_enu | int16_t*3 | 6 | m/s^(2) | 0.0048828 | 导航系下东北天加速度, 组合导航解算输出 |
| 90 | reserved | int16_t | 2 | 保留 | ||
| 92 | reserved | int16_t | 2 | 保留 | ||
| 94 | reserved | int16_t | 2 | 保留 | ||
| 96 | reserved | int16_t | 2 | 保留 | ||
| 98 | reserved | - | 6 | - | - | 保留 |
CRC
16-bit CRC实现例程:
/*
currectCrc: previous crc value, set 0 if it's first section
src: source stream data
lengthInBytes: length
*/
static void crc16_update(uint16_t *currectCrc, const uint8_t *src, uint32_t lengthInBytes)
{
uint32_t crc = *currectCrc;
uint32_t j;
for (j=0; j < lengthInBytes; ++j)
{
uint32_t i;
uint32_t byte = src[j];
crc ^= byte << 8;
for (i = 0; i < 8; ++i)
{
uint32_t temp = crc << 1;
if (crc & 0x8000)
{
temp ^= 0x1021;
}
crc = temp;
}
}
*currectCrc = crc;
}数据协议(CAN接口 - SAE J1939)
CAN通讯协议可支持 CANopen协议和SAE J1939协议。模块默认支持SAE J1939协议,如需CANopen协议版本, 请联系技术支持。CAN通讯波特率默认是500Kbps。
SAE J1939协议
J1939协议使用29位的扩展帧ID,其中优先级由3位组成,保留了1位,由8位的数据页面(PGN)定义其功能,24位中的前8位为源地址(SA),中间8位是具体的PGN,用于描述数据的功能或内容,而最后8位是目的地址(DA)或是进一步细化的PGN。这种结构支持优先级消息传输,大范围的参数组识别以及网络中的源和目的地址识别。

| PGN | 描述 |
|---|---|
| 通讯模式 | 广播通信 |
| 默认传输时间间隔 | 100ms |
| 数据长度 | 每个PGN8字节 |
| PF(PDU format) | 0xFF |
| PS(PDU specific) | PF > 0xF0时为拓展PGN地址(GE), 否则为目的地址(DA) |
| 优先级 | 3 |
| 默认J1939地址 | 0x08 |
| 数据格式 | 所有帧中数据格式采用LSB(低位在前,小端存储),无特殊说明均为有符号整型 |
PGN消息列表
PGN65296(FF10) 经纬度
CANID=0x0CFF1008
| SPN 名称 | SPN 位置(byte) | 说明 |
|---|---|---|
| 纬度 | 0-3 | 单位:deg ,比例因子: 0.0000001 |
| 经度 | 4-7 | 单位:deg ,比例因子: 0.0000001 |
PGN65300(FF14) 高度及差分龄期
CANID=0x0CFF1408
| SPN 名称 | SPN 位置(byte) | 说明 |
|---|---|---|
| 海拔高 | 0-3 | 单位:m , 比例因子:0.01 |
| UNDULATION | 4-5 | 单位:m , 比例因子:0.01 |
| 差分龄期 | 6-7 | 单位:s, 比例因子:0.01 |
PGN65304(FF18) 定位状态与卫星数
CANID=0x0CFF1808
| SPN 名称 | SPN 位置(byte) | 说明 |
|---|---|---|
| 纯GNSS定位质量 | 0 | 纯GNSS定位标志: 0:无效解;1:单点定位解;2:伪距差分;4:固定解;5:浮点或PPP解。 |
| 纯GNSS定向质量 | 1 | 纯GNSS定向标志: 0:无效解;4:固定解(只有固定解定向才有意义,其余均表示定向不成功) |
| 定位卫星个数 | 2 | 定位卫星个数 |
| 定向卫星个数 | 3 | 定向卫星个数 |
| 组合导航定位状态 | 4 | 组合导航解状态: 1:对准, 3:导航 |
| 保留 | 5-7 | - |
PGN65318(FF26) 速度信息
CANID=0x0CFF2608
| SPN 名称 | SPN 位置(byte) | 说明 |
|---|---|---|
| 东向速度 | 0-1 | 单位m/s, 比例因子:0.01 |
| 北向速度 | 2-3 | 单位m/s, 比例因子:0.01 |
| 天向速度 | 4-5 | 单位m/s, 比例因子:0.01 |
| 地面速度(东,北方向合速度模值) | 6-7 | 单位m/s, 比例因子:0.01 |
PGN65327(FF2F) 时间信息
CANID=0x0CFF2F08
| SPN 名称 | SPN 位置(byte) | 说明 |
|---|---|---|
| UTC年 | 0 | 20代表2020,以此类推 |
| UTC月 | 1 | |
| UTC日 | 2 | |
| UTC时 | 3 | |
| UTC分 | 4 | |
| UTC秒 | 5 | |
| UTC毫秒 | 6-7 | 单位:ms, 比例因子:1 |
PGN65332(FF34) 加速度
CANID=0x0CFF3408
| SPN 名称 | SPN 位置(byte) | 说明 |
|---|---|---|
| 加速度X | 0-1 | 单位G(1G=1重力加速度), 比例因子:0.00048828 |
| 加速度Y | 2-3 | 单位G(1G=1重力加速度), 比例因子:0.00048828 |
| 加速度Z | 4-5 | 单位G(1G=1重力加速度), 比例因子:0.00048828 |
| 保留 | 6-7 | - |
PGN65335(FF37) 角速度
CANID=0x0CFF3708
| SPN 名称 | SPN 位置(byte) | 说明 |
|---|---|---|
| 角速度X | 0-1 | 单位deg/s, 比例因子:0.061035 |
| 角速度Y | 2-3 | 单位deg/s, 比例因子:0.061035 |
| 角速度Z | 4-5 | 单位deg/s, 比例因子:0.061035 |
| 保留 | 6-7 |
PGN65341(FF3D) 组合导航姿态信息(俯仰横滚)
CANID=0x0CFF3D08
| SPN 名称 | SPN 位置(byte) | 说明 |
|---|---|---|
| 横滚角(Roll) | 0-3 | 单位°, 比例因子:0.001 |
| 俯仰角(Pitch) | 4-7 | 单位°,比例因子:0.001 |
PGN65345(FF41) 组合导航姿态信息(航向)
CANID=0x0CFF4108
| SPN 名称 | SPN 位置(byte) | 说明 |
|---|---|---|
| 航向角(Yaw) | 0-3 | 0-360, 单位°, 比例因子:0.001 |
| 保留 | 4-7 |
PGN65347(FF43) 温度与大气压
CANID=0x0CFF4308
| SPN 名称 | SPN 位置(byte) | 说明 |
|---|---|---|
| 温度 | 0-1 | 单位:℃, 比例因子:0.01 |
| 保留 | 2-3 | |
| 大气压 | 4-7 | 单位:pa,比例因子:0.01 |
配置模块
配置格式
主机发送:ADDR+ CMD + STATUS + VAL, 从机响应: ADDR+ CMD + STATUS + VAL
| 字段 | 大小(Byte) | 说明 |
|---|---|---|
| ADDR | 2 | 寄存器地址 |
| CMD | 1 | 0x06:写入, 0x03:读取 |
| STATUS | 1 | 保留 |
| VAL | 4 | 写入或读取的值 |
常用指令示例
| 29'b CAN拓展帧地址 | CAN 数据 | 描述 | 说明 |
|---|---|---|---|
| 0x0CEF08xx | 10 01 06 00 [VAL] | VAL: 4字节(小端格式) | PGN:FF10(经纬度) 发送间隔,单位ms, 范围:10-1000 |
| 0x0CEF08xx | 14 01 06 00 [VAL] | VAL: 4字节 | PGN:FF14(高度及差分龄期) 发送间隔,单位ms, 范围:10-1000 |
| 0x0CEF08xx | 18 01 06 00 [VAL] | VAL: 4字节 | PGN:FF18(定位状态与卫星数) 发送间隔,单位ms, 范围:10-1000 |
| 0x0CEF08xx | 2F 01 06 00 [VAL] | VAL: 4字节 | PGN:FF2F(时间信息) 发送间隔,单位ms, 范围:10-1000 |
| 0x0CEF08xx | 34 01 06 00 [VAL] | VAL: 4字节 | PGN:FF34(加速度) 发送间隔,单位ms, 范围:10-1000 |
| 0x0CEF08xx | 37 01 06 00 [VAL] | VAL: 4字节 | PGN:FF37(角速度) 发送间隔,单位ms, 范围:10-1000 |
| 0x0CEF08xx | 3D 01 06 00 [VAL] | VAL: 4字节 | PGN:FF3D(俯仰横滚) 发送间隔,单位ms, 范围:10-1000 |
| 0x0CEF08xx | 41 01 06 00 [VAL] | VAL: 4字节 | PGN:FF41(航向) 发送间隔,单位ms, 范围:10-1000 |
| 0x0CEF08xx | 43 01 06 00 [VAL] | VAL: 4字节 | PGN:FF43(温度气压) 发送间隔,单位ms, 范围:10-1000 |
| 0x0CEF08xx | 9A 00 06 00 [VAL] | VAL: 4字节 | 配置波特率(保存设置,复位生效): 0:1000K, 1:800K, 2:500K, 3:250K, 4:125K |
| 0x0CEF08xx | 9C 00 06 00 [VAL] | VAL: 4字节 | J1939协议设备ID,可选值: 1-64(默认:8)(慎重,更改ID后所有J1939帧ID段目的地址也需要变更) |
| 0x0CEF08xx | 00 00 06 00 00 00 00 00 | - | 保存所有配置参数到Flash |
| 0x0CEF08xx | 00 00 06 00 01 00 00 00 | - | 恢复出厂设置 |
| 0x0CEF08xx | 00 00 06 00 FF 00 00 00 | - | 复位 |
地址域中xx: J1939协议中的源地址,可为任意字节。 数据域中xx: 任意字节
例: ID=0x0CEF0855, DATA = 37 01 06 00 64 00 00 00 : 将PGN:FF37设置为100ms周期(10Hz)
固件升级
本产品支持固件升级,请使用CHCenter上位机软件按下图步骤进行固件升级,固件升级文件(.hex)请向我司技术支持人员索取。

技术支持
新产品与资料信息可以通过网站以及公众号获得 微信:


