nrf24 Transmitter

kfjl

Member
Code:
'TRANSMITTER   (nrf24_Transmitter.bas)

'Power supply: 3.3V from computer USB or phone charger via FTDI =
'no 5V, phantom or otherwise, to fry nrf
'Inverter levels RX / TX : 74HCT04

'nrf24                      20X2
************************
'1 GND     Black       GND
'2 VCC      Red          VCC     THREE point THREE volts !!!.!!! 
'3 CE         Brown     B.1
'4 CSN      White       B.6
'5 SCK      Yellow       B.7
'6 MOSI   Green       SDO C.1
'7 MISO   Orange    SDI B.5
'8 INT       Grey         C.5  10k PullUP

#picaxe 20x2
#no_data
#no_table

symbol CE =   B.1        'Chip Enable 
symbol CSN =  B.6      'Chip Select (active low)

init:
B10=0
input  C.5           
output b.1 
output b.6          
setfreq m16
hspisetup spimode00,spifast 
high CSN     'active low
low CE
pause 20

'CONFIG_TX_MODE:

low csn
hspiout (%00100000,%00001010)   'REG0 CONFIG EN PTX + Power ON + EN CRC 1 byte
high csn

'REGs 1 to 16 default values EXCEPT REG4 et 6

low csn
hspiout (%00100100,%11111111) 'REG4 SETUP_RETR wait 4ms, 15 retries
high csn

low csn
hspiout (%00100110,%00001000) 'REG6 RFSETUP -18dBm,2Mbs
high csn

pause 20
gosub clear_interrupts

main:

do
pause 2000
low CSN
hspiout(%10100000,B10)    'Write TX Payload
high CSN
pulsout CE,10    'Send data
pause 20

sertxd("Sent ",#B10,CR,LF)

low CSN
hspiout(%11100001) 'Flush_TX
high CSN

gosub Clear_interrupts

if B10<10 then
    let B10=B10+1
else
    let B10=0
endif

loop

Clear_interrupts:

low csn
hspiout (%00100111,%01110000)  
high csn
return

readregs: 

for b1 = 0 to 09  'registers 0 - 9 (decimal)    
low CSN
hspiout (b1)
hspiin (b0)
high CSN
sertxd(#b0,CR,LF) 
next b1

for b1 = 10 to 16    'Addresses with 5 byte registers
low csn
hspiout(b1)
hspiin (b4,b5,b6,b7,b8)
high csn
sertxd (#b4,#b5,#b6,#b7,#b8,CR,LF) 
next b1

for b1 = 17 to 23
low CSN
hspiout (b1)
hspiin (b0)
high CSN
sertxd (#b0,CR,LF)
next b1 
return
Source (en français) : http://alpmn.byethost32.com/nrf24l01p.htm

A suivre.....
 
Top