Forum: Mikrocontroller und Digitale Elektronik STM32(Keil, MCBSTM32E) GPIOA Pin15 lässt sich nicht setzen


von AKKS (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Problem mit dem Setzen eines Pins von GPIOA auf einem 
MCBST32E. Ich benutze µV4.

Der Pin 15 lässt sich nicht setzen, die Pins von GPIOB funktionieren 
einwandfrei.
1
  /*----------Begin Init Port A----------*/
2
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;      //USART TX
3
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
4
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
5
6
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
7
8
  GPIO_Init(GPIOA, &GPIO_InitStructure);
9
10
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //USART RX
11
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;        
12
13
  GPIO_Init(GPIOA, &GPIO_InitStructure);
14
15
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //LTC2440
16
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
17
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_15;  // SCK, MOSI, /CS
18
19
  GPIO_Init(GPIOA, &GPIO_InitStructure);
20
21
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //LTC2440 
22
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;        //MISO        
23
24
  GPIO_Init(GPIOA, &GPIO_InitStructure);
25
26
  /*----------End Init Port A----------*/

Hat da jemand eine Idee?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Die initialisierung sieht gut aus.

Für UART/SPI braucht es noch sowas:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

von AKKS (Gast)


Lesenswert?

Hallo,

mein Problem ist der Pin15. Der USART funzt einwandfrei.

Ich will einen Software-SPI schreiben, da ich 32Bit am Stück übertagen 
muss. Deswegen also keine alternate funktion.

AKKS

von (prx) A. K. (prx)


Lesenswert?

AKKS schrieb:

> Ich will einen Software-SPI schreiben, da ich 32Bit am Stück übertagen
> muss.

Seltsame Begründung. Warum sollte das mit Hardware-SPI nicht möglich 
sein?

von AKKS (Gast)


Lesenswert?

Weil ich in der Doku auf folgendes gestoßen bin:

#define IS_SPI_DATASIZE ( DATASIZE    )

Value:
(((DATASIZE) == SPI_DataSize_16b) || \
                                   ((DATASIZE) == SPI_DataSize_8b))
Definition at line 157 of file stm32f10x_spi.h.

Referenced by SPI_DataSizeConfig(), and SPI_Init().

von bubi_00 (Gast)


Lesenswert?

Weiß zwar spontan nicht warum es der Pin sich nicht setzen lässt...es 
hinder dich aber beim SPI niemand daran 2x16Bit bzw 4x8Bit zu 
übertragen.../CS musst du sowieso von Hand setzen.

von AKKS (Gast)


Lesenswert?

Ja gut, merke ich mir.

Der Fehler liegt darin, dass GPIOA_Pin15 zum JTAG-Port gehört.
Hätte ich das Board-Layout vom MCBSTM32 wär ich wohl schneller drauf 
gekommen. Hat das Jemand?

von STM32User (Gast)


Lesenswert?

Hallo AKKS,

wie wäre es mit dem Schaltplan, da steht alles drin, auch der Pin A15:

http://www.keil.com/mcbstm32/mcbstm32-schematics.pdf

Gruß

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.