mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR32 EVK1100 freie Zuordnung Peripherie <-> GPIO


Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich unternehme gerade die ersten Schritte dem AVR32 UC3A0512A auf einem 
EVK1100 und hier mit der USART-Funktionalität. Die Ausgabe funktioniert 
mit den Funktionen des SW-Frameworks auch problemlos, auch wenn man die 
Buchse direkt am Testpad auf PA00/PA01 anlötet und zwei Geräte ohne MAX 
koppelt. Aus Interesse, und weil es uns im Bezug auf andere 
Peripheriebausteine evtl. noch extrem nützlich sein könnte, habe ich 
versucht,  für RX/TX anstelle der Standardpins PA00/01 die Pins PA29/30 
(normalerweise TWI) zu verwenden und die USART_PINs in der 
Initialisierung entsprechend zu überschreiben. Dies funktioniert jedoch 
leider nicht. Deshalb die grundsätzliche Frage: Ist es möglich, beim UC3 
die Peripheriefunktionen an beliebige IO-Ports zu binden? Die 
Busstruktur im Blockdiagramm des Datenblattes (p.5) sowie die 
Ausführungen über Peripheral Multiplexing im GPIO-Kapitel lassen diesen 
Schluss zu. Oder übersehe ich da etwas?


Vielen Dank, viele Grüße

Johannes

Autor: Matthias J. (maja)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Johannes,

ich weiß nicht ob ich dich richtig verstehe, aber der Gedankengang dass 
du JEDEM Pin eine beliebige Peripherie zuweisen kannst ist falsch!

Schau dir den Abschnitt "Peripheral Multiplexing on I/O lines" auf Seite 
45 des Datenblatt an. Du kannst jedem Pin nur eine der 3 angegebenen 
Funktionen (A,B,C) zuweisen.

Also im Fall von PA00 und PA01 liefert Funktion A das gewünschte 
Ergebnis (Rx und Tx von UART0). Alternativ könntest du aber auch PX00 
und PX01 in der Funktion B verwenden.

Die Zuweisung der Pins geschieht mit Hilfe der GPIO maps. Die können zum 
Beispiel so aussehen:

[c]
static const gpio_map_t USART_GPIO_MAP =
{
  {RX_PIN, RX_FUNCTION},
  {TX_PIN, TX_FUNCTION}
};
[\c]

Mit
RX_PIN = AVR32_PIN_PA05
TX_PIN = AVR32_PIN_PA06
RX_FUNCTION = 0
TX_FUNCTION = 0

kannst du zum Beispiel RX und TX des UART1 aktivieren.
(Funktion A=0, B=1, C=2)

Hoffe ich konnte dir etwas weiterhelfen.
Grüße, matthias

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nope, nicht beliebig, siehe "12.7 Peripheral Multiplexing on I/O lines".

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank, jetzt sehe ich klarer.

Viele Grüße,
Johannes

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.