Forum: Mikrocontroller und Digitale Elektronik AT91SAM7x und ADS1271 über SPI


von Constantin C. (cvf)


Lesenswert?

Hallo Forum,

hat hier jemand Erfahrungen und Tipps in Bezug auf die Kombination von 
AT91SAM7X256 und ADS1271?

Ziel ist zwei ADC's (synchron sollen zwei Messwerte im high-resolution 
mode (24bit) erfasst werden) über die SPI Schnittstellen des µC 
auszulesen.

Meine Problematik ist hier den SPI-Master (µC) an die ADC's anzupassen. 
Genauer gesagt ist mir das Timing der ADC's etwas suspekt :-))

Gruß
constantin

von gerhard (Gast)


Lesenswert?

hallo constantin,
und welches timing ist dir "suspekt"?

gruss
gerhard

von Constantin C. (cvf)


Lesenswert?

Hallo Gerhard,

nun "suspekt" sollte etwas übertrieben sein; mir gehts um die 
Nachbildung des SPI Formats der ADC's welches der ATMEL erzeugen muss.
Angenommen CLK (Masterclock des ADC) und SCLK(Serial-out-Clock des ADC) 
mit 24MHz takte (laut Datenblatt möglich) erreiche ich damit eine hohe 
Samplerate mit ca. 47kSPS. Was auch mein Ziel eine hohe Samplerate bei 
hoher Auflösung wäre. Probleme machen die vielen unterschiedlichen 
Zeiten (min/max EIN-Zeit bis best. Flanke, min/max Pulsbreite, min/max 
AUS-Zeit bis best. Flanke usw.) die einzuhalten sind.
Kurz gesagt kommt es mir schwierig vor darin den Überblick zu behalten 
und habe gehofft das ich eventuell hier im Forum Tipp erhalten könnte.

gruß
constantin

von gerhard (Gast)


Lesenswert?

ich nehme an du beziehst dich auf das timing der spi schnittstelle.
da würde ich kein großes problem darin sehen. du muß tnur den richtigen 
spi mode (ich würde mal sagen das der adc mode 0 benötigt) einstellen.
um die volle geschwindigkeit des adc nutzen zu können wird es sinn 
machen die spi schnittstelle mittels pdc zu realisieren.

gruss
gerhard

von Constantin C. (cvf)


Lesenswert?

Hallo Gerhard,

hast recht, hab ich erst entdecken müsssen dass es eigentlich relativ 
einfach ist die SPI Schnittstelle zu nutzen; leider "reicht" die SPI 
Schnittstelle das ATMEL nicht aus; sie lässt nur max. 16bit zum Transfer 
zu. Das Datenwort vom ADC ist aber 24bit lang... wäre ärgerlich wenn man 
die letzten 8bit verlieren würde bzw. wenns überhaupt funktioniert).
Daher werd ich mich nun in PDC einlesen und meld mich dann sicherlich 
wieder :-)

gruß
constantin

von gerhard (Gast)


Lesenswert?

hallo constantin,
die pdc behandlung ist recht einfach.

die initialisierung könnte so aussehen:

// Port-Multiplexer für SPI-Schnittstelle konf.
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, ......);
// Clock auf SPI-Modul schalten
AT91F_SPI_CfgPMC();
// Mode einstellen:
// ist abh. von deiner hardware
AT91F_SPI_CfgMode(AT91C_BASE_SPI, ....);
// CS-Register init. (am besten 16bit breite einstellen
AT91F_SPI_CfgCs(AT91C_BASE_SPI,...);
// PDC öffnen
AT91F_PDC_Open(AT91C_BASE_PDC_SPI);
// SPI-Modul aktivieren
AT91F_SPI_Enable(AT91C_BASE_SPI);


für den empfang benötigts du einen entsprechende großen buffer.
um den empfang zu starten mußt du einen dummy-sendung starten.

zum empfangen folgende funktions-aufrufe:
// Empfangs-Buffer an PDC übergeben
AT91F_SPI_ReceiveFrame(AT91C_BASE_SPI,...);
// Sende-Buffer an PDC übergeben
AT91F_SPI_SendFrame(AT91C_BASE_SPI,...);


gruss
gerhard

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.