USART TX,RX AUF PINS ?

Gast #3422667
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
}
Gast #3422699
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.
#3423044
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?
Gast #3423334
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.
Gast #3424074
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.
Gast #3424211
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.
#3424235
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
#3424550
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.Ä.?

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