LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

301742

Solved!
Go to solution

I am using the USB 8451 to communicate with the ISL25700 chip through LabVIEW. The ISL2570 uses the I2C on the interface. I am trying to read from the chip using the general read code that came with the interface. I keep getting the error code 301742. The device address I am using is 00h, which I got from the data sheet. The circuit I am using is the application circuit listed in the data sheet with pull-up resistors at the SDA and SCL lines. I am not sure how to fix the problem. I was also wondering how to pick a particular register to read and write from. Attached is the data sheet for the ISL25700.

0 Kudos
Message 1 of 14
(3,890 Views)

00h is not the correct device address. That's the so-called "Device ID", but I haven't a clue what it's for since I haven't read the whole datasheet. The device address is shown on page 13. It would be 0x28. I don't recall if the USB-8451 wants the addresses in 7-bit format or 8-bit format (with the LSB set to 0).

Message 2 of 14
(3,874 Views)

I tried the address x28, however I still get the 301742 error.

0 Kudos
Message 3 of 14
(3,868 Views)

It's possible you may have another error in your code. Can you upload your code?

Message 4 of 14
(3,857 Views)

I did not have the interface when I made the copy of the program, so it does not show the ID of the interface. Other then that, this is what I was trying to use.

0 Kudos
Message 5 of 14
(3,847 Views)

I see two things. One, you copied the example that ships with the 8451, but that example is for reading from EEPROMs, and your device isn't an EEPROM. In your case you only specify a single byte for the "write data" array, which corresponds to the address where you want to start reading. I'd suggest settting the bytes to read to 1 for now. You do not need the "Address Endianness" or the "Number of Address Bytes" controls since they do not apply to your case. Second, your 8451 device reference is a constant, and it's set to nothing. I'd suggest making this into a control so you can specify the device from the front panel.

Message 6 of 14
(3,838 Views)

I believe I made the changes that you suggested, however I am still getting the 301742 error. Attached is the program with the changes.

0 Kudos
Message 7 of 14
(3,822 Views)

No, that's not right. You want to send only 1 byte. That would be the address to read from. That EEPROM address should be a U8, and you should be feeding an array of only 1 element, that simply consists of that value. Please look at the documentation more closely. It shows that the addresses are 1 byte values, i.e., U8.

 

By the way, have you put pull-up resistors on the SCL and SDA lines? If so, where did you place them, and how much were they?

Message 8 of 14
(3,815 Views)

I am using two 2.2K resistors for the pull-up resistors. One resistor goes from the SCL line to 5 V and the other goes from the SDA line to 5V. I changed the array to have one element and changed the EEPROM to U8. I ran the program but still get the 301742 error. I attached the program with the changes.

0 Kudos
Message 9 of 14
(3,806 Views)

Hi Katie,


I haven't gotten a chance to take a close look at the datasheet, but if your device is expecting a 7-bit address you may want to try shifting your data 1 bit to the right.  This is suggested in the error description as a potential solution for devices expecting 7-bit instructions.  Does this provide any positive results?

0 Kudos
Message 10 of 14
(3,784 Views)