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.