SPI werkt niet op dit PCB, waarom?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • J2S
  • Registratie: December 2003
  • Laatst online: 02:00
Op dit PCB werkt de SPI bus niet. Het is een expansion board voor de Raspberry Pi om de grondvochtigheid te meten en planten water te geven. Ik kan via de MCP23017 wel de solenoid kleppen en pomp aansturen, dus de i2c bus werkt wel.
De ADC werkt op 5V en comminuceert via een logic level converter met de 3.3v rPi. Als ik een meting doe krijg ik altijd de max waarde terug. Ik ben niet in het bezit van een oscilloscoop om te zien wat er nou echt op de datalijnen gebeurd.

Afbeeldingslocatie: https://raw.githubusercontent.com/Joost2S/kas-control/master/PCB/RevC/f.cu.png
Dit is mijn eerste custom PCB, en ik zou er erg blij mee zijn als de ADC zou werken.
...

Relevante software en hardware die ik gebruik
Hier kan je de Kicad files vinden.
ADC: MCP3208
Logic level converter: TXS0108E
rPi pinout. De Pi komt er ondersteboven op, dus deze pinout top/bottom mirroren.
...

Wat ik al gevonden of geprobeerd heb
De vorige revision van dit bord had een fout in de aansluiting van een paar SPI lijnen bij de logic level converter. Daar kreeg ik in eerste instantie errors, en toen ik dacht het gefixt te hebben kreeg ik telkens alleen maar een hoog signaal terug. Daarop heb ik deze revision laten maken welke datzelfde resultaat gaf.

Ik heb natuurlijk alle pinouts gechecked en daar heb ik niets gevonden. Maar ik kan een fout hebben gemaakt.

De software werkt gewoon op een prototyping board die ik heb gemaakt. En daar werkt de hardware dus ook gewoon.

Ik heb ook geprobeerd de transferrate van de SPI bus te verlagen, maar dat hielp ook niet.

Ik heb meerdere ADCs en rPi's geprobeerd.
...

Ik hoop dat jullie iets zien wat ik over het hoofd heb gezien. Andere kritiek op het ontwerp is ook zeker welkom :)

Mijn systeempjes ||_|| 50D + grip || EF-S 10-22mm f/3.5-4.5 USM; EF-S 17-55mm F/2.8 IS USM; EF 85mm F/1.8 USM

Beste antwoord (via J2S op 01-08-2017 21:04)


  • Jens01
  • Registratie: September 2011
  • Laatst online: 23:21
Problemen met level shifters zijn vrijwel altijd te herleiden naar niet kloppende voedingsspanningen. Als ik het PCB ontwerp zo bekijk klopt de footprint van je level shifter niet; zowel pin 1 als pin 20 van je level-shifter zijn een data-channel, geen voedingsspanning.

[ Voor 7% gewijzigd door Jens01 op 01-08-2017 20:57 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Ik denk dat je dit eerst los van je bordje moet testen:

1. test of je uberhaupt SPI op de Pi aan het werk kan krijgen (bijv. met een of andere oude SPI Flash chip van een moederbord)

2. test op een breadboard o.i.d. of je de SPI level converter kan laten werken met een SPI device daar achter dat van die andere levels gebruik maakt

Stel dat allebei lukt, dan kan je in elk geval met een multimeter ruwe metingen doen, bijvoorbeeld resistance, voltage en voltage drop (diode test mode) en vergelijken wat in je werkende setup anders is dan op je bord.

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Koop een logic analyzer. Als je dat vanaf ebay doet duurt het even en heb je er nu niks aan, maar echt waar, voor dat tientje die het kost is het een investering waar je zeker geen spijt van krijgt.

Wat je nog kan doen: Zet die pinnen als GPIO, en laat ze 1x per seconde togglen (individueel, om shorts uit te sluiten). Meet dan met je multimeter of je bij de pin van de ADC krijgt wat je verwacht.

En check sowieso zoveel mogelijk met een multimeter. Is de voeding naar die ADC bijvoorbeeld wel correct?

Acties:
  • 0 Henk 'm!

  • J2S
  • Registratie: December 2003
  • Laatst online: 02:00
@johnkeates Ik heb de Pi al wel getest op een anders systeem met deze zelfde chips. De SPI van de Pi werkt gewoon. En deze chips kunnen dus ook prima samen werken.
Ook een andere pi op dit systeem getest, werkt ook niet.

@Sissors Ik zal de pinnen als GPIO proberen, goede tip.

Mijn systeempjes ||_|| 50D + grip || EF-S 10-22mm f/3.5-4.5 USM; EF-S 17-55mm F/2.8 IS USM; EF 85mm F/1.8 USM


Acties:
  • 0 Henk 'm!

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Als je een werkende setup hebt, dan kan je dus meteen al gaan meten.

Acties:
  • 0 Henk 'm!

  • J2S
  • Registratie: December 2003
  • Laatst online: 02:00
@Sissors Ik heb net wat metingen verricht en tot zover heb ik het volgende gevonden:
De CS0 pin (pin 8 ) blijft aan de Pi kant halverwege steken (1.6v) als ik em aansluit en als GPIO pin gebruik. Als ik de pin los haal gaat ie telkens tussen 0 en 3.3v schakelen. Dit doet ie ongeacht of ik em aan of uit doe in python.

1.6v is blijkbaar genoeg om de logic level converter aan te doen, dus de CS0 pin bij de chip staat constant op ~4.5v net als de andere pinnen als ze aan zijn. Er staat wel gewoon ~5v op de ADC power pinnen.

Als ik de Pi reboot (dus zonder stroom eraf te halen) met de CS0 pin eruit dan werkt ie als pin 8 wel correct. En dan sluit ik de pin weer aan, gaat ie terug naar het foutieve gedrag.
De andere pinnen, SCLK, MISO, MOSI werken gewoon prima ongeacht of ze zijn aangesloten of niet. In elk geval als ze als GPIO worden aangestuurd. Ik heb dit allemaal getest met de ADC verwijderd. Jeej sockets :)

