Jump to content
  • 0

My new Pmod ToF seems to be dead on arrival


ctkilian

Question

I am trying to get my new Pmod Tof board working with a Coridium processor board using their BASIC which has i2cin and i2cout instructions. So I am not using pre-written finterfacing software. But my first problem is that it seems to be drawing absolutely no current. Does that mean the board is defective, or would it draw no current if it simply is not being addressed properly?  The manual states its 7 bit address is  0x57, so I am sending oxae.    Is that right?

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Hi @ctkilian,

The module not drawing any current (I'm not sure how you are measuring this) is not necessarily a red flag since as per the datasheet of the onboard IC, https://www.renesas.com/eu/en/document/dst/isl29501-datasheet, it is only drawing at most 2.5 uA during sleep mode which the module is put into after a STOP condition after a Read command or after a write command has completed (page 13). By default, the module is primed to be going in free running mode (register 0x13 bit zero) but it requires a trigger (pulling the sample start, pin 2, from high to low) before this occurs (page 16).

As for addressing the module, sending 0xAE is correct if you want to do a write command (since write would put that last bit low); the module should respond with an ACK after receiving the chip address, though if you send a Stop condition from the host prior the completion of the data byte and the corresponding ACK from the Pmod, the Pmod ToF (or more specifically, the ISL29501) will reset itself back to sleep/standby mode.

Let me know if you have any questions.

Thanks,
JColvin

 

Link to comment
Share on other sites

  • 0

It is drawing a small amount of current (my power supply has a current meter), so it probably is "alive", and I can see on a scope that my software is sending the right address (ae) but I only get zeros from any register I try to read. At this point all my software does is send a high and then a low to the SS pin, and then go into a loop reading the 0xd1 register (presumably the "Distance Output").  Also, it never draws anything more than that minimum current. Are there any other "set up instructions" I need to be sending?

Link to comment
Share on other sites

  • 0

Hi @ctkilian,

I asked another engineer who was more familiar with the Pmod ToF about this and they reminded me that the embedded ISL29501 chip needs to be calibrated before any data is taken (which isn't very well explained in the datasheet that I linked earlier).

Digilent has some additional information on this Chip Initialization step within the documentation for the FPGA Hierarchical Block Library, https://digilent.com/reference/pmod/pmodtof/libraryuserguide#isl29501_-_time_of_flight_tof_integrated_circuit. Renesas also has information on this initialization and a mention that a set of registers need to be initialized before you can calibrate the module so you can properly take measurements in their Application Note here: https://www.renesas.com/us/en/document/apn/an1724-isl29501-firmware-routines.

After those registers are set up, you can then load the Digilent provided factory calibration that is stored in the EEPROM into the ISL29501. The reading of the EEPROM, described a bit more in the Library User Guide I linked, is a bit more involved, with several functions in the library Digilent facilitated to read the values and write them to the volatile ISL29501. The PmodToF_RestoreAllCalibsFromEPROM_Factory function starting on line 472 in the PmodToF C source file, https://github.com/Digilent/vivado-library/blob/hierarchies/hierarchies/PmodToF/sdk_sources/PmodToF/PmodToF.c, will probably be the most helpful to you in terms of determining all of the needed steps to get the factory calibration loaded.

Thanks,
JColvin

Link to comment
Share on other sites

  • 0

Happy New Year !  Thanks for your info, and I did get the Pmod Tof to  respond and give me distance data. But the output is not steady and that may be because I have not calibrated it yet.  So I have 2 questions: 1) The provided information says the "User calibration is 13 bytes, but it doesn't specify where, within the 16 EEPROM bytes, those 13 bytes are. I figured out that the first byte at 0x01 is the so-called "magic number" (whatever that means) so I assumed the 13 calibration bytes occupy the next 13 addresses, starting at 0x11. My second question has to do with the "Magnitude Calibration Procedure".  When I implement that procedure, I stop getting distance data out. And the problem appears to be that the data at 0xF6, 0xF7, 0xF8 is always 0. So, the question is, are those addresses correct, or am I doing something wrong. Probably the "Magnitude Calibration Procedure" is the only one of the 3 that I will be able to implement.

Thanks again for your help, Chris Kilian

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...