Forum: Mikrocontroller und Digitale Elektronik Keine Daten beim ADC MCP3550 am STM32F4


von bibu (Gast)


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.

von bibu (Gast)


Lesenswert?

Aus dem gewollten kommen keine Daten raus meinte ich natürlich...

von Christian (Gast)


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.

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.