Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 Floating/Inconsitent Reading When Device is Still

    BNO055 Floating/Inconsitent Reading When Device is Still

    MartinShi
    New Poster

    Hi, 

    I m writing drivers with BNO055 for embedded Linux. In the initialization state I loaded all the hex initialization configuration to the sensor. And in my application when I read from it I have floating readings when I leave the device still, no rotation or moving the device at all. Is there anything wrong with my driver?

    User Space Software Reading Not ConsistentUser Space Software Reading Not Consistent

    I also have my reading code

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <sys/ioctl.h>

    #define IOCTL_MODULE "/dev/app_ioctl"

    #define IMU_SENSOR_DATA _IOR('a',12,int32_t*)

    struct bmi_sensor_data {
    int16_t accel_x;
    int16_t accel_y;
    int16_t accel_z;

    int16_t gyro_x;
    int16_t gyro_y;
    int16_t gyro_z;
    };

    int main()
    {
    int ret = 0;
    struct bmi_sensor_data sensor_data = {0};

    int fd = open(IOCTL_MODULE, O_RDWR);
    if(fd < 0) {
    printf("zxj ============open %s fail!\n", IOCTL_MODULE);
    return -1;
    }

    while(1) {
    ret = ioctl(fd, IMU_SENSOR_DATA, &sensor_data);
    printf("App Acc_Raw_X : %d Acc_Raw_Y : %d Acc_Raw_Z : %d \n",
    sensor_data.accel_x,
    sensor_data.accel_y,
    sensor_data.accel_z);
    printf("Gyr_Raw_X : %d Gyr_Raw_Y : %d Gyr_Raw_Z : %d \n",
    sensor_data.gyro_x,
    sensor_data.gyro_y,
    sensor_data.gyro_z);
    }

    close(fd);

    return 0;
    }

     

    1 REPLY 1

    BSTRobin
    Community Moderator
    Community Moderator

    Hi MartinShi,

    Please refer to the attached code on STM32 and test results. Use the sensor API on github(https://github.com/boschsensortec/BNO055_driver) and place BNO055 horizontally.

    Test result.png

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist