-
Notifications
You must be signed in to change notification settings - Fork 13.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Invensense IMU drivers accumulated minor improvements and consistency cleanup #15299
Conversation
0d14b08
to
d2d56d6
Compare
6ed2036
to
b9cf44d
Compare
ca4db38
to
f18ca94
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(some) ICM devices, the 42688 included. can change the data endian by setting INTF_CONFIG0:SENSOR_DATA_ENDIAN and INTF_CONFIG0:FIFO_COUNT_ENDIAN bits. so data reading can be highly simplified by setting that bit during initialize.
this should reduce 6 "data flips" for every data sample from the IMU, which can be a lot...
that feature tested on ICM-42605. but there are probably other ICM that has that feature too, like the 42609
f18ca94
to
a8db169
Compare
- perform reset as per the datasheet (disable I2C immediately, set power mode, wait for appropriate time, etc) - track consecutive errors and trigger full reset if necessary - remove interrupt perf counter and instead only count misses - minor style changes to stay in sync with the other Invensense drivers - read FIFO count along with full transfer as a sanity check
- update copyright year - perform reset as per the datasheet (disable I2C immediately, set power mode, wait for appropriate time, etc) - only track consecutive errors (not total) to trigger full reset if necessary - remove interrupt perf counter and instead only count misses - minor style changes to stay in sync with the other Invensense drivers
- perform reset as per the datasheet (disable I2C immediately, set power mode, wait for appropriate time, etc) - only track consecutive errors (not total) to trigger full reset if necessary - remove interrupt perf counter and instead only count misses - minor style changes to stay in sync with the other Invensense drivers
- perform reset as per the datasheet (disable I2C immediately, set power mode, wait for appropriate time, etc) - remove interrupt perf counter and instead only count misses - minor style changes to stay in sync with the other Invensense drivers
- remove interrupt perf counter and instead only count misses - minor style changes to stay in sync with the other Invensense drivers
- perform reset as per the datasheet (wakeup accel/gyro and wait before proceeding) - add register bank selection (not yet used) - track consecutive errors to trigger full reset if necessary - remove interrupt perf counter and instead only count misses - minor style changes to stay in sync with the other Invensense drivers
- perform reset as per the datasheet (wakeup accel/gyro and wait before proceeding) - add register bank selection (not yet used) - track consecutive errors to trigger full reset if necessary - remove interrupt perf counter and instead only count misses - minor style changes to stay in sync with the other Invensense drivers
- perform reset as per the datasheet (disable I2C immediately, set power mode, wait for appropriate time, etc) - only track consecutive errors (not total) to trigger full reset if necessary - remove interrupt perf counter and instead only count misses - minor style changes to stay in sync with the other Invensense drivers
- perform reset as per the datasheet (disable I2C immediately, set power mode, wait for appropriate time, etc) - only track consecutive errors (not total) to trigger full reset if necessary - remove interrupt perf counter and instead only count misses - minor style changes to stay in sync with the other Invensense drivers
- perform reset as per the datasheet (disable I2C immediately, set power mode, wait for appropriate time, etc) - remove interrupt perf counter and instead only count misses - minor style changes to stay in sync with the other Invensense drivers
a8db169
to
3dd4d52
Compare
May I ask that is there any existing driver which can be applied to icm42605? |
Yes, I successfully use icm42688p driver for icm42605 by just changing |
Thank you! |
I'll add a dedicated icm42605 driver. I'm currently updating the icm42688p to make use of its additional features (18/19 bit output, clock input, etc). At this point I'd still rather err on the side of code duplication to ensure we aren't compromising on these drivers. |
Nothing too exciting here, but here are the general changes across most of the new(-ish) Invensense IMU drivers.
Testing
icm40609d(nearly identical to icm42688p still)