Post Go back to editing

ADum3150 Interface with Delayed Clock

Hi there,

I am trying to use the ADum3150 to try out SPI communication with an arduino. Now while it is working at lower speeds, I would like to go faster. The arduino has spi pins- CLK, MOSI,MISO and SS. How do I use the delayed clock option in this setup?

  • Hi rahul08,

    Before we get any further do you mind if I ask which Arduino variant you are using? There are a variety of boards that use various processors therefore have a wide range of capabilities so it would be helpful to know which one we are working with.

    Regards,
       Joseph Shim

  • Hi Joseph,

    I am using an Arduino Diecimila. You can find its homepage here

    http://www.arduino.cc/en/Main/arduinoBoardDiecimila

    Rahul

  • Hi Rahul

    So it seems like the main clock speed of the Diecimila is 16MHz. The ADuM3150 can support up to 17MHz SPI communication without the delayed clock mode. This means that the performance of your SPI system wont be improved by using the delayed clock operation.

    If you still wanted to implement this feature on the Arduino I'm not sure if this particular model will be able to handle this operation by itself. You could possible have an external shift register collect the MISO data with the dlyclk then the microcontroller read from it.

    Joe

  • Hi Joseph,

    I tried it without the delay clock and managed to get a maximum speed of 0.5 MHz. I got data corruption with speeds beyond it. I was collected data from an IMU ADIS16375. I could test it again and see if this is still the case.

    Yours Sincerely,

    Rahul

  • Huh that's pretty interesting. Do you mind sending me a couple of scope shots for me to look at? If possible at least the timing of the Side 1 SPI clk vs Side 1MISO data would be a good one.

    Also I checked out the datasheet of the part you are communicating with. I saw that while it can handle up to 15MHz SPI Clk its maximum sample rate is 2.465KSPS. On page 5 it states that it needs 2us of "stall period" between each data. Does your system happen to violate that by any chance?

    Joe

  • Hi Joseph,

    I actually didnt take into account the 2us delay. Thank you for that. I can certainly provide you some scope pictures only next week. Thank you for responding so patiently and quickly.

    Rahul

  • Hi Joseph,

    I was able to do another run with the setup and noticed that there are no issues if I am asking for a single set of data eg just x acceleration. But if I ask for more than 1 eg x and Y acceleration, then the data starts going weird (corrupt). Do you know why this would happen?

    I am putting a delay of 1milisecond between reading data. Note that this happens only at speeds above 0.5 MHz. I dont experience these problems at 0.5 MHz or below.

  • Hi Rahul,

    It might be interesting to know what the waveform looks like when it goes "corrupt". Using a logic analyzer or a scope to check the communication to see if there are any issues might be useful. Have you tried communicating with the chip directly by any chance? What is the reason for using an isolator for this particular application?

    Regards,

    Joe

  • Hi Joseph,

    I will try to post the scope pictures soon. I am using an isolator as we intend to use different systems with the IMU and using an isolator lets us use it without worrying about the power supply. I am presently using the Arduino as it is easy to prototype but intend to use some system using an ARM processor eventually.

    Rahul

  • Hi Joseph,

    I have attached the following links to the oscilloscope pictures.

    It looks like the IMU is responding correctly and the issue is with how I am reading it.

    The Product Id gives a constant value(0x3ff7) and the Temperature usually shows a value close to

    30 C.

    Dropbox - prod_id_temp_at_1_16.jpg  --> Product ID and Temperature Reading at 1MHz

    Dropbox - prod_id_temp_at_1_32.jpg  --> Product ID and Temperature Reading at 0.5 MHz

    Dropbox - temp_at_1_32.jpg --> Only Temperature Reading at 0.5 MHz

    Dropbox - temp_at_1_16.jpg  --> Only Temperature Reading at 1 MHz

    Dropbox - prod_id_at_1_16.jpg -- > Product ID Reading at 1 MHz