gy-521/README.md

1.5 KiB

gy-521 Driver

The gy-521 module is usally interfaced with via TWI/I2C. The actual chip that is used in the module is the mpu6050 ic.

This driver doesn't make any assumptions about the platform it will run on beyond that it supports "stdlib.h" and "inttypes.h".

The interface handles all the register and bitshift operations in the the backgorund. The module uses getters and setters to abstract the actual data. This prevents the end user from trying to directly use the structures data when it is volatile and may be setup to update in a ISR.

PINs

  • VCC: 3.3v
  • GND: ground or 0v
  • SCL: TWI clock
  • SDA: TWI data
  • XDA:
  • XCL:
  • AD0: changes the TWI address when pulled high.
  • INT: interrupt pin

Running and building the project

The project uses CMake along with cmocka for unit testing.

# change into the build dir
cd ./build

# generate the make files and make everything.
cmake ../ -DUNIT_TESTING=ON; make all;

# Run the tests
ctest

RoadMap

  • add in functions for interrupt driven updates.
  • add functions for configuration of module.
  • add functions to save configurations in memory.
  • add functions to load saved configs

###Mocking the TWI/I2C

The twi needs to be mocked or faked correctly to make the testing of the functions doable.

The best way I can find to handle this is with a buffer of twi data that simulate registers that the program reads/writes to.

This is handled by using function pointers for the tx and rx of i2c/twi data.