Guten Tag!
Ich habe ein Problem mit dem CC1101Q1 von TI. Und zwar kann ich die RX
Daten nicht aus dem Chip auslesen. Dass Daten im FIFO sind bin ich mir
sicher.
Den Chip habe ich so eingestellt, dass der GDO0 Pin auf high zieht, wenn
ein Packet angekommen ist und wieder auf low geht wenn ich die Daten
ausgelesen habe, allerdings macht er das nicht.
Hier die lese Funktion:
1 | // Liest ein Byte aus einer bestimmten Adresse
|
2 | // ===========================================
|
3 | unsigned char spi_read (unsigned char adress)
|
4 | {
|
5 | SS_set; // SlaveSelect setzen
|
6 | CHIP_RDY; // Warten bis Chipbereit
|
7 | SPIE.DATA = adress; // Readbit = 1, Burstaccess = 0
|
8 | WHAIT4SPI; // Wartet bis Byte gesendet wurde
|
9 | _delay_us(1);
|
10 | SPIE.DATA = 0; // erneut senden, um zu lesenden Daten in SPIE.DATA zu laden
|
11 | WHAIT4SPI; // Wartet bis Byte gesendet wurde
|
12 | SS_clear; // SlaveSelect zurücksetzen
|
13 | return SPIE.DATA; // gibt die Daten zurück
|
14 | }
|
Die Leseadresse des FIFO ist 0xbf
Hier noch die Routine mit der ich das FIFO auslese:
1 | // Liest die Empfangenen Daten aus dem Transceiver aus und speichert sie in cc1101_RX_data[]
|
2 | // =========================================================================================
|
3 | void cc1101_get_data()
|
4 | {
|
5 | unsigned char cc1101_RX_read_adress = 0xbf; //Single byte access to RX FIFO
|
6 |
|
7 | // RX FIFO Daten auslesen
|
8 | for (unsigned char i = 0; i <= 7 ; i++)
|
9 | {
|
10 | cc1101_RX_data[i] = spi_read(cc1101_RX_read_adress);
|
11 | }
|
12 | }
|
Ich bekomm die Daten einfach nicht aus dem FIFO raus.
MfG.: Benjamin M.