Пример #1
0
/**************************************************************************************************
 * @fn          HalMagTest
 *
 * @brief       Run a sensor self-test
 *
 * @return      TRUE if passed, FALSE if failed
 **************************************************************************************************/
bool HalMagTest(void)
{
  uint8 val;

  // Select this sensor on the I2C bus
  HalMagSelect();

  // Check who-am-i register
  ST_ASSERT(HalSensorReadReg(MAG_REG_ADDR_WHO_AM_I, &val, sizeof(val)));
  ST_ASSERT(val==WHO_AM_I_VALUE);

  // Check CTRL_REG1 in standby mode
  ST_ASSERT(HalSensorReadReg(MAG_REG_ADDR_CTRL_1, &val, sizeof(val)));
  ST_ASSERT(val==MAG_REG_CTRL_OFF);

  // Check that CTRL_REG1 can be written
  val = CTRL1_TEST_VALUE;
  ST_ASSERT(HalSensorWriteReg(MAG_REG_ADDR_CTRL_1, &val, sizeof(val)));
  ST_ASSERT(HalSensorReadReg(MAG_REG_ADDR_CTRL_1, &val, sizeof(val)));
  ST_ASSERT(val==CTRL1_TEST_VALUE);

  // Restore default value
  val = MAG_REG_CTRL_OFF;
  ST_ASSERT(HalSensorWriteReg(MAG_REG_ADDR_CTRL_1, &val, sizeof(val)));

  // Check that the sensor is in standby mode
  ST_ASSERT(HalSensorReadReg(MAG_REG_ADDR_SYSMOD, &val, sizeof(val)));
  ST_ASSERT(val==0);

  return TRUE;
}
Пример #2
0
/**************************************************************************************************
* @fn          HalMagTurnOn
*
* @brief       Turn on the MAG3110.
*
* @return      none
*/
void HalMagTurnOn(void)
{	
  HalMagSelect();

  HalSensorWriteReg(MAG_REG_ADDR_CTRL_1, &halMagSensorConfig, sizeof(halMagSensorConfig));
  HalSensorWriteReg(MAG_REG_ADDR_CTRL_2, &halMagAutoMrstEn, sizeof(halMagAutoMrstEn));
  sensorState = MAG3110_IDLE;
}
Пример #3
0
/**************************************************************************************************
* @fn          HalMagTurnOff
*
* @brief       Turn off the MAG3110.
*
* @return      none
*/
void HalMagTurnOff(void)
{
  HalMagSelect();

  HalSensorWriteReg(MAG_REG_ADDR_CTRL_1, &halMagSensorOff, sizeof(halMagSensorOff));
  sensorState = MAG3110_OFF;
}
Пример #4
0
/**************************************************************************************************
 * @fn          HalIRTempTurnOff
 *
 * @brief       Turn the sensor off
 *
 * @return      none
 **************************************************************************************************/
void HalIRTempTurnOff(void)
{
  HalIRTempSelect();

  if (HalSensorWriteReg(TMP006_REG_ADDR_CONFIG, configSensorOff, IRTEMP_REG_LEN))
  {
    irtSensorState = TMP006_OFF;
  }
  HalDcDcControl(ST_IRTEMP,false);
}
Пример #5
0
/**************************************************************************************************
 * @fn          HalIRTempTurnOn
 *
 * @brief       Turn the sensor on
 *
 * @return      none
 **************************************************************************************************/
void HalIRTempTurnOn(void)
{
  HalDcDcControl(ST_IRTEMP,true);
  HalIRTempSelect();

  if (HalSensorWriteReg(TMP006_REG_ADDR_CONFIG, configSensorOn, IRTEMP_REG_LEN))
  {
    irtSensorState = TMP006_IDLE;
  }
}
Пример #6
0
/**************************************************************************************************
* @fn          HalHumiInit
*
* @brief       Initialise the humidity sensor driver
*
* @return      none
**************************************************************************************************/
void HalHumiInit(void)
{
  HalHumiSelect();

  // Set 11 bit resolution
  HalSensorReadReg(SHT21_CMD_READ_U_R,&usr,1);
  usr &= USR_REG_RES_MASK;
  usr |= USR_REG_11BITRES;
  HalSensorWriteReg(SHT21_CMD_WRITE_U_R,&usr,1);
  success = FALSE;
}
Пример #7
0
/**************************************************************************************************
 * @fn          HalIRTempTest
 *
 * @brief       Run a sensor self-test
 *
 * @return      TRUE if passed, FALSE if failed
 **************************************************************************************************/
bool HalIRTempTest(void)
{
  uint16 val;

  // Select this sensor on the I2C bus
  HalIRTempSelect();

  // Check manufacturer ID
  ST_ASSERT(HalSensorReadReg(TMP006_REG_MANF_ID, (uint8 *)&val, IRTEMP_REG_LEN));
  val = (LO_UINT16(val) << 8) | HI_UINT16(val);
  ST_ASSERT(val == TMP006_VAL_MANF_ID);

  // Reset sensor
  ST_ASSERT(HalSensorWriteReg(TMP006_REG_ADDR_CONFIG, configSensorReset, IRTEMP_REG_LEN));

  // Check config register (reset)
  ST_ASSERT(HalSensorReadReg(TMP006_REG_ADDR_CONFIG, (uint8 *)&val, IRTEMP_REG_LEN));
  val = ((LO_UINT16(val) << 8) | HI_UINT16(val));
  ST_ASSERT(val == TMP006_VAL_CONFIG_RESET);

  // Turn sensor off
  ST_ASSERT(HalSensorWriteReg(TMP006_REG_ADDR_CONFIG, configSensorOff,IRTEMP_REG_LEN));

  // Check config register (off)
  ST_ASSERT(HalSensorReadReg(TMP006_REG_ADDR_CONFIG, (uint8 *)&val, IRTEMP_REG_LEN));
  val = ((LO_UINT16(val) << 8) | HI_UINT16(val));
  ST_ASSERT(val == TMP006_VAL_CONFIG_OFF);

  // Turn sensor on
  ST_ASSERT(HalSensorWriteReg(TMP006_REG_ADDR_CONFIG, configSensorOn, IRTEMP_REG_LEN));

  // Check config register (on)
  ST_ASSERT(HalSensorReadReg(TMP006_REG_ADDR_CONFIG, (uint8 *)&val, IRTEMP_REG_LEN));
  val = ((LO_UINT16(val) << 8) | HI_UINT16(val));
  ST_ASSERT(val == TMP006_VAL_CONFIG_ON);

  // Turn sensor off
  ST_ASSERT(HalSensorWriteReg(TMP006_REG_ADDR_CONFIG, configSensorOff, IRTEMP_REG_LEN));

  return TRUE;
}
Пример #8
0
/**************************************************************************************************
 * @fn          HalIRTempRead
 *
 * @brief       Read the sensor voltage and sensor temperature registers
 *
 * @param       Voltage and temperature in raw format (2 + 2 bytes)
 *
 * @return      TRUE if valid data
 **************************************************************************************************/
bool HalIRTempRead(uint8 *pBuf)
{
  uint16 v;
  uint16 t;
  bool success;

  if (irtSensorState != TMP006_DATA_READY)
  {
    return FALSE;
  }

  HalIRTempSelect();

  // Read the sensor registers
  success = HalSensorReadReg(TMP006_REG_ADDR_VOLTAGE, (uint8 *)&v,IRTEMP_REG_LEN );
  if (success)
  {
    success = HalSensorReadReg(TMP006_REG_ADDR_TEMPERATURE, (uint8 *)&t,IRTEMP_REG_LEN );
  }

  if (success)
  {
    // Store values
    pBuf[0] = HI_UINT16( v );
    pBuf[1] = LO_UINT16( v );
    pBuf[2] = HI_UINT16( t );
    pBuf[3] = LO_UINT16( t );
  }

  // Turn off sensor
  if (HalSensorWriteReg(TMP006_REG_ADDR_CONFIG, configSensorOff, IRTEMP_REG_LEN))
  {
    irtSensorState = TMP006_OFF;
  }
  HalDcDcControl(ST_IRTEMP,false);

  return success;
}
Пример #9
0
/**************************************************************************************************
 * @fn          HalINFWrite
 *
 * @brief       Read the sensor voltage and sensor temperature registers
 *
 * @param       Voltage and temperature in raw format (2 + 2 bytes)
 *
 * @return      TRUE if valid data
 **************************************************************************************************/
bool HalINFWrite(uint8 addr, uint8 *pBuf, uint8 nBytes) {
	bool success;
	HalINFTurnOn();
	success = HalSensorWriteReg(addr, pBuf, nBytes);
	return success;
}