示例#1
0
s08 EE_pageWrite( u16 i2c_address,u08 length, char *data)
{
	// Esta funcion controla que se escriba una pagina, controlando que la direccion
	// de escritura sea una frontera de pagina.

s08 ret = FALSE;

	// Controlo que el tamano no exceda al de una pagina
	if (length > EERDBUFLENGHT) {
		length = EERDBUFLENGHT;
	}

	// Ajusto la direccion de escritura a la frontera de pagina mas proxima
	if (  (i2c_address % EEPAGESIZE) != 0 ) {
		i2c_address = (i2c_address / EEPAGESIZE ) * EEPAGESIZE;
	}

	while ( xSemaphoreTake( semph_I2C, ( TickType_t ) 10 ) != pdTRUE )
		taskYIELD();

	ret = i2c_masterWrite (EE24X, i2c_address, EE_ID, EE_ADDR, length, data);

	xSemaphoreGive( semph_I2C );
	return(ret);

}
// mux
uint8_t mux_setChannel(uint8_t address, mux_chan_t channel)
{

     uint8_t chan[1];
     uint8_t result;

     chan[0] = 1 << channel;
     // set channel
     result = i2c_masterWrite(address, 1, chan);
     return result;
}
示例#3
0
// mux
uint8_t mux_setChannel(mux_chan_t channel)
{
     uint8_t chan[1];
     uint8_t result;

     chan[0] = 1 << channel;
     // set channel
     mux_reset();
     result = i2c_masterWrite(MUX_ADDRESS, 1, chan);
     return result;
}
uint8_t obc_sendCmd(uint8_t slaveAddress, uint8_t cmdAddr, uint8_t cmd)
{
	volatile uint8_t result;
	uint8_t cmdData[2]={0};
	cmdData[0]= cmdAddr;
	cmdData[1]= cmd;
	result = i2c_masterWrite(slaveAddress,2,cmdData);
	if (result == ERROR){ return ERROR;}

	return SUCCESS;
}
示例#5
0
s08 EE_write( u16 i2c_address,u08 length, char *data)
{
	// Esta funcion escribe a partir de una posicion dada de la eeprom que no tiene
	// porque coincidir con una pagina.
	// Esto puede traer problemas ya que muchas veces la eeprom se graba por paginas

s08 ret = FALSE;

	while ( xSemaphoreTake( semph_I2C, ( TickType_t ) 10 ) != pdTRUE )
		taskYIELD();

	ret = i2c_masterWrite (EE24X, i2c_address, EE_ID, EE_ADDR, length, data);

	xSemaphoreGive( semph_I2C );
	return(ret);

}
uint8_t obc_sendData(uint8_t slaveAddress, uint8_t dataAddr, uint8_t size, uint8_t* data)
{
	#define MAX_SEND_DATA_SIZE	(16)

	volatile uint8_t i;
	volatile uint8_t result;
	uint8_t txData[MAX_SEND_DATA_SIZE] ={0};

	for (i = 0 ; i < size ; i++ )
	{
		txData[i+1] = data[i];
	}

	txData[0]=dataAddr;

	result = i2c_masterWrite(slaveAddress,1+size,txData);
	if (result == ERROR){return ERROR;}

	return SUCCESS;
}