Forum: Mikrocontroller und Digitale Elektronik USART TX,RX AUF PINS ?


von Lukas (Gast)


Lesenswert?

Hallo,

ich bin ein Neuling und habe leider noch nicht so viel Erfahrung.

Ich wollte meine USART Verbindung nicht über ein NullModem Kabel 
realisieren sondern über zwei Pins auf dem Board.

Leider weiss ich nicht ob das möglich ist oder wie ich das angehen soll 
aber die normaler USART Verbindung habe ich hin bekommen.

Ich besitze einen STM3210e-Eval board mit einem STM32F103ZG ARM 
Prozessor und arbeite in der Keil Umgebung

1
  //enable bus clocks
2
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO , ENABLE); // enable USART system clock
3
  
4
  /* Enable the USART1 Interrupt */
5
  NVIC_InitStructure->NVIC_IRQChannel = USART1_IRQn;            //  configure the USART1 interrupts
6
  NVIC_InitStructure->NVIC_IRQChannelPreemptionPriority = 0;   //  sets the priority group of the USART1 interrupts
7
  NVIC_InitStructure->NVIC_IRQChannelSubPriority = 0;          //  set the subpriority inside the group
8
  NVIC_InitStructure->NVIC_IRQChannelCmd = ENABLE;              //  USART1 interrupts are globally enabled
9
  NVIC_Init(NVIC_InitStructure);                              //  properties are passed to the NVIC_Init function which takes care of the low level stuff
10
11
  
12
  /* Configure USART1 Tx as alternate function push-pull */
13
  GPIO_InitStructure->GPIO_Pin = GPIO_Pin_9;
14
  GPIO_InitStructure->GPIO_Speed = GPIO_Speed_50MHz;
15
  GPIO_InitStructure->GPIO_Mode = GPIO_Mode_AF_PP;
16
  GPIO_Init(GPIOA, GPIO_InitStructure);
17
  
18
  /* Configure USART1 Rx as input floating */
19
  GPIO_InitStructure->GPIO_Pin = GPIO_Pin_10;
20
  GPIO_InitStructure->GPIO_Mode = GPIO_Mode_IN_FLOATING;
21
  GPIO_Init(GPIOA, GPIO_InitStructure);
22
  
23
  
24
  
25
  USART_InitStructure->USART_BaudRate = 9600;
26
  USART_InitStructure->USART_WordLength = USART_WordLength_8b;
27
  USART_InitStructure->USART_StopBits = USART_StopBits_1;
28
  USART_InitStructure->USART_Parity = USART_Parity_No;
29
  USART_InitStructure->USART_HardwareFlowControl = USART_HardwareFlowControl_None;
30
  USART_InitStructure->USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
31
  /* Configurating and enabling USART1 */ 
32
  USART_Init(USART1, USART_InitStructure); 
33
34
35
  
36
  USART_Cmd(USART1, ENABLE);
37
  
38
   /* Enable the USART1 Receive interrupt: this interrupt is generated when the
39
                 USART1 receive data register is not empty */
40
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
41
}

von Maxx (Gast)


Lesenswert?

Lukas schrieb:
> Leider weiss ich nicht ob das möglich ist oder wie ich das angehen soll
> aber die normaler USART Verbindung habe ich hin bekommen.

Was ist eine normale USART Verbindung? UART mit 9600,8,n,1 u.Ä. oder
USRT wie z.B. SPI?

Wenn aber deine Verbindung über ein vorkonfektioniertes Kabel 
funktioniert, dann funktioniert es auch, wenn du Stecker und Draht 
selber konfektionierst (aka Stiftleiste und Steckbrücken)

Dafür muss die SW nicht angepasst werden.

von Lukas (Gast)


Lesenswert?

Ist wie UART , nur das S steht für synchron .


Ahh super dachte ich müsste das noch per Software anpassen :)

von Karl H. (kbuchegg)


Lesenswert?

Mir ist ehrlich gesagt nicht wirklich klar, wonach du fragst.

Du wirst ja wohl doch nicht danach fragen, ob du anstelle eines fertigen 
Null-Modem Kabels an einer Standard-Buchse auch ein paar Drähte nehmen 
kannst, die du an die Leitungen anschliesst die normalerweise zur Buchse 
führen.

Ich denke, da steckt noch etwas mehr dahinter. Was hat es mit diesen 
Rx/Tx Anschlüssen auf sich? Kann es sein, dass die im Signalweg an der 
Stelle sitzen, an der noch die Pegel von der CPU drauf liegen. Also ehe 
dann die Signale in einen MAX232 gehen, der sie invertiert und auf RS232 
Norm-Pegel bringt?

