Felsökning kretskort
Postat: 9 mars 2021, 18:31:37
Hej!
Har ett kretskort med en ADC (ADS8688) som kommunicerar via SPI (~16MHz) med sin värd. Värden är en Raspberry Pi för tillfället, eftersom det är enklast.
En tidigare prototyp av kortet har fungerat bra och väldigt få förändringar är gjorda, ffa till signallinjerna. Jag hade ursprungligen 10k motstånd (pull-up respektive -down) för att "styva upp" signalerna men insåg att de flesta av dessa var onödiga så nu har jag enbart pull-ups på CS linjen och på en RESET linje eftersom båda är höga i sitt passiva läge.
Ursprungligen slet jag mitt hår då inget verkar fungera. Frustrationen var stor
Det primära problemet är att SDO linjen inte fungerar. Eller fungerar sporadiskt.
Har nu testat koppla upp en signal mot kortet och märker att då man trycker i närheten av SDO (data ut) linjen på kortet så får man tillfälligtvis riktiga och rimliga data från ADC:n. Problemet är att det är oerhört svårt att lokalisera exakt var på kortet man skall trycka för att få det att fungera. Det är trots allt ett ganska stort område på kortet som verkar vara tryckkänsligt. Dock verkar det vara känsligt för just tryck. Bara av att man lägger tummen på kortet händer inget. Det märkligaste av allt är att kontinuitetstestaren på min DMM säger att alla linjer är hela från chippets pin till kontaktens pin.
I bilden nedan är blå trace CS och röd SDO. Notera de två spikarna
I bilden nedan är timebase ändrad men den visar en något smutsig signal som dock har räckt till för att kortet nominellt skall fungera och ge önskat data.
Det är tre (kanske fyra) förklaringar jag kan tänka mig varav jag skulle sätta pengarna på den första.
1. Jag tänker primärt att en signallinje ändå är trasig. När man trycker på kortet (oftast kring SDO linjens sträckning) böjs det och skjuter ihop linjen så att allt tillfälligt fungerar. Tänker mig att spikarna i oscillogrammet överst är kapacitiv överledning i en sprucken signalbana.
2. Jag är också orolig för att jag överhettade chippet eftersom det tog längre att löda än vad det brukar.
3. SDO linjen går på bakplanet under alla andra SPI linjer. Kan det vara någon kapacitiv/induktiv effekt mellan banorna? Jag har två 6-pin XH kontakter (syns i botten) för att göra daisy-chaining lättare. I den förra versionen av kortet hade jag 2 chip på ett kort sammankopplade enligt daisy-chaining konfiguration.
Ovan är bara RST_PD, CS och DAISY motstånden installerade.
(4. Kan chippets SDO pin vara av inne i chippet så att det fungerar av samma orsakt som i punk1?)
Min egentliga fråga: Tänker jag rätt eller skall jag felsöka på annat ställe? Jag skall beställa en 3:e version av kortet med ytterligare förbättringar men det vill jag ju inte göra innan jag är hyffsat säker på att det är ett produktionsfel i just det här exemplaret och inte ett fel i mina bandragningar.
Mvh,
Staffan Höstman
Har ett kretskort med en ADC (ADS8688) som kommunicerar via SPI (~16MHz) med sin värd. Värden är en Raspberry Pi för tillfället, eftersom det är enklast.
En tidigare prototyp av kortet har fungerat bra och väldigt få förändringar är gjorda, ffa till signallinjerna. Jag hade ursprungligen 10k motstånd (pull-up respektive -down) för att "styva upp" signalerna men insåg att de flesta av dessa var onödiga så nu har jag enbart pull-ups på CS linjen och på en RESET linje eftersom båda är höga i sitt passiva läge.
Ursprungligen slet jag mitt hår då inget verkar fungera. Frustrationen var stor

Har nu testat koppla upp en signal mot kortet och märker att då man trycker i närheten av SDO (data ut) linjen på kortet så får man tillfälligtvis riktiga och rimliga data från ADC:n. Problemet är att det är oerhört svårt att lokalisera exakt var på kortet man skall trycka för att få det att fungera. Det är trots allt ett ganska stort område på kortet som verkar vara tryckkänsligt. Dock verkar det vara känsligt för just tryck. Bara av att man lägger tummen på kortet händer inget. Det märkligaste av allt är att kontinuitetstestaren på min DMM säger att alla linjer är hela från chippets pin till kontaktens pin.
I bilden nedan är blå trace CS och röd SDO. Notera de två spikarna
I bilden nedan är timebase ändrad men den visar en något smutsig signal som dock har räckt till för att kortet nominellt skall fungera och ge önskat data.
Det är tre (kanske fyra) förklaringar jag kan tänka mig varav jag skulle sätta pengarna på den första.
1. Jag tänker primärt att en signallinje ändå är trasig. När man trycker på kortet (oftast kring SDO linjens sträckning) böjs det och skjuter ihop linjen så att allt tillfälligt fungerar. Tänker mig att spikarna i oscillogrammet överst är kapacitiv överledning i en sprucken signalbana.
2. Jag är också orolig för att jag överhettade chippet eftersom det tog längre att löda än vad det brukar.
3. SDO linjen går på bakplanet under alla andra SPI linjer. Kan det vara någon kapacitiv/induktiv effekt mellan banorna? Jag har två 6-pin XH kontakter (syns i botten) för att göra daisy-chaining lättare. I den förra versionen av kortet hade jag 2 chip på ett kort sammankopplade enligt daisy-chaining konfiguration.
Ovan är bara RST_PD, CS och DAISY motstånden installerade.
(4. Kan chippets SDO pin vara av inne i chippet så att det fungerar av samma orsakt som i punk1?)
Min egentliga fråga: Tänker jag rätt eller skall jag felsöka på annat ställe? Jag skall beställa en 3:e version av kortet med ytterligare förbättringar men det vill jag ju inte göra innan jag är hyffsat säker på att det är ett produktionsfel i just det här exemplaret och inte ett fel i mina bandragningar.
Mvh,
Staffan Höstman