# How to understand device's speed? (I2C)

Hello,

I am using Arduino Uno and MCP4725 to generate a sine wave.

As far as I understand, with the sinewave example:
The TWI bit rate register of ATmega328 is set to 12.
MCP4725 is working in the standard mode(100kbps) that needs 4 bytes to send one data.
The program reads from a lookup table(8 bits, 256 points by default).
And I get a output signal with 26 Hz.

But,
frequency * data points per period* bits required
26 * 256 * 32 = 212992

so there are 212992 bits transmitted per second?

How should I understand this number? Could anyone help?

YOu can check if it works at higher speed - http://forum.arduino.cc/index.php?topic=197360.0 -

But,
frequency * data points per period* bits required
26 * 256 * 32 = 212992

so there are 212992 bits transmitted per second?

you need to send those for 26Hz. at 100kbps this will not work by a factor 2 so you can try to increase the speed (see above) or skip samples (e.g. not 256 per period but only 64)

26 * 64 * 32 = 53248 bits which could be doable (@400Khz)

The MCP4725 can use I2C clock rates up to 3.4MHz so the I2C bus speed limitation comes definitely fro the Uno, which can do at most 400KHz.

If that should not work I’d recommend getting a Teensy 3.0 or Teensy 3.1 board. These are fully Arduno compatible and can do I2C up to 2.8MHz. That should take care of it.