微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BNO055 SYS_STATUS 读取 0x01,而 SYS_ERR 读取 0

如何解决BNO055 SYS_STATUS 读取 0x01,而 SYS_ERR 读取 0

尝试从 BNO055 传感器读取数据,但不断获取零。我正在使用博世提供的驱动程序,这些驱动程序适用于 STM32L476。我正在使用 Adafruit 开发的非现成 BNO055 板的定制板。我能够获得加速度计和陀螺仪的读数,但是在对电路板进行电源循环并加载新代码后,我又回到了读数零的状态。获取数据然后不获取数据(读取 0)发生了几次,所以我试图了解哪个设置使 BNO055 吐出 0。

现在我一直在检查 SYS_STATUS 寄存器 (0x39) 如果它读取 0x01(系统错误)我读取寄存器 SYS_ERR (0x3A) 以查看失败的内容。我从 SYS_ERR(寄存器映射超出范围)中读取 5,然后通过将第二位设置为 1 通过 SYS_TRIGGER 寄存器(0x3F)进行复位。复位后 SYS_ERR 寄存器读取 0,这没有错误,但 SYS_STATUS 仍然读取 0x01,无论多少次我确实重置了我得到 SYS_STATUS = 0x01。有没有人知道如何彻底重置系统使SYS_STATUS返回0?

    success = bno055_read_register(BNO055_SYS_STAT_ADDR,&err_bmo055_buf[1],BNO055_GEN_READ_WRITE_LENGTH);

if ((err_bmo055_buf[1]==0x01) || (err_bmo055_buf[0]!=0x0)){
    success = bno055_read_register(BNO055_SYS_ERR_ADDR,&err_bmo055_buf[0],BNO055_GEN_READ_WRITE_LENGTH);
    while (err_bmo055_buf[1]==0x01){
        /*Software system reset */
        success = bno055_read_register(BNO055_SYS_TRIGGER_ADDR,&bno055_sys_trig,BNO055_GEN_READ_WRITE_LENGTH);
        write_buf = (bno055_sys_trig | BNO055_SYS_RST_MSK);
        bno055_set_operation_mode(BNO055_OPERATION_MODE_CONfig);//not sure if I need this but setting it to write to the register
        success = bno055_write_register(BNO055_SYS_TRIGGER_ADDR,&write_buf,BNO055_GEN_READ_WRITE_LENGTH);
        /*------------------------------------------------------*/
        HAL_Delay(650); //just in case we need a little time to reset 
        I2C_routine_BNO055(); //assign functions
        comres = bno055_init(&bno055); //checks ID versions

        comres += bno055_set_power_mode(BNO055_POWER_MODE_norMAL); //set power mode
        bno055_set_operation_mode(BNO055_OPERATION_MODE_AMG);//set operation mode
        success = bno055_read_register(BNO055_SYS_STAT_ADDR,BNO055_GEN_READ_WRITE_LENGTH);
        success = bno055_read_register(BNO055_SYS_ERR_ADDR,BNO055_GEN_READ_WRITE_LENGTH);
        count = count + 1;
    }
}

我要向社区提出的更大问题是,为什么我不断从 BNO055 获得零?我很幸运地从加速度计和陀螺仪中获取了值,但没有从磁力计中获取值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。