Пример #1
0
uint8_t QuadFC_i2cWrite(QuadFC_I2C_t *i2c_data, uint8_t busIndex, TickType_t blockTimeMs)
{
  if(busIndex > (sizeof(twi_instances)/sizeof(twi_instances[0])))
  {
    return 0;
  }
  if(!twi_Init[busIndex])
  {
    if(!Init_Twi(busIndex))
    {
      return 0;
    }
  }
  TickType_t blockTimeTicks = (blockTimeMs / portTICK_PERIOD_MS);

  status_code_t twi_status = 0;
  tmp_twi.addr_length = i2c_data->internalAddrLength;
  memcpy(tmp_twi.addr, i2c_data->internalAddr, i2c_data->internalAddrLength);
  tmp_twi.buffer = i2c_data->buffer;
  tmp_twi.length = i2c_data->bufferLength;
  tmp_twi.chip = i2c_data->slaveAddress;

  twi_status = freertos_twi_write_packet( freeRTOS_twi[busIndex],
      &tmp_twi,
      blockTimeTicks );


  if (twi_status != STATUS_OK)
  {
    // TODO Led_Set(led_error_TWI);
    return 0;
  }
  return 1;
}
Пример #2
0
	
	return result;
}

status_code_t itg_write(ITG_Addr_Dev itg_addr, uint8_t value, ITG_Addr_Reg itg_reg){
	twi_packet_t tx = {
		.addr[0]		= ((uint8_t) itg_reg),
		.addr_length	= 1,
		.buffer			= &value,
		.length			= 1,
		.chip			= ((uint8_t) itg_addr)
	};
	
	status_code_t result = STATUS_ERR_TIMEOUT;
	
	result = freertos_twi_write_packet(freertos_twi, &tx, TWI_BLOCK_TIME);
	
	return result;
}

status_code_t itg_read (ITG_Addr_Dev itg_addr, uint8_t *value, ITG_Addr_Reg itg_reg, uint8_t len){
	twi_packet_t rx = {
		.addr[0]		= ((uint8_t) itg_reg),
		.addr_length	= 1,
		.buffer			= value,
		.length			= len,
		.chip			= ((uint8_t) itg_addr)
	};
	
	status_code_t result = STATUS_ERR_TIMEOUT;