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
hallo constantin, und welches timing ist dir "suspekt"? gruss gerhard
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.