Oke, ik heb even een verse blik nodig... Ik ben bezig met een Battery Management System (BMS) op basis van de LTC6811. Een Raspberry Pi babbelt SPI met een LTC6820. Deze zet de gebruikelijke SPI signalen om naar een isoSPI signaal dat via een signaaltransformator naar de LTC6811 gaat (deze kan dat eventueel weer doorgeven aan andere LTC6811's als ik meer dan 12 cellen heb.
Om een lang verhaal kort te maken: De LTC6820 reageert zoals verwacht. De SPI signaleen gaan er in en de isoSPI signalen komen er uit met je juiste fase, voldoende amplitude en lengtes rond de waardes die kloppen volgens de datasheet). Beginnend met de wakeuppuls.
De LTC6811 reageert op de wakeuppuls. Hij schakelt zijn DRIVE pin in zodat een transistor 5v gaat produceren waarmee de 6811 voeding krijgt. Op de Ibias pin komt 2V te staan voor de voeding van het isoSPI drivercircuit en ook als voeding voor een spanningsdeler die het schakelniveau voor de comperator die de isoSPI signalen ontvangt.
Afgezien van dat reageert de LTC6811 verder helemaal niet. Ik stuur:
CMD 0b0000000000000010)
PEC 0b10101100001010)
Dus in bytevorm en volgorde van versturen: 0x00, 0x02, 0x2B, 0x0A, (met hierna nog 8 bytes aan 0'en om de te ontvangen gegevens binnen te halen)
Dit zou het commando en bijbehorende pec moeten zijn waarmee ik registergroep A zou moeten terugkrijgen. De MISO blijft echter continue 1.
Als ik de isoSPI op de scope bekijk die ik de pulsen van de 6820 netjes vertrekken maar de 6811 reageert totaal niet. (terwijl hij dus wel zn voeding en Ibias aan zet. Dus het wakeupsignaal komt echt 100% zeker binnen).
Ik heb gecontroleerd:
- De polariteit van het isoSPI signaal zowel voor als achter de scheidingstrafo.
- De amplitude van het isoSPI signaal voor en achter de trafo.
- De lengte van zowel de eerste als de tweede helft van de golf (differentieel signaal, fase bepaald of het een 1 of een 0 is).
- Aansluitingen (waardes van weerstandsdeler, beide kanten zijn aangesloten en de aftakking komt ook tot op de pin van de chip, geen kortsluiting tussen de akelig kleine pinnen, etc)
- Andere commando's waarmee ik gegevens terug zou moeten krijgen (zelfde verhaal)
- De tijd tussen het laag maken van CS (wat de wakeuppuls stuurt) en het daadwerkelijk communiceren, dit heb ik de minimale wakeuptime van 200us, de maximale van 400us, de gemiddelde van 300us, en zelfs 1000us geprobeerd. Geen enkel verschil. Zelfs twee wakeup pulsen achter elkaar... same story.
- De volgorde van de bytes die ik richting de chips stuur.
- De PEC (in de datasheet staat de berekening en 1 voorbeeld, online heb ik nog een ander voorbeeld gevonden, in beide gevallen komen mijn uitkomst overeen. Dus dat zou moeten kloppen.
Het solderen heeft even moeite gekost, dus ik kan me voorstellen dat ik de chip simpelweg geroosterd heb. Maar het vreemde vind ik dat de chip overduidelijk reageert. Dus aansluitingen en signaal zou alleen op basis daarvan al goed moeten zijn. Maar toch krijg ik geen enkel signaal terug.
Ik ben even door m'n ideeen heen... Heeft iemand de gouden tip voor mij?
Alvast bedankt!
Daan