I am trying to get a BNO055 running using the UART interface and I am getting a lot of BUS_OVER_RUN_ERROR when requesting data. I have the device set up in non-fusion mode and am requesting one set of data every cycle. I am only interested in gyro and accelerometer data but since the compass measurements are in between the two I read 18 bytes and discard the compass data.
Really I would like a mode where I can set the device up to send the data on the UART when it is ready instead of requesting it asychronously to the processes on the BNO055.
Is it possible to get access to the internals of the cpu in the BNO055 with some documentation so I could write my own program which does what I have described above? The easiest, of course, would be to get your current code so I could modify it.
The installed software version is 3.11.
Do you mean that you want to get sensor data with UART interrupt reminder? BNO055 send new data to BNO055 UART buffer and wait HOST to read instead of HOST polling by time or ODR.
Am I correct to know what you mean?
Yes. The host polling is a waste of time, I send the same request every time and somerimes - quite regularly - the BNO055 cpu is busy and does not read my request in time leading to overruns. I ran a test last night where I read the sensor as fast as I could - which was approximately 166 Hz - I had over 1100 retries where I had to retry 4 or more times and once I had to retry 6 times out of approximately 9 million requests - retries of less than 4 times are very frequent.
Could you only use UART? I am not sure whether Uart interrupt feature can be achieved as you expected.
I will talk to our internal experts and reply you.
Yes. Our only connection possibility is UART. Thanks for looking into this.