我这有一个协议说明,虽然不是小黑块的,但是协议兼容
陀螺仪采用CANBus接口反馈数据,为1000Hz,波特率为1Mbit 通信协议如下: 1. 指示灯说明 当检测到陀螺仪CANBus离线时,陀螺仪红灯闪烁 当正常通信时,蓝灯闪烁 校准期间,红灯常亮,校准完成,陀螺仪正常工作。(校准期间,请务必静置传感器) 2. 校准协议 校准时候陀螺仪应静止,等待红色指示灯熄灭,蓝色指示灯闪烁表示校准完成。 主机发送如下数据进行校准: ID | | ID类型 | | 长度 | | 字节0内容 | | 字节1内容 | | 字节2内容 | | 字节3内容 | | 字节4内容 | | 字节5内容 | | 字节6内容 | | 字节7内容 | |
接收到以上消息,陀螺仪会校准归零,请务必静置。 示例代码: TxMessage.StdId = 0x404;//send to gyro controll board TxMessage.IDE = CAN_ID_STD; TxMessage.RTR = CAN_RTR_DATA; TxMessage.DLC = 0x08; TxMessage.TransmitGlobalTime = DISABLE; can_tx_data[0] = 0x00; can_tx_data[1] = 0x01; can_tx_data[2] = 0x02; can_tx_data[3] = 0x03; can_tx_data[4] = 0x04; can_tx_data[5] = 0x05; can_tx_data[6] = 0x06; can_tx_data[7]= 0x07; 陀螺仪反馈消息 ID | | ID类型 | | 长度 | | 字节0内容 | | 字节1内容 | | 字节2内容 | | 字节3内容 | |
接受数据拼接成一个32位有符号数,乘以校准系数即为角度。 ZGyroModuleAngle=(float)(0.01)*((int32_t)(can_rx_data[0]<<24)|(int32_t)(can_rx_data[1]<<16) | (int32_t)(can_rx_data[2]<<8) | (int32_t)(can_rx_data[3]));
|