![]() ![]() This functionality of hardware controlled communication is often refered as DMA, or "Diret Memory Access". This hardware controller can handle the I2C communication all by itself even the complicated "Repeated Start" process during slave read communication. The chip ATSAM3X used in the Arduino Due came with a hardware I2C controller (they call it the two wire interface, or TWI for legal reasons). ![]() To resolve the issue, the ATMEL MCU architecture come to the rescue. ![]() Further more, the Wire library on Arduino Due is somewhat unstable, and will sometimes stuck without returning if the I2C bus hangs at the last transmission bit. This is a very long time for higher-performance chip such as ATSAM3X and is often critical for time-sensitive application such as robotic control. However, the communication can take up to 1ms for a MPU9250 simple sensor read. The behavior is adapted for almost all MPU IMU driver for Arduino I can find online. The default Wire library in Arduino always reads and writes to the I2C bus in a blocking fashion. This project reduces the communication time of a publicly available MPU9250 MPU IMU library from 1ms to 23 us. Non-blocking MPU9250 Arduino Due DMP IMU Driver ![]()
0 Comments
Leave a Reply. |