We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello all,
I am working on a navigation project that requires reading IMU heading data as an output. I have chosen the STM32F401VCTx chip for my custom board and am interfacing with an Adafruit IMU. Communication is through I2C, which I have some experience with but not a ton. The slave address for the BNO055 on the IMU is 0x28, which when bit shifted is 0x50. I am using the HAL functions provided by uVision for I2C transactions, namely the Mem_Read and Mem_Write functions for peripherals. I have configured the device to operate in "compass mode" and output a heading angle in radians, and store it in the bytes EUL_Heading_MSB and EUL_Heading_LSB. I want to see the heading bytes.
Code:
uint8_t COMPASS_MODE = 0x09; //Compass mode value 1001 uint8_t UNIT_SEL = 0x04; //Radians value 0100 uint8_t EUL_Heading_MSB[1] = {0x00}; //initialize MSB of output data uint8_t EUL_Heading_LSB[1] = {0x00}; //initialize LSB of output data HAL_I2C_Mem_Write(&hi2c1, 0x50, 0x3D, 1, &COMPASS_MODE , 1, 50); //Setting OPR_MODE register to 1001 to initialize compass mode HAL_I2C_Mem_Write(&hi2c1, 0x50, 0x3B, 1, &UNIT_SEL, 1, 50); //Setting UNIT_SEL to 0100 for radians HAL_I2C_Mem_Read(&hi2c1, 0x50, 0x1B, 1, EUL_Heading_MSB, 1, 50); //Read EUL_Heading_MSB data from 0x1B register HAL_I2C_Mem_Read(&hi2c1, 0x50, 0x1A, 1, EUL_Heading_LSB, 1, 50); //Read EUL_Heading_LSB data from 0x1A register
I am not seeing a readable output in uVision. I know to use Watch windows to view output, but I am not sure if it is working correctly. Here is a pic of my watch window:
If anyone has worked on a similar project, or knows of a possible solution/alternative please help out if possible.
Thanks in advance :)