Modulos I2C

View on GitHub
inicio volver

Descripción de los módulos

Los modulos con los que cuenta la matrix creator y que presentan comunicacion I2C son los siguientes:

Descripcion de las funciones disponibles

I2CreadByte

uint8_t I2CreadByte(uint8_t address, uint8_t subaddress);
		  

I2CreadBytes

La funcion entrega como resultado un arreglo de enteros cuyo numero dependera de la cantidad de lecturas indicadas por medio del entero count, se debe indicar la direccion del modulo y la dirección interna del registro que se desea leer

void I2CreadBytes(uint8_t address, uint8_t subaddress, int *dest, uint8_t count);
		  

A continuación se presenta el código completo

void I2CreadBytes(uint8_t address, uint8_t subaddress, int *dest, uint8_t count)
{
	i2c_putrwaddr (I2C_WRITE, address);
	i2c_putdata(subaddress);
	i2c_init();
	nsleep(20);
	i2c0->ucr = 0x00;
	  //Pausa para que el esclavo procese la orden
	while((i2c0->ucr & I2C_BUSY));
	msleep(1);
	  //Lectura de la informacion otorgada por el esclavo
	i2c_putrwaddr(I2C_READ, address);
	i2c_init();
	//-------------------------------------
  uint8_t i;
	for (i=0; iucr = 0x00;

		while ( (i2c0->ucr & I2C_BUSY) && (!(i2c0->ucr & I2C_ERROR)));
	    dest[i++] = i2c0-> wxrx;
	}
	//-------------------------------------
}
		  

Este código puede ser empleado para verificar el correcto funcionamiento de la fúncion, en la salida del módulo gpio se veran expresadas las mediciones tomadas por el modulo i2c

static int temp[6];

I2CreadBytes(0x30, 0x35, temp, 6);

gpio0->oe  = 0x000000ff;

gpio0->out = 0xAA;


gpio0->out = 0x00;
	gpio0->out = temp[0];
gpio0->out = 0x01;
	gpio0->out = temp[1];
gpio0->out = 0x02;
	gpio0->out = temp[2];
gpio0->out = 0x03;
	gpio0->out = temp[3];
gpio0->out = 0x04;
	gpio0->out = temp[4];
gpio0->out = 0x05;
	gpio0->out = temp[5];
		  

I2CwriteByte

void I2CwriteByte(uint8_t address, uint8_t subaddress, uint8_t data);
		  
test Link interesante Guia de como interactuar con el modulo http://www.book.dislib.info/b1-other/4051671-1-data-manipulation-and-basic-settings-the-mpl3115a2-command-line.php Comentarios de otras personas sobre el modulo https://community.nxp.com/thread/352471 https://www.pjrc.com/store/mpl3115a2.pdf Que es el sobremuestreo https://en.wikipedia.org/wiki/Oversampling