Keine Daten beim ADC MCP3550 am STM32F4

Gast #3975072
Lesenswert?

Moin Moin,

ich hab das Problem, dass ich keine Daten von meinem ADC empfangen 
kann... Die Verbindung stimmt, Daten kommen an. Am SPI hängt auch noch 
ein anderer ADC bei dem das auslesen funktioniert.
Beim gewollten kommt aber leider nichts an.

Datenblatt:
http://ww1.microchip.com/downloads/en/devicedoc/21950c.pdf

Hier der kommentierte Code:
1
uint8_t adc_v2_auslesen(){
2

3
  GPIOD->BSRRH |= GPIO_Pin_5;//CS-high
4
  //Delay(1650000);
5
  while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_11)==1);  //warten bis /RDY auf low (MISO)
6
    if(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == SET)
7
        { SPI_I2S_ReceiveData(SPI1);}
8
    ad_wert[4]=Spi2TxRx8b(0x00);    //Bytes lesen
9
    ad_wert[5]=Spi2TxRx8b(0x00);
10
    ad_wert[6]=Spi2TxRx8b(0x00);
11
    Spi2TxRx8b(0x00); //letzer Byte ist egal
12
    Delay(1000);
13
  GPIOD->BSRRL |= GPIO_Pin_5;    //CS high
14

15
  return 0;
16
}

Bei dem anderen ADC funktioniert alles gut dort ist allerdings keine 
Warteroutine drinne, weil der das nicht braucht. Hier einfach auch noch 
der Code vom anderen ADC:
1
uint8_t adc_v1_auslesen(){
2

3
  GPIOD->BSRRH |= GPIO_Pin_1;
4
  Spi2TxRx8b(0x00);
5
  if(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == SET)
6
      { SPI_I2S_ReceiveData(SPI1);
7
      }
8
    Spi2TxRx8b(0xFF);
9
    ad_wert[0]=Spi2TxRx8b(0x00);
10
    ad_wert[1]=Spi2TxRx8b(0x00);
11
    Delay(1000);
12
  GPIOD->BSRRL |= GPIO_Pin_1;
13
  return 0;
14
}

Danke schon mal fürs lesen und eventuelle Antworten.
Gast #4900934
Lesenswert?

Hallo Bibu,
ich hatte auch dieses Problem und glaube die Ursache zu kennen.
Nach dem Power up muss das CS einen Zyklus machen zuerst High, dann kurz 
Low und wieder high. Es steht wo im Datenblatt.Sonst läuft der Chip 
intern nicht los.
Aber bei einem Steckbrettaufbau sind die Streueungen risengroß.
So werden aus den 22 bit dann letztlich +-16 bit.

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