www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP BF533 EZ-Kit: UART DMA problem


Autor: insecuritate (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich möchte mittels UART DMA zwischen PC und EZ-Kit Daten austauschen.
Im Folgenden die Initialisierung der DMA-Register (siehe Code). tx_buf 
enthält die zu sendenden Daten, in rx_buf sollen die empfangenen Werte 
abgelegt werden:

unsigned char tx_buf[BUFLEN];
unsigned char rx_buf[BUFLEN];

void init_dma_tx (void)
{
*pDMA7_CONFIG = 0x1080;
*pDMA7_PERIPHERAL_MAP = 0x7000;
*pDMA7_X_COUNT = BUFLEN;
*pDMA7_X_MODIFY = 0x01;
*pDMA7_START_ADDR = (void*)&tx_buf;
asm("ssync;");
}

void init_dma_rx (void)
{
*pDMA6_CONFIG = 0x1082;
*pDMA6_PERIPHERAL_MAP = 0x6000;
*pDMA6_X_COUNT = BUFLEN;
*pDMA6_X_MODIFY = 0x01;
*pDMA6_START_ADDR = (void*)&rx_buf;
asm("ssync;");
}

Die entsprechenden UART-Einstellungen (Datenformat, TX und RX-Interrupt) 
hab ich vorgenommen.

Was funktioniert, ist die Empfangsroutine. D.h. ich sende einen Wert, 
und dieser wird auf rx_buf[0] abgelegt, DMA6_CURR_ADDR wird entsprechend 
erhöht, so dass der nächste Wert an rx_buf[1] kommt.

Nun zum Problem:

Obwohl ich keine Daten lese, inkrementiert sich der Counter 
DMA7_CURR_ADDR selbstständig, d.h. er zeigt ständig auf einen anderen 
Wert in tx_buf.
Das Lesen an sich funktioniert, ich kann Werte aus tx_buf lesen, Problem 
ist nur, dass duch die "verselbstständigung" des Counters jeglicher 
Bezug verloren geht: Erstes lesen bringt tx_buf[3], das nächste lesen 
einen wahllosen anderen Wert.

Mein Ziel ist es aber, die Werte schrittweise in geordneter Reihenfolge 
vom Index 0 an auszulesen.

Jemand eine Idee, wo mein Fehler liegt?!

Autor: GISMO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du hast doch bestimmt VisualDSP++ oder? so einfach ist es mit dem 
Blackfin nicht. Wo hast du denn die UART inititialsiert(z.B Baudrate 
usw.) ich empfehle dir das Beispiel von VisaualDSP++ an zugucken. 
ADSP-BF561

Autor: insecuritate (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie gesagt, uart & pll hab ich initialisiert, funktioniert auch alles 
(code siehe unten) - auch im polling betrieb funktioniert die uart 
bestens. selbst im dma-modus funktioniert das schreiben. nur eben beim 
TX-DMA verstehe ich nicht, warum sich DMA_CURR_ADDR automatisch erhöht, 
ohne dass ich irgendetwas lese...

Code:
void init_pll (void)
{
  asm
  ("  CLI R0;\
    P1.L=0x0;\
    P1.H=0xFFC0;\
    R1.L=0x2C00;\
    W[P1]=R1.L;\
    IDLE;\
    STI R0;\
  ");

  *pPLL_DIV = 0x0005;    // CSEL=00=VCO/1 ; SSEL=0101=VCO/5
}

void init_uart (void)
{
  *pUART_LCR = 0x0080;     // DLAB setzen
  *pUART_DLL = 0x0040;     // Baud = 115,2k
  *pUART_DLH = 0x0000;     // Baud = 115,2k
  *pUART_LCR = 0x0000;     // DLAB löschen
  *pUART_LCR = 0x0003;     // 8 Bit, 1 Stopbit, no parity
  *pUART_GCTL= 0x0001;     // UART clock aktivieren
}

Autor: Hippo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab genau die selbe Probleme, hast du es gelöst. An was lags denn?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.