STM32f103 SPI Daten empfangen

Gast #1630098
Lesenswert?

Guten Tag,

ich habe ein Problem damit Daten von der SPI1 zu empfangen. Die 
Initialisierung habe ich aus der FW-Lib entnommen. Das Senden 
funktioniert, zumidest soweit wie ich das auf dem Oszi erkennen kann. Um 
Daten zu empfangen benutze ich spi_rx(), ich empfange aber nur 0xff, ist 
die Empfangsfunktion falsch oder muss ich den Fehler woanders suchen?
1
int spi_io(int data)
2
{
3
  SPI_I2S_SendData(SPI1,data);
4
  while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET){;}
5
  return SPI_I2S_ReceiveData(SPI1);
6
}
7

8
void spi_tx(int data){spi_io(data);}
9

10
int spi_rx()
11
{
12
  return spi_io(0xFF);
13
}
Gast #1631994
Lesenswert?

Ich habe den Code nun so geändert, die Sendefunktion hat jetzt zwar auch 
ein return aber das kann ja einfach ignorieren;-)
1
int spi1_tx(int tx)
2
{
3
  int tmp=0;
4
  SPI_SendData(SPI1,tx);
5
  while(SPI_GetFlagStatus(SPI1,SPI_FLAG_TXE)==RESET);
6
  tmp=SPI_ReceiveData(SPI1);
7
  return tmp;
8
}
9
int spi1_rx()
10
{
11
  int rx=0;
12
  while(SPI_GetFlagStatus(SPI1,SPI_FLAG_TXE)==RESET);
13
  SPI_SendData(SPI1,0xFF);
14
  while(SPI_GetFlagStatus(SPI1,SPI_FLAG_RXNE)==RESET);
15
  rx=SPI_ReceiveData(SPI1);
16
  return rx;
17
}

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