Ich versuche eine Datenkommunikation zwischen 2 Transceiver (RFM70)
aufzubauen. Der Chip ist ident mit dem BK2401 und dem nRF24L01 von
Nordic.(wobei der nRF24L01 nur eine Registerbank hat)
Mein Problem ist, das ich noch keine Daten empfange.
Als MCU verwende ich jeweils einen Atmel 90PWM316 und steuere die
transceiver über die SPI-Schnittstelle an.
Hier die Übersicht wie ich vorgehe:
a.) Senderseite: (die Daten AF und A3 sollen übertragen werden)
1 | void main(void)
|
2 | {
|
3 | CS_high(3000); // CS = high
|
4 | DDRB |= (1<<PB3); // Set PB3(CE) = output
|
5 | CE_low(); // Set CE = low
|
6 | DDRC = 0xFF; // PORTC = Output
|
7 | _delay_ms(1000); // Power-on-delay 1000ms
|
8 |
|
9 | SPI_Master_Init(); // Init SPI Settings
|
10 | Init_RF_Settings(); // Init RF Settings
|
11 | Power_Up(); // Set Radio in Power Up Modus
|
12 |
|
13 | while(1)
|
14 | {
|
15 | Flush_TX(); // Clear FIFO
|
16 | Payload_TX(0xAF); // Payload TX: send 0xAF data
|
17 | CE_High_Pulse(); // CE = 1 for 50us
|
18 | _delay_ms(1000);
|
19 |
|
20 | Payload_TX(0xA3); // Payload TX: send 0xA3 data
|
21 | CE_High_Pulse(); // CE = 1 for 50us
|
22 | _delay_ms(1000);
|
23 | }
|
24 | }
|
b.) auf der Empfängerseite (hier sollen die Daten empfangen und am PORTC
ausgegeben werden)
1 | void main(void)
|
2 | {
|
3 | CE_low(); // Chip Enable = 0
|
4 | CS_high(3000); // CS = high
|
5 | DDRB |= (1<<PB3); // Set PB3(CE) = output
|
6 | DDRC = 0xFF; // PORTC = Output
|
7 | SPI_Master_Init(); // Init SPI
|
8 | Init_RF_Settings(); // RF Settings
|
9 | CE_high(); // Chip Enable = 1
|
10 | _delay_ms(1000); // Power-on-delay
|
11 | Power_Up();
|
12 |
|
13 | while(1)
|
14 | {
|
15 | Flush_RX();
|
16 | Payload_RX();
|
17 | PORTC = SPDR;
|
18 | }
|
19 | }
|
Ist die Vorgehensweise grundsätzlich richtig bzw. hat jemand Erfahrung
mit dem Transceiver?
Danke für Eure Hilfe!!!