Can you give an example for reading voltage on ADM1191 please ?

I'm working with ADM1191 but I can not read voltage data.

I use Cora z7 to act as master, and use ADM1191 to read voltage of pi-fan.

In this case, I use 0x60 to be slave address.

Here is my code,

IIC::ConfigTable write_Config[4] = {{0x83,0x00}, {}, {}, {}};

Status=ADM.I2C_Read(0x30,write_Config, 4);
printf("\r\n\t\t-> Status %d",Status);
for (int i = 0; i < 4; i++)
printf("\r\n\t\t-> Data 0x%X",write_Config->data);
printf("\r\n\t\t-> Reg 0x%X",write_Config->reg);

Ruengsook C.

  • 0
    •  Analog Employees 
    on Sep 4, 2019 5:47 AM


    Unfortunately, at this point, we don't have any ADM1191 no-OS driver.

    For specific questions about the part, please open a thread on:


  • 0
    •  Analog Employees 
    on Sep 10, 2019 11:50 PM

    Greetings Ruengsook,

      I am unfamiliar with the Cora z7 and I do not understand your code, but I think that I can help explain how to read the voltage.  

    1.  First make sure that you ASEL selections match your expected slave address.  For address 0x60, both ASELS should be grounded.

    2.  Perform a write byte operation with the data 0x01 (for continuous voltage conversions) or 0x02 (for a single conversion).

    3. Wait enough time for a conversion to take place (~150us).

    4. perform a read.  The ADM1191 should return the ADC code in two data bytes, the first with the upper 8 MSBs and the second with the lower 4 LSBs and 0s padding the rest of the byte. 


    5.  Convert the two data bytes into the voltage reading by following these steps (make sure you use the correct range):

    Hopefully this helps you out!  You may need to take some Beagle traces or scope shots to make sure your master is performing the operations correctly.  Let me know if you have any questions!

    Thank you and best regards,