ARM: SSC beim AT91SAM7S reagiert nicht wie gedacht

OP #1228542
Lesenswert?

Hallo,

ich spiele gerade eine wenig mit dem SSC und einem Stereo-Codec herum. 
Der Codec ist dabei der Master. TF und TK sehen auch gut aus, aber was 
auf TD kommt, passt irgendwie nicht zu dem was ins THR geschrieben wird 
(ich schreibe direkt in das Register, also kein PDC).

Das ist der Teil, der die Werte ausgibt. out_val ist ein unsigned short 
int mit wechselnden Werten.
1
while(!pSSC->SSC_SR & AT91C_SSC_TXRDY);
2
pSSC->SSC_THR = out_val;
3
    
4
while(!pSSC->SSC_SR & AT91C_SSC_TXRDY);
5
pSSC->SSC_THR = 0x00;
6
    
7
while(!pSSC->SSC_SR & AT91C_SSC_TXRDY);
8
pSSC->SSC_THR = out_val;

Der SSC ist folgendermaßen eingestellt:
1
pSSC->SSC_TCMR = AT91C_SSC_CKS_RK |    
2
    AT91C_SSC_START_EDGE_RF |
3
    (1 << 16);      // STTDLY = 1
4
                            
5
pSSC->SSC_TFMR = (15) |            // 16 bit word length
6
        (0 << 8) |        // 1 word per frame
7
        AT91C_SSC_MSBF;    // MSB first

Erwartet hätte ich an dieser Stelle, das ich 3 Frames sehe, von denen 
der erste und letzte identische Werte enthalten. Der mittlere Frame 
müsste die 0 enthalten. Stattdessen sieht TD so aus, wie in der 
angehängten Datei.
Irgendwie fehlt da der Frame mit der 0 in der Mitte. Mir ist natürlich 
klar, dass das keine sinnvolle Ausgabe für den Codec ist, es geht nur um 
das grundsätzliche Verständnis. Ich habe dazu aber irgendwie keine 
intelligente Idee mehr. Oder läuft das nur mit dem PDC ordentlich?

Viele Grüsse,
Daniel
Angehängte Dateien:
#1420177
Lesenswert?

Hallo Daniel,
ich probiere auch gerade, die SSC Schnittstelle als Slave zu bedienen.
Ich versuche zyklisch mit einem externen Clock Daten aus dem µC 
auszulesen.

Mein Problem ist, dass die Daten erst ab der dritten Flanke des Clocks 
zur Verfügung stehen.

Wenn ich aber das Start Event im Transmit Clock Mode Register auf 
Continuous stelle, müssten doch ab der ersten Flanke die Daten 
ausgetaktet werden oder?

Ich habe auch schon versucht, den Start Event mit dem TF Signal zu 
erzeugen.
Kann es sein, dass wenn ich mit einem externen Clock arbeite das TF 
Signal nicht zur Verfügung steht? Denn nach Initialisierung bleibt das 
TF Signal auf Dauer "high".

Grüße

Thomas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren