This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LMP90080

Other Parts Discussed in Thread: LMP90080, LMP90100

Hi,

I am using LMP90080 sensor i am able to read channel 0.but when i connect another LMP90080 to channel 1 not able to read both channels .i tried loading different values to register nothing is working ..can u please provide some sample code for reading multiple channels .i am using Lpc 2468.

  • Sorry but I think this is wrong forum for this, it should be in the data conversion forum. I will try to get it moved and have the proper apps engineer respond.

    Take care,

  • Thanks,Can u please guide me from which forum  can the information regarding LMP90080,where i  am using 3 wire RTD sensors(4 No)

  • Hi Reju,

    Here is the link to the code library for interfacing LMP90100/LMP90080 with MSP430 family. http://www.ti.com/litv/pdf/snaa134

    Regards,
    Murali

  • Hi,

    Thanks for your reply....will the sample code for LMP90100 work for LMP90080..I observed register address do not match .

  • Hi Reju,

    LMP90080:
    Sensor Diagnostics Threshold(0x14 )
    ADC conversion register(0x1A-0x1B ) 

    LMP90100:
    Sensor Diagnostics Threshold(0x14-0x15 ) 
    ADC conversion register(0x1A,0x1B,0x1C ) 

    with these modifications, you will be able to use the LMP90100(24 bit version) code with the LMP90080(16 bit version).

    Regards,
    Murali 

  • Hi,

    As per the code of LMP 90100 i had converted to LMP 90080.the configuration part is configured as LMP 90100 by taking care of ADC conversion register when i try to read channel 0 and 1 get some values which are not matching for individual channels ...My Doubt is after configuring channel 0 and channel 1 ...how to read Channels? we are reading through 2 registers ADC_DOUTH,ADC_DOUTL(0x1a,0X1b).In code have seen first byte is channel No but we are no getting it properly how to read data from the register  cos it not working as  your code.in our hardware we are no using any interrupt s will that be any problem

  • Hi Murali,

       Is possible to connect 4 no  RTDs to LMP90080?

    if possible,how can i connect IB1 to 4 RTDs? How to inject current to all 4 no RTD?

  • Hi Reju,

    You have to read the status register which is before the ADC_DOUTH and ADC_DOUTL. This register contains few status flags and also the channel number.

    as you mentioned that you are not using interrupt to start data reading, are you polling the DRDYB line or is it at random times ?

    Regards,
    Murali

  • Hi,

    We tried reading the status registers but not getting the  proper response.We are not using DRDYB line we are just reading the channels randomly  as mention in ur application note.Can anyone from your team can come down here to help us solve the issue because we running out of time .Can we contact ur team through phone?

    Thanks & Regards,

    Reju George

  • Hi Reju,

    Which demo example are you referring to in the app note?

    CH_SCAN(0x1F) register has to be scan mode2/3 for multi channel scan along with proper first and last channel scan numbers.Please make sure this is done.

    Provide me your contact number.

    Regards,
    Murali 

  • Hi,

    Our requirment is we need to connect 4 no RTDs(3-wire RTDs). In our circuit we are using IB1 which is shown in datasheet.

    Our Confifration are as follows

    For Channel-0;

      Address          Data

       0x00      -         0xC3

       0x21      -         0x40

       0x10     -         0x02

       0x20      -         0x81

       0x12      -         0x11

    For Channel-1;

      Address          Data

       0x00      -         0xC3

       0x23      -         0x40

       0x10     -         0x02

       0x22      -         0x93

       0x12      -         0x11

    Reading both channels;

    SSP_send(0x10);

    SSP_send(0x01);

    SSP_send(0xEA);

    output_data1 = SSP_read_single_byte();

    output_data2 = SSP_read_single_byte();

    output_data3 = SSP_read_single_byte();

    output_data4= SSP_read_single_byte();

    output_data5 = SSP_read_single_byte();

    output_data6= SSP_read_single_byte();

    output_data7 = SSP_read_single_byte();

    output_data8 = SSP_read_single_byte();

    reading 8 times.for 2 channels..

    contact no- 8867737287

    plz call if possible to solve the issue.

      

  • Hi,

    As per our last telephonic conversation .we had used DRDYB which is connected to interrupt .At power on the DRDYB signal is changes from low to high after that is high AFTER TRYING TO READ ALSO THE SIGNAL NOT GOING LOW

    I tried reading all four channels by writing into the scan register, but not getting any reading. When i tried reading the channel no getting 0Xff.i have attached register configured .Please go though configuration code if some is wrong 

    void ch_config(void){
    FIO2SET = 0x00800000; //Flash CS_high
    FIO2SET = 0x00004000; //Bat CS_high
    DelayMs(1);

    RTD_SSP0cs_low();
    DelayMs(1);

    RTD_SSP0_Send(0x10); //Reset Control
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0xC3); //value passed to register

    RTD_SSP0_Send(0x10); //ADC_RESTART ADC Restart Conversion 0x0B WO
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x0b);
    RTD_SSP0_Send(0x00); //value passed to register


    RTD_SSP0_Send(0x10); //GPIO_DIRCN: GPIO Direction (Address 0x0E )
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x0E);
    RTD_SSP0_Send(0x40); //value passed to register 

    RTD_SSP0_Send(0x10); //GPIO_DAT: GPIO Data (Address 0x0F)
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x0F);
    RTD_SSP0_Send(0x40); //value passed to register 

    RTD_SSP0_Send(0x10); //BGCALCN Background Calibration Control 0x10 R/W
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x00); //value passed to register

    RTD_SSP0_Send(0x10); //SPI Data Ready Bar Control
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x83); //value passed to register 

    RTD_SSP0_Send(0x10); //ADC_AUXCN ADC Auxiliary Control 0x12
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x02);
    RTD_SSP0_Send(0x11); //value passed to register 

    RTD_SSP0_Send(0x10); //Sensor Diagnostic Threshold 0x14
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x04);
    RTD_SSP0_Send(0x00); //value passed to register

    RTD_SSP0_Send(0x10); //CH_SCAN Channel Scan Mode 0x1F R/W
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x0F);
    RTD_SSP0_Send(0xb0); //value passed to register //c8 

    RTD_SSP0_Send(0x10); //CH0_CONFIG CH0 Configuration 0x21 R/W
    RTD_SSP0_Send(0x02);
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x40); //value passed to register 

    RTD_SSP0_Send(0x10); //CH0_INPUTCN CH0 Input Control 0x20 R/W
    RTD_SSP0_Send(0x02);
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x01); //value passed to register 

    RTD_SSP0cs_high(); 
    }

     

    void READF_CH_connection(void){
    unsigned int RTDdata;
    unsigned char RTDdata1,RTDdata2; 
    ;
    FIO2SET = 0x00800000; //Flash CS_high
    FIO2SET = 0x00004000; //Bat CS_high

    DelayMs(1);
    RTD_SSP0cs_low();

    RTD_SSP0_Send(0x10); //DATA_ONLY_1 Data Only Read Control 1 0x09 R/W
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x09);
    RTD_SSP0_Send(0x19); //value passed to register

    RTD_SSP0_Send(0x10); // DATA_ONLY_2 Data Only Read Control 2 0x0A R/W
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x0A);
    RTD_SSP0_Send(0x00); //value passed to register

    // RTD_SSP0_Send(0xfa); //Enable Data First Mode Instruction
    // RTD_SSP0_Send(0x9f);


    RTD_SSP0cs_high();
    DelayUs(115);
    RTD_SSP0cs_low();

    RTD_SSP0_Send(0x90); //DATA_ONLY_1 Data Only Read Control 1 0x09 R/W
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x89);

    RTDdata1 = RTD_SSP0_read_singleByte(); 
    sendchar0 (RTDdata1);

    RTDdata2 = RTD_SSP0_read_singleByte(); 
    sendchar0 (RTDdata2);
    RTD_SSP0cs_high();
    DelayUs(115);

    }

    Thanks&Regards,

    Reju George

    8867737287

     

     

  • Hi,

    Inti_RTD_Config()
    {
    RTD_SSP0cs_low();
    RTD_SSP0_Send(0x10); //Reset Control
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0xC3); //value passed to register
    RTD_SSP0cs_high();

    RTD_SSP0cs_low();
    RTD_SSP0_Send(0x10); //SPI_HANDSHAKECN SPI Handshake Control 0x01 R/W
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x04); //value passed to register
    RTD_SSP0cs_high();

    RTD_SSP0cs_low();
    RTD_SSP0_Send(0x10); //ADC_RESTART ADC Restart Conversion 0x0B WO
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x0b);
    RTD_SSP0_Send(0x00); //value passed to register
    RTD_SSP0cs_high();

    RTD_SSP0cs_low();
    RTD_SSP0_Send(0x10); //GPIO_DIRCN: GPIO Direction (Address 0x0E )
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x0E);
    RTD_SSP0_Send(0x40); //value passed to register
    RTD_SSP0cs_high();

    RTD_SSP0cs_low();
    RTD_SSP0_Send(0x10); //GPIO_DAT: GPIO Data (Address 0x0F)
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x0F);
    RTD_SSP0_Send(0x40); //value passed to register
    RTD_SSP0cs_high();

    RTD_SSP0cs_low();
    RTD_SSP0_Send(0x10); //BGCALCN Background Calibration Control 0x10 R/W
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x00);
    RTD_SSP0_Send(0x02); //value passed to register
    RTD_SSP0cs_high();

    RTD_SSP0cs_low();

    RTD_SSP0_Send(0x10); //SPI Data Ready Bar Control
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x83); //value passed to register
    RTD_SSP0cs_high();

    RTD_SSP0cs_low();
    RTD_SSP0_Send(0x10); //ADC_AUXCN ADC Auxiliary Control 0x12
    RTD_SSP0_Send(0x01); //Note if current given will not be able to read flag
    RTD_SSP0_Send(0x02);
    RTD_SSP0_Send(0x10); //value passed to register
    RTD_SSP0cs_high();

    RTD_SSP0cs_low();
    RTD_SSP0_Send(0x10); //Sensor Diagnostic Threshold 0x14
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x04);
    RTD_SSP0_Send(0x00); //value passed to register
    RTD_SSP0cs_high();

    RTD_SSP0cs_low();
    RTD_SSP0_Send(0x10); //CH_SCAN Channel Scan Mode 0x1F R/W
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x0F);
    RTD_SSP0_Send(0xd8); //value passed to register //c8 2ch //cm 33 d8-4 channel //09
    RTD_SSP0cs_high();


    //RTD_SSP0cs_low();
    // RTD_SSP0_Send(0x10); //DATA_ONLY_1 Data Only Read Control 1 0x09 R/W
    // RTD_SSP0_Send(0x00);
    // RTD_SSP0_Send(0x09);
    // RTD_SSP0_Send(0x19); //value passed to register //c8 //cm 33
    ////RTD_SSP0cs_high();
    ////
    ////RTD_SSP0cs_low();
    // RTD_SSP0_Send(0x10); //DATA_ONLY_2 Data Only Read Control 2 0x0A R/W
    // RTD_SSP0_Send(0x00);
    // RTD_SSP0_Send(0x0a);
    // RTD_SSP0_Send(0x02); //value passed to register //c8 //cm 33
    ////RTD_SSP0cs_high();
    //
    //
    //// RTD_SSP0cs_low();
    //// RTD_SSP0_Send(0xfa); ///css//high
    //// RTD_SSP0_Send(0x9f);
    // RTD_SSP0cs_high();

    // RTD_SSP0_Send(0x9f);
    // while (!(SSP0SR & SSPSR_RNE)& 0x80 )
    // {
    // print_uart0("Entered First mode"); DelayS(1);
    //
    // RTD_SSP0_Send(0x9f);
    // }
    // RTD_SSP0cs_high();

    }

    void CH_connection(void){

    FIO2SET = 0x00800000; //Flash CS_high
    FIO2SET = 0x00004000; //Bat CS_high

    DelayMs(1);
    RTD_SSP0cs_low();
    SSP0_fifoClear(8);

    RTD_SSP0_Send(0x10); //DATA_ONLY_1 Data Only Read Control 1 0x09 R/W
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x89); //89 ind, e9 /4 ch c9

    SSP0_fifoClear(8);

    RTDdata1 = RTD_SSP0_read_singleByte();
    sendchar0 (RTDdata1);
    DelayMs(2);
    RTD_SSP0cs_high();
    DelayUs(115);

    DelayMs(1);
    RTD_SSP0cs_low();
    SSP0_fifoClear(8);

    RTD_SSP0_Send(0x10); //DATA_ONLY_1 Data Only Read Control 1 0x09 R/W
    RTD_SSP0_Send(0x01);
    RTD_SSP0_Send(0x8a); //89 ind, e9 /4 ch c9

    SSP0_fifoClear(8);

    RTDdata = RTD_SSP0_read_singleByte();
    sendchar0 (RTDdata);

    RTDdata1 = RTD_SSP0_read_singleByte();
    sendchar0 (RTDdata1);

    RTD_SSP0cs_high();
    DelayUs(115);
    }

    as i had tried to read from READ DATA only register by giving start of address 0x19 and number bytes 3 byte but not able to read so i tried to read the channel no directly is working i can also detect open and short of the sensor ...but the data from ADC_DOUT i am not getting correct can u please check configuration correct i also tried in burnout i tried configure but not getting data properly.Please see and weather if there is any thing wrong

  • Hi,

    I have doubt regarding conversion adc data read from your IC.Could you guide how the conversion is done.data sheet seems not be clear.

    Thanks and regards

    Reju George

  • Hi,

       I am facing the same problem  what regu had faced.

    I am using lmp90080 in my project to measure temperature using 3 wire RTD.I have connected a 3 wire RTD1 in channel CH0 and another 3 wire RTD2 to CH2.The current is given through IB1 and IB2 to each RTD1 and RTD2 respectively.

    When I try to read both channels using 0x82 in CH_SCAN register, the ADC reads incorrect values.However, If connect anyone RTD and remove the other one, ADC reads perfectly as expected.

    In this case what i am doing wrong..?

    Can anyone please explain me..?

    Regards 

    Anbu