AD75019 16x16 crosspoint switch/multiplexer cannot communicate via SPI

HI guys!

I am trying desperately to get the AD75019 analog crosspoint switch to respond to bit vectors sent via SPI from a Uno and/or MEGA, but for the life of me I can not get it to do anything it should.

The datasheet is here:AD75019 Datasheet

My wiring is:
AD75019 pin : Function
1 : arduino pin 10 SS
2 : arduino pin 13 SPI CLK
3 : arduino pin 11 SPI MOSI
4 : -12v + 100nf cap to gnd
41 : +12v + 100nf cap to gnd
42 : +5v + 100nf cap to gnd
43 : GND
44 : not connected

My code simply sends a vector of 32 bytes, i.e. 256 bits, with all bits set to zero. This should turn off all the switches, but I measure the resistance across input X0,YO, i.e. AD75019 pins 15,31. The results are strange: sometimes I get 5Mohm, sometimes 30ohm...

If I send a vector of 255, i.e. all bits set, then I usually get 55ohm across any pair of inputs.

If I send a vector of 31 zeros, and a single one", it should connect X0,Y0, but this result nearly never occurs, sometimes, it may work once, but then on the next send, of 0s, then a single 1, fail.

I have tried various SPI clock frequencies from 5Mhz to 20Khz as per the data sheet. I have tired all combinations of polarity and phase, and the results seem to be random, but never as expected.

I feel that I must be missing something very simple, but for the life of me I don't see it

Would anyone have any thoughts?

Cheers,
Bob

My code simply sends a vector of 32 bytes, i.e. 256 bits, with all bits set to zero.

Why don't you show us that code?

The code is available here on my github.

Thanks for any thoughts!

Cheers,
Bob

The chip uses SPI mode 0 according to the datasheet.

Instead of measuring the resistance have you tried to apply a sinus wave to one of the pins and check with a scope what you get on connected and not connected pins? That's what the chips is made for.

@pylon

Thanks for your help!

I changed to spi mode zero and now get some new results, but still not good enough..

Sorry, I haven't checked the signal with a scope, yet. I'm still just measuring resistance between pins 15 and 32.

If I provide +/- 7.6v to the analog supplies, the following sequence of actions seems ok:

  • bits : resistance pin 15, pin 32
  • 0 : 0L
  • 1 : 143 - 165
  • 0 : 0L
  • all 1 : 27 ohm
  • 0 : 0L
  • 1 : 144 - 165 Ohm
  • 0 : 0L
    and repeats..

But, if I step up the analog range to +/- 11.35v, the chip seems to get stuck in all on:

  • bits : resistance pin 15, pin 32
  • 0 : 0L
  • 1 : 143 ohm
  • 0 : 0L
  • all 1 : 27 ohm
  • 0 : 27 ohm
  • 1 : 27 ohm
  • 0 : 27 ohm
    ... now way to get the switches to open again...

Any thoughts would be a great help!
Cheers,
Bob

I can only guess the reason for this result as I don't know how the chip is constructed. Probably the voltage your multimeter uses for resistance measurement is to low for the chip if the analog range is near +/- 12V. As I said, use a real signal and don't measure resistance, the chip is made for an analog signal and not for an Ohmmeter.

@pylon

I tried the chip with a signal generator and scope. The behavior is exactly the same and still incomprehensible.

With analog supply +/- 7.6v behavior is correct

With analog supply +/- 11.3v, the switches lock closed and will no longer open.

I am at a loss as to how to debug this...

Thanks for your help.
B

I am at a loss as to how to debug this...

Me too, I have no idea at the moment how to proceed. Sorry.