Hallo allemaal,
Ik ga binnenkort aan de slag met een (voor mij nieuwe) ADC van Analog Devices; de AD7738. Deze ga ik met een ARM Cortex-M3 processor van Luminary Micro uitlezen en besturen over de SPI-bus, zodra ik alle benodigde hardware binnen heb.
Leuk spul allemaal, maar ik zit alleen een beetje in de knoei met het communicatieprotocol. Het datablad staat op http://www.analog.com/static/imported-files/data_sheets/AD7738.pdf
Iedere handeling m.b.t. de ADC begint met het sturen van een 8-bit commando naar het communicatieregister op 00h, waarbij bit 6 aangeeft of het volgende commando een lees- of schrijfactie is. Bit 0 t/m 5 bepalen het adres waarop deze actie van toepassing is. Dat is helder, maar van de volgende zaken ben ik niet geheel zeker:
- Stel ik wil weten wat voor een meetwaarde is opgeslagen voor kanaal 0. Volgens het datablad zou ik dan register 08h moeten uitlezen. Dus ik stuur eerst commando 01001000 door om dit aan te geven, vervolgens zal ik dan 8 bits terugkrijgen van de ADC. De meetwaarde is echter 24 bits, moet ik nu nog tweemaal commando 01001000 sturen om de resterende 16 bits binnen te krijgen? Welke groep krijg ik dan als eerste binnen; de LSB's of de MSB's van het 24 bit getal?
- De ADC heeft een mode register waarmee je de kanalen kunt instellen. Het adres waar je naar toe schrijft bepaalt welk kanaal je daarna gaat instellen. Volgens het datablad zijn dit adressen 38 t/m 3F. Dit zijn er 8 en er zijn 8 kanalen, logisch. Op pagina 18 staat echter dat 38h alleen bedoeld is voor het uitlezen van het mode register. Nu neem ik aan dat je er ook naar toe mag schrijven, want anders heb ik 7 adressen om 8 kanalen te configureren?
Ik wil dit gezien de prijs van het ADC liever niet door trial-and-error bepalen. Wie wil met mij meedenken? Alvast bedankt.
Paul
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
Dank voor de reactie, blijkbaar klopte mijn vermoeden 
Alleen figuur 12 op pagina 23 blijft een raar geval. Volgens het bijschrift vindt hier continuous conversion en continuous read plaats van kanaal 0 en 1. De eerste 38h kan kloppen, hiermee stel je kanaal 0 in. Vervolgens wordt echter 48h in het mode register gezet en dat is vreemd. Binair is dit 01001000 en dit zou volgens het datablad het volgende betekenen:
- Single conversion mode?
- Master clock aan
- Dump mode aan
- Continuous read uit?
- 16 bit data
- clamp uit
Lijkt niet geheel overeen te komen met het bijschrift, of zie ik iets over het hoofd?
Paul