nRF5x 칩 내부에 온도센서가 있다.
Temperature sensor (TEMP)
The temperature sensor measures die temperature over the temperature range of the device with 0.25° C
resolution.
examples\peripheral\temperature
int main(void)
{
// This function contains workaround for PAN_028 rev2.0A anomalies 28, 29,30 and 31.
int32_t volatile temp;
nrf_temp_init();
APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
NRF_LOG_DEFAULT_BACKENDS_INIT();
NRF_LOG_INFO("Temperature example started.");
while (true)
{
NRF_TEMP->TASKS_START = 1; /** Start the temperature measurement. */
/* Busy wait while temperature measurement is not finished, you can skip waiting if you enable interrupt for DATARDY event and read the result in the interrupt. */
/*lint -e{845} // A zero has been given as right argument to operator '|'" */
while (NRF_TEMP->EVENTS_DATARDY == 0)
{
// Do nothing.
}
NRF_TEMP->EVENTS_DATARDY = 0;
/**@note Workaround for PAN_028 rev2.0A anomaly 29 - TEMP: Stop task clears the TEMP register. */
temp = (nrf_temp_read() / 4);
/**@note Workaround for PAN_028 rev2.0A anomaly 30 - TEMP: Temp module analog front end does not power down when DATARDY event occurs. */
NRF_TEMP->TASKS_STOP = 1; /** Stop the temperature measurement. */
NRF_LOG_INFO("Actual temperature: %d", (int)temp);
nrf_delay_ms(500);
NRF_LOG_FLUSH();
}
}
소스코드를 구동하면 nRF52 칩의 내부 온도 센서값을 확인 할 수 있다.
반응형