2
\$\begingroup\$

running out of things to check with this problem I'm having.

I designed a board around the Teensy 3.6 microprocessor, and I wanted to connect a DAC8568 chip to it for some analog outputs. It works over SPI, and I have verified that it does "work".

HOWEVER it only works when I have an oscilloscope probe on the SCK line!

Schematic 1 Schematic 2

Here are two images to my schematic. I am using SPI1 interface, as SPI0 is being used for communication with a CANFD controller. I have verified that I get a clock output, I get a chip select, and data "flows".

Board Layout 1 Board Layout 2

Here is two pictures of my PCB layout. The second image shows the two lines. The top one being the SCK1 net, and the bottom being the MOSI1 net.

Like I said, the device seems to only work when I put an oscilloscope probe on SCK1 (on powerup), and if I take it off, it continues to work. The probe is 8pF, 10MOhm.

CODE

NOTES: 9.2.1 says MSB first 7.3 shows that I should be getting data on the falling clock edge. For this reason I chose SPI Mode 1 (CPOL 0, CPHA 1). Just for kicks I tried with all the other SPI modes (0, 2, 3) and none worked.

Any idea what might be causing this?? I will continue trying to debug, but I would appreciate any help possible!! Thanks :)

\$\endgroup\$
  • \$\begingroup\$ un-probing, continues to work suggests an initialization problem. At some (early) time after power-up, the SPI is initialized - perhaps an "extra" clock is seen or missed. Try various delays after power-up. \$\endgroup\$ – glen_geek Aug 15 '19 at 15:23
  • 1
    \$\begingroup\$ Sometimes, adding a tiny capacitance to ground on the clock line will get rid of spurious edges and high-frequency garbage. Try 15pF, likely the same as your scope probe. Not exactly "ideal" but can point you in the right direction for a real solution. \$\endgroup\$ – rdtsc Aug 15 '19 at 16:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.