Пример #1
0
uint8_t L3GD20_ReadReg(uint8_t addr, uint8_t *data, short dataSize) {
	uint8_t res;
	printf("A\r\n");
	/* Send I2C address plus register address to the I2C bus *without* a stop condition */
	res = I2C1_MasterSendBlock(deviceData.handle, &addr, 0x80,
			LDD_I2C_NO_SEND_STOP);
	if (res != ERR_OK) {
		return ERR_FAILED;
	}
	while (!deviceData.dataTransmittedFlg) {
	} /* Wait until data is sent */
	printf("B\r\n");
	deviceData.dataTransmittedFlg = FALSE;

	/* Receive InpData (1 byte) from the I2C bus and generates a stop condition to end transmission */
	res = I2C1_MasterReceiveBlock(deviceData.handle, data, dataSize,
			LDD_I2C_SEND_STOP);
	if (res != ERR_OK) {
		return ERR_FAILED;
	}
	while (!deviceData.dataReceivedFlg) {
	} /* Wait until data is received received */
	printf("C\r\n");
	deviceData.dataReceivedFlg = FALSE;
	return ERR_OK;
}
Пример #2
0
uint8_t LIS2DH12TR_WriteReg(uint8_t addr, uint8_t val) {
  uint8_t buf[2], res;

  buf[0] = addr;
  buf[1] = val;
  res = I2C1_MasterSendBlock(deviceData.handle, &buf, 2U, LDD_I2C_SEND_STOP); /* Send OutData (3 bytes with address) on the I2C bus and generates not a stop condition to end transmission */
  if (res!=ERR_OK) {
    return ERR_FAILED;
  }
  while (!deviceData.dataTransmittedFlg) {}  /* Wait until date is sent */
  deviceData.dataTransmittedFlg = FALSE;
  return ERR_OK;
}