Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    Bosch User Guide Example

    Bosch User Guide Example

    New Poster


    I'm new to the BMA456 accelerometer and would like to better understand this example provided on the Bosch website. The website refers to BoschSensortec / BMA456-Sensor-API in GitHub from where source and header files can be downloaded as I have done. The same page includes a User Guide with the following recommended Initializing Sequence:

    uint16_t main(void) {
    uint16_t rslt = BMA4_OK;
    uint8_t init_seq_status = 0;

    /* Declare an instance of the BMA456 device */
    struct bma4_dev dev;

    /* Modify the parameters */
    dev.dev_addr = BMA4_I2C_ADDR_PRIMARY;
    dev.interface = BMA4_I2C_INTERFACE;
    dev.bus_read = USER_i2c_read;
    dev.bus_write = USER_i2c_write;
    dev.delay = USER_delay_ms;
    dev.read_write_len = 8;
    dev.resolution = 12;
    dev.feature_len = BMA456_FEATURE_SIZE;

    /* a. Reading the chip id. */
    rslt |= bma456_init(&dev);

    /* b. Performing initialization sequence.
    c. Checking the correct status of the initialization sequence.
    rslt |= bma456_write_config_file(&dev);

    return rslt;

    struct bma4_dev is defined in one of the associated header files, bma4_defs.h, but the struct in that file has no member named 'dev_addr'. And there are other similar examples where the examples in the User Guide don't match the provided files.

    How is this User Guide intended to be used ?

    5 REPLIES 5

    Community Moderator
    Community Moderator

    Hello TMunb,

    You could follow example code to use driver code.

    Hello BSTRobin,

    thanks for the quick reply.

    Should I therefore not be using the example that I referred to in my previous post ?  And if so why not ?  It provides what I assume are all the necessary source and header files, but seems to have a problem with matching struct members.  Is there a "fix" that can be applied either to the User Guide example code or in the files that would allow me to carry on with this path ?  I assume I cannot be the only person who has seen this mismatch - has it been reported before meaning is it a known issue ?


    Community Moderator
    Community Moderator

    Hello TMunb,

    Refer to the actual code "", it runs well.

    * @brief Function to select the interface between SPI and I2C.
    int8_t bma4_interface_selection(struct bma4_dev *bma)
    int8_t rslt = BMA4_OK;

    if (bma != NULL)
    /* Select the interface for execution
    * For I2C : BMA4_I2C_INTF
    * For SPI : BMA4_SPI_INTF
    bma->intf = BMA4_I2C_INTF;

    /* Bus configuration : I2C */
    if (bma->intf == BMA4_I2C_INTF)
    printf("I2C Interface \n");

    /* To initialize the user I2C function */
    dev_addr = BMA4_I2C_ADDR_PRIMARY;
    bma->bus_read = user_i2c_read;
    bma->bus_write = user_i2c_write;




    hi BSTRobin,

    so are you saying we combine the the original source and header files, as per the instructions below,

    "Sensor API integration

    Inside your project, include files bma4_defs.h, bma4.h, bma4.c, bma456.c and bma456.h."

    but instead of using the sample codes from that User Guide page we instead use bma4_common.c ?