Forum: Mikrocontroller und Digitale Elektronik PIC32MX und UART2


von Robi (Gast)


Lesenswert?

Kann mir jemand kurz ein Anfänger-Hilfe für den PIC32MX geben?
Ich habe UART1 des PIC32MX am Laufen und möchte jetzt auch
UART2 benutzen.

UART1 war einfach:
OpenUART1 und diverse WriteUART1

UART2 ist (soweit ich gesehen habe fest) mit RF12 und RF13 verschaltet.
Also selbiges für UART2:
OpenUART2 und diverse WriteUART2

Aber es kommt nichts am TX raus.
Ich vermute, dass der Mode auf GPIO steht und erst auf
Mode UART umgestellt werden muss. Bei UART1 war dies scheinbar
automatisch bereits richtig (Default-Einstellungen?).

        // Initialize RF12 and RF13
        mPORTFSetBits(BIT_12);
        mPORTFSetBits(BIT_13);
        mPORTFSetPinsDigitalOut(BIT_12);
        mPORTFSetPinsDigitalOut(BIT_13);

        OpenUART2(UART_EN, UART_RX_ENABLE | UART_TX_ENABLE, 
(GetPeripheralClock()/16/9600)-1);

        while(1) {
            unsigned long w;
            mPORTFSetBits(BIT_12);
            mPORTFClearBits(BIT_13);
            for(w = 0; w < 1000000; w++);
            mPORTFSetBits(BIT_13);
            mPORTFClearBits(BIT_12);
            for(w = 0; w < 1000000; w++);
        }

Durch diesen Code blinken die Ausgänge, also werden
beide als GPIO (und Ausgang) und nicht als UART RX/TX benutzt.

Gibt es da ein plib-Makro oder plib-Funktion?
Oder welches Register müsste ich mit welchem Wert füllen?

von Robi (Gast)


Lesenswert?

Ok, gelöst.

RF12/RF13 ist nicht UART2, sondern UART5.
Er wird in der Software als UART2B angesprochen.

OpenUARTx gibt es nur für UART1 und UART2, nicht für UART2B,
muss man also entweder auf Register-Basis ansprechen
oder z.B. via

UARTConfigure(UART2B, UART_ENABLE_PINS_TX_RX_ONLY);
UARTSetLineControl(UART2B, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | 
UART_STOP_BITS_1);
UARTSetDataRate(UART2B, GetPeripheralClock(), 9600);
UARTEnable(UART2B, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | 
UART_TX));

UARTSendDataByte(UART2B, 'A');

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.