Quantcast
Channel: Data converters
Viewing all articles
Browse latest Browse all 89076

Forum Post: RE: AMC7823 temp sensor precision issue

$
0
0

Hello Matt,

Device works in auto mode.

Please see below init and simple read functions

void monitor_init()
{
    Xuint16 dword;

    PORT_OUT(XPAR_CNTRL_GPIO_BASEADDR) |= AMC7823_RESET;
    amc7823_SPI_Write(&amc7823, 0x0C, 0xBB30, 1, 1);
    xil_printf("Starting monitor (AMC7823) initialization\r\n");

    //check <Part Revision Number> register
    amc7823_SPI_Read(&amc7823, 0x1E, &dword, 1, 1);

    xil_printf("AMC7823_REV: 0x%X\r\n", dword);
    //Power-Down Register
    //set PADC to '1' to enable ADC operation
    //set PDACn to '0' to disable DAC operation
    //set PTS to '0' to disable the precision current source
    //set PREFB to '0' disable the reference buffer amplifier
    amc7823_SPI_Write(&amc7823, 0x0D, 0x8000, 1, 1);

    //AMC Status/Configuration Register
    //set SREF to '0' to select internal refence
    //set GREF to '0' to select +1.25V reference
    //set ECNVT to '0' to enable internal trigger mode
    amc7823_SPI_Write(&amc7823, 0x0A, 0x0000, 1, 1);

    //ADC Control Register
    //set CMODE to '1' for auto mode (continuous conversion)
    //set SA to 0 to start measure at channel 0
    //set EA to 8 to end measure at channel 8
    amc7823_SPI_Write(&amc7823, 0x0B, 0x8080, 1, 1); Sleep(2);
}

void monitor_displayamctemp()

{
    int dword;
    float result;
    amc7823_SPI_Read(&amc7823, 0x08, &dword, 1, 0);

    //calculate deltaVbe in mV
    result = 0.61f * (dword&0xFFF);

    //calculate temperature in C
    result = 2.60f * result - 273.0f;
    xil_printf(" Temperature  : %d C\r\n", (Xuint32)result);

}

BR&Thanks,
Serge


Viewing all articles
Browse latest Browse all 89076

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>