본문 바로가기

Nordic/nRF52

[nRF52 xBee EVM] 기본 동작 테스트 - temperature 테스트 (IAR)

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 칩의 내부 온도 센서값을 확인 할 수 있다.

반응형