Ik heb alleen geen flauw idee hoe dit komt en te verhelpen is :?

Edit: Ik heb ook alle pinnen gebuzzed en kon geen enkele kortsluiting vinden.

[ Voor 3% gewijzigd door J2S op 28-07-2017 19:31 ]

Mijn systeempjes ||_|| 50D + grip || EF-S 10-22mm f/3.5-4.5 USM; EF-S 17-55mm F/2.8 IS USM; EF 85mm F/1.8 USM


Acties:
  • 0 Henk 'm!

Verwijderd

Klinkt als een ontbrekende pullup of pulldown op een floatende uit/ingang?

[ Voor 4% gewijzigd door Verwijderd op 28-07-2017 20:59 ]


Acties:
  • 0 Henk 'm!

  • J2S
  • Registratie: December 2003
  • Laatst online: 02:00
Okee. De CS pin is standaard hoog, en wordt laag getrokken als de chip wordt aangesproken voor zover ik het protocol begrijp. Zal het werken als ik een 10k weerstand tussen de CS pin en 3.3v plaats of ga ik dan dingen kapot maken?

Mijn systeempjes ||_|| 50D + grip || EF-S 10-22mm f/3.5-4.5 USM; EF-S 17-55mm F/2.8 IS USM; EF 85mm F/1.8 USM


Acties:
  • 0 Henk 'm!

Verwijderd

Controleer ff of er geen ingebouwde pullup of pulldown aanwezig is die je softwarematig kunt instellen.

Ik heb nog niet gekeken naar wat je exact gebruikt en of dat pullup of pulldown zou moeten zijn, dit kun je doorgaans wel vinden in het datasheet van hetgeen waar die CS pin aanzit.

Acties:
  • 0 Henk 'm!

  • Flake
  • Registratie: Februari 2001
  • Laatst online: 01-11-2024
Heb je een schema? Kun je de traces highlighten die jouw SPI bus vormen?

Acties:
  • 0 Henk 'm!

  • J2S
  • Registratie: December 2003
  • Laatst online: 02:00
Ik heb in de OP een link naar de Kicad bestanden.

De Raspberry Pi heeft wel ingebouwde pullup en down resistors, maar die werken alleen op inputs. Lijkt mij dat een hardwarematige oplossing vereist is?

[ Voor 61% gewijzigd door J2S op 29-07-2017 15:52 ]

Mijn systeempjes ||_|| 50D + grip || EF-S 10-22mm f/3.5-4.5 USM; EF-S 17-55mm F/2.8 IS USM; EF 85mm F/1.8 USM


Acties:
  • 0 Henk 'm!

  • J2S
  • Registratie: December 2003
  • Laatst online: 02:00
Ik heb nog wat verder getest en ik snap er echt helemaal niets meer van. Ik heb in eerste instantie een 10k weerstand tussen CS0 en 3.3v gedaan. Daarmee veranderde niets, dus heb ik de weerstand aan de GND verbonden ipv 3.3v. Het resultaat was toen 1.6v op de lijn, tenzij ik een van de andere pinnen gebruik. Dan is het 1.8v. En 3.3v als de pin zelf aan gaat.
Toen een extra 1k weerstand in de lijn zelf gezet, met daar achter 10k richting GND. Het resultaat was toen 2.6v bij de voltage converter. En ongeveer 80mV op de lijn bij de Pi. Waar komt die 2.6v vandaan?
Overigens hetzelfde resultaat als ik de 10k weerstand vóór de 1k weerstand plaats.

Het lijkt bijna of er ergens anders nog stroom vandaan komt, maar de trace is direct tussen de Pi aansluiting en de voltage converter. En er is niets aan de andere kant van de converter aangesloten.

Mijn systeempjes ||_|| 50D + grip || EF-S 10-22mm f/3.5-4.5 USM; EF-S 17-55mm F/2.8 IS USM; EF 85mm F/1.8 USM


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Jens01
  • Registratie: September 2011
  • Laatst online: 23:21
Problemen met level shifters zijn vrijwel altijd te herleiden naar niet kloppende voedingsspanningen. Als ik het PCB ontwerp zo bekijk klopt de footprint van je level shifter niet; zowel pin 1 als pin 20 van je level-shifter zijn een data-channel, geen voedingsspanning.

[ Voor 7% gewijzigd door Jens01 op 01-08-2017 20:57 ]


Acties:
  • 0 Henk 'm!

  • J2S
  • Registratie: December 2003
  • Laatst online: 02:00
@Jens01 Ah, dat is het ja. Ik heb voorheen telkens geassembleerde shifters gebruikt, en die hebben een andere pinout. Ik had verwacht dat de pinout van de chip hetzelfde was. Bedankt voor het opletten :)

Mijn systeempjes ||_|| 50D + grip || EF-S 10-22mm f/3.5-4.5 USM; EF-S 17-55mm F/2.8 IS USM; EF 85mm F/1.8 USM

Pagina: 1