von Lukas (Gast)


Lesenswert?

Es liegt an den Voltage Pegel, wenn ich das vonn dem Nullmodem Kabel 
entnehme, sind die Spannungen zu hoch (+/- 10V) und ich wollte eher mich 
auf 0...3,3 V bewegen deswegen die Pins.

von spontan (Gast)


Lesenswert?

Du hast ein Hardware-Verständnisproblem .... und postest Software?

Zeig doch mal einen Schaltplan, seir er noch so einfach. Dannn läßt sich 
was machen.

von holger (Gast)


Lesenswert?

>Du hast ein Hardware-Verständnisproblem .... und postest Software?

Dabei sind auf dem Board schon zwei Sub-D mit RS232 Pegel vorhanden.

Aus dem Kauderwelsch was der da spricht versteht kein Mensch was er
eigentlich will. Was will er wo anschliessen?

>sind die Spannungen zu hoch (+/- 10V) und ich wollte eher mich
>auf 0...3,3 V bewegen deswegen die Pins.

Dann brauchst du einen MAX3232.
Oder nimm die vorhanden Sub-D Buchsen auf dem Board.

von Lukas (Gast)


Lesenswert?

Meine Frage ist, muss ich irgendwie Softwaretechnisch etwas ändern um 
die Signale vom USART Ausgang von meinem Microcontroller auf andere Pins 
auf meinem Microcontroller umzulenken.


Beispiel:

USART1 TX will ich auf PIN PA4
USART1 RX will ich auf PIN PA3

Dann kann ich die Signale von diesen PA4,PA3 abgreifen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Lukas schrieb:
> Meine Frage ist, muss ich irgendwie Softwaretechnisch etwas ändern um
> die Signale vom USART Ausgang von meinem Microcontroller auf andere Pins
> auf meinem Microcontroller umzulenken.

Das ist nicht Deine Frage.

Was willst Du überhaupt erreichen? Und wozu soll das gut sein?

von Achim S. (Gast)


Lesenswert?

Lukas schrieb:
> Beispiel:
>
> USART1 TX will ich auf PIN PA4

schau dir dir "Alternate Function" Beschreibungen und die "Remap 
Register" im Reference Manual deines µC an. Dort findest du z.B.

USART1_REMAP: USART1 remapping
This bit is set and cleared by software. It controls the mapping of 
USART1 TX and RX alternate functions on the GPIO ports.
0: No remap (TX/PA9, RX/PA10)
1: Remap (TX/PB6, RX/PB7)

USART1 TX kann also wohl nur auf PA9 oder auf PB6 gemappt werden.

von Achim S. (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Was willst Du überhaupt erreichen? Und wozu soll das gut sein?

er möchte wohl eine UART-Verbindung über Logik-Pegel statt über RS232 
Pegel aufbauen. Die Standard-Pins des UART laufen auf seinem Èval-Board 
wohl auf RS232 Pegelwandler, daher möchte er die UART-Pins auf andere 
IOs ummappen.

von Michael K. (aemkai)


Lesenswert?

Lukas schrieb:
> Meine Frage ist, muss ich irgendwie Softwaretechnisch etwas ändern um
> die Signale vom USART Ausgang von meinem Microcontroller auf andere Pins
> auf meinem Microcontroller umzulenken.
>
> USART1 TX will ich auf PIN PA4
> USART1 RX will ich auf PIN PA3

In dem Fall müsstest du eine UART-Routine selbst schreiben (oder 
kopieren), dann geht es mit jedem IO-Pin.
Direkt "Umlenken" geht nur wie von Achim S. beschrieben.


> er möchte wohl eine UART-Verbindung über Logik-Pegel statt über RS232
> Pegel aufbauen.

Wenn man kurz ins Datenblatt schaut: RX/TX sind sowohl auf die 
Pegelwandler als auch auf die große Breakout-Stiftleiste (CN10 für 
UART1, wenn ich das richtig lese), damit ist das Abgreifen vor dem 
Wandler kein Problem

: Bearbeitet durch User
von Dietrich L. (dietrichl)


Lesenswert?

Michael K. schrieb:
> Wenn man kurz ins Datenblatt schaut: RX/TX sind sowohl auf die
> Pegelwandler als auch auf die große Breakout-Stiftleiste (CN10 für
> UART1, wenn ich das richtig lese), damit ist das Abgreifen vor dem
> Wandler kein Problem

Dann muss er aber den Ausgang des Pegelwandlers abklemmen, um nicht 
damit zu kollidieren. Oder gibt es da einen Jumper o.Ä.?

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.