コード例 #1
0
/*******************************************************************************
* @fn          sensorHdc1000Test
*
* @brief       Humidity sensor self test
*
* @return      true if test passes
*******************************************************************************/
bool sensorHdc1000Test(void)
{
  uint16_t val;

  SENSOR_SELECT();

  // Verify manufacturer ID
  ST_ASSERT(sensorReadReg(HDC1000_REG_MANF_ID,(uint8_t*)&val,2));
  val = SWAP(val);
  ST_ASSERT(val == HDC1000_VAL_MANF_ID);

  // Verify device ID
  ST_ASSERT(sensorReadReg(HDC1000_REG_DEV_ID,(uint8_t*)&val,2));
  val = SWAP(val);
  ST_ASSERT(val == HDC1000_VAL_DEV_ID);
  SENSOR_DESELECT();

  return true;
}
コード例 #2
0
/**************************************************************************************************
 * @fn          sensorMpu6500Test
 *
 * @brief       Run a sensor self-test
 *
 * @return      TRUE if passed, FALSE if failed
 */
bool sensorMpu6500Test(void)
{
  // Select this sensor on the I2C bus
  sensorMpu6500Select();
  
  // Check the WHO AM I register
  ST_ASSERT(sensorReadReg(WHO_AM_I, &val, 1));
  ST_ASSERT(val == 0x70);

  return true;
}
コード例 #3
0
/**************************************************************************************************
* @fn          sensorSht21Test
*
* @brief       Humidity sensor self test
*
* @return      none
**************************************************************************************************/
bool sensorSht21Test(void)
{
  uint8_t val;

  SENSOR_SELECT();

  // Verify write and read
  val = USR_REG_TEST_VAL;
  ST_ASSERT(sensorWriteReg(SHT21_CMD_WRITE_U_R,&val,1));
  ST_ASSERT(sensorReadReg(SHT21_CMD_READ_U_R,&val,1));
  ST_ASSERT(val == USR_REG_TEST_VAL);
  
  SENSOR_DESELECT();
  
  return true;
}
コード例 #4
0
/**************************************************************************************************
* @fn          sensorMpu6500AccRead
*
* @brief       Read data from the accelerometer - X, Y, Z - 3 words
*
* @return      TRUE if valid data, FALSE if not
*/
bool sensorMpu6500AccRead(uint16_t *data )
{
  bool success;
  
  // Select this sensor
  sensorMpu6500Select();

  // Burst read of all acceleromter values
  success = sensorReadReg(ACCEL_XOUT_H, (uint8_t*)data, DATA_SIZE);
  if (!success)
  {
    sensorSetErrorData((uint8_t*)data,DATA_SIZE);
  }

  return success;
}
コード例 #5
0
/**************************************************************************************************
* @fn          sensorSht21Init
*
* @brief       Initialize the humidity sensor driver
*
* @return      True if successful
**************************************************************************************************/
bool sensorSht21Init(void)
{
  SENSOR_SELECT();

  // Set 11 bit resolution
  success = sensorReadReg(SHT21_CMD_READ_U_R,&usr,1);
  if (success)
  {
    usr &= USR_REG_RES_MASK;
    usr |= USR_REG_11BITRES;
    success = sensorWriteReg(SHT21_CMD_WRITE_U_R,&usr,1);
  }
  
  SENSOR_DESELECT();
  
  return success;
}
コード例 #6
0
/**************************************************************************************************
* @fn          sensorMpu6500GyroRead
*
* @brief       Read data from the gyroscope - X, Y, Z - 3 words
*
* @return      TRUE if valid data, FALSE if not
*/
bool sensorMpu6500GyroRead(uint16_t *data )
{
  bool success;
  
  // Select this sensor
  sensorMpu6500Select();
  
  // Burst read of all gyroscope values
  success = sensorReadReg(GYRO_XOUT_H, (uint8_t*)data, DATA_SIZE);
  
  if (!success)
  {
    sensorSetErrorData((uint8_t*)data,DATA_SIZE);
  }

  return success;
}
コード例 #7
0
/*********************************************************************
 * @fn      sensor_readRegister
 *
 * @brief   Read registers and store the data in 'registerData'
 *
 * @return  none
 */
static void sensor_readRegister(void)
{
  uint8_t deviceAddress, interface, len;
  
  interface = registerDeviceID[0];
  deviceAddress = registerDeviceID[1];
  len = registerAddress[0];
  
  switch (interface)
  {
  // I2C interfaces
  case REGISTER_INTERFACE_I2C0:
  case REGISTER_INTERFACE_I2C1:
    {
      uint8_t regaddr;
      
      regaddr = registerAddress[1];
      bspI2cSelect(interface, deviceAddress);
      if (!sensorReadReg(regaddr,registerData,len))
      {
    	uint8_t i;
        for (i=0; i<len; i++)
        {
          registerData[i]= 0xFF;
        }
      }
      
      bspI2cDeselect();
    }
    break;
        
  case REGISTER_INTERFACE_MCU:
    {
      uint32_t addr;
      
      addr= *(uint32_t*)(&registerAddress[1]);
      memcpy(registerData,(uint8_t*)addr,len);
    }
    break;
    
  default:
    break;
  }
}