Hallo,
ich probiere seit ein paar Tagen einen 22-Bit Analog Digitalwandler von
Microchip auszulesen. Der Wandler wird per SPI angesprochen. (Datenblatt
des Wandlers:
http://ww1.microchip.com/downloads/en/DeviceDoc/21950D.pdf)
Ich gehe zum auslesen so vor:
- /CS auf low
- Warten bis /RDY auf low geht
- 3 Bytes auslesen
- /CS auf high
zwischendurch keine Pegelwechsel von /CS. SPI arbeitet im Modus 1,1.
Das Problem ist, dass so nie Werte ausgegeben werden. Wenn ich /RDY mit
dem Finger berühre schwankt der Pegel zw. 1 und 0, was zur Folge hat,
dass der Chip ausgelesen wird, obwohl keine sinnvollen Daten
bereitstehen.
Mein Quelltext:
1 | IOCLR |= (1<<6); //take cs low
|
2 | PINSEL0 |= (0<<10); // MISO = GPIO 0.5
|
3 | while((IOPIN&(1<<5)));
|
4 | PINSEL0 |= (1<<10); //GPIO 0.5 = MISO
|
5 | ad1 = SPI_SendByte(0x00);
|
6 | ad2 = SPI_SendByte(0x00);
|
7 | ad3 = SPI_SendByte(0x00);
|
8 | IOSET |= (1<<6); //take cs high
|
Wo liegt mein Fehler? Der AD-Wandler ist richtig angeschlossen.