根据官方文档:
修改波特率
1.解锁:FF AA 69 88 B5
1.1延时200ms
2.修改波特率:FF AA 04 06 00
2.1切换已修改的波特率然后重新发送解锁和保存指令
2.2解锁:FF AA 69 88 B5
2.3延时200ms
4.保存: FF AA 00 00 00
XY轴角度参考
角度参考是以传感器当前的实际位置,让xy轴的角度归零,做一个相对归零操作。
指令操作流程
1.解锁:FF AA 69 88 B5
1.1延时200ms
2.校准:FF AA 01 08 00
2.1延时3秒(实测200ms也可)
3.保存: FF AA 00 00 00
Z轴置零
注:z轴归零需要在六轴算法的前提下,算法切换可以在上位机配置界面修改,九轴设备下的九轴算法是绝对角度,不能归零。指令操作流程:
1.解锁:FF AA 69 88 B5
1.1延时200ms
2.校准:FF AA 01 04 00
2.1延时3秒(实测200ms也可)
3.保存: FF AA 00 00 00
uint8_t JY61P_ULOCK_CMD[5] = {0xFF, 0xAA, 0x69, 0x88, 0xB5}; //解锁
uint8_t JY61P_BAUD_CMD [5] = {0xFF, 0xAA, 0x04, 0x06, 0x00}; //波特率修改为115200
uint8_t JY61P_SAVE_CMD [5] = {0xFF, 0xAA, 0x00, 0x00, 0x00}; //保存
uint8_t JY61P_XY0_CMD [5] = {0xFF, 0xAA, 0x01, 0x08, 0x00}; //XY角度归零
uint8_t JY61P_Z0_CMD [5] = {0xFF, 0xAA, 0x01, 0x04, 0x00}; //Z轴归零
/* 延时函数 */
void delay_ms(uint32_t ms)
{
uint32_t i, j;
for (i = ms; i > 0; i--)
{
for (j = 800; j > 0; j--); // 这个值可能需要调整
}
}
/* IMU波特率修改函数 */
void JY61P_BAUD(void)
{
usart1_send_buff(JY61P_ULOCK_CMD, sizeof(JY61P_ULOCK_CMD)); //解锁
delay_ms(200);//延时200ms
usart1_send_buff(JY61P_BAUD_CMD, sizeof(JY61P_BAUD_CMD)); //修改波特率为115200
delay_ms(200);
usart1_send_buff(JY61P_SAVE_CMD, sizeof(JY61P_SAVE_CMD)); //保存
delay_ms(200);
}
/* IMU归零函数 */
void JY61P_START(void)
{
usart1_send_buff(JY61P_ULOCK_CMD, sizeof(JY61P_ULOCK_CMD)); //解锁
delay_ms(200);//延时200ms
usart1_send_buff(JY61P_XY0_CMD, sizeof(JY61P_XY0_CMD)); //XY轴归零
delay_ms(200);
usart1_send_buff(JY61P_Z0_CMD, sizeof(JY61P_Z0_CMD)); //Z轴归零
delay_ms(200);
usart1_send_buff(JY61P_SAVE_CMD, sizeof(JY61P_SAVE_CMD)); //保存
delay_ms(200);
}
实现效果:单片机上电初始化后XYZ数值为0