I've found a few things, I 'think' the registers are being set correctly, but I cannot read back from it.
I just don't get the full-duplex SPI in this case.
New code and debug data below:
Register constants:
Code:
'Constants here
RF_Init_Values[0] = $28 'Standby mode, 915-928 MHz, VTune by inductors, ENABLE R1/P1/S1
RF_Init_Values[1] = $8C 'FSK, max IF gain, Packet Mode
RF_Init_Values[2] = $01 '200KHz Freq Dev
RF_Init_Values[3] = $63 '2KBps
RF_Init_Values[4] = $0C 'for OOK mode, not apliable
RF_Init_Values[5] = $03 '16Bytes FIFO, 3 Bytes threshold FIFO transmit interrupt
RF_Init_Values[6] = $77 '915MHz R1 Reg
RF_Init_Values[7] = $64 '915MHz P1 Reg
RF_Init_Values[8] = $32 '915MHz S1 Reg
RF_Init_Values[9] = $74 '920MHz R2 Reg
RF_Init_Values[10] = $62 '920MHz P2 Reg
RF_Init_Values[11] = $32 '920MHz S2 Reg
RF_Init_Values[12] = $38 'config mode for OOK, not apliable
RF_Init_Values[13] = $00 'interrupts by default
RF_Init_Values[14] = $19 '00011001
RF_Init_Values[15] = $00 '
RF_Init_Values[16] = $A3 'default filters config
RF_Init_Values[17] = $38 'default filters config
RF_Init_Values[18] = $30 'sync word ON, 24bits, 0 errors tolerance
RF_Init_Values[19] = $00 'reserved reg
RF_Init_Values[20] = $00 'RSII status read register, 0.5dB / bit
RF_Init_Values[21] = $00 'OOK config reg
RF_Init_Values[22] = $53 '"S" 1st byte of sync word
RF_Init_Values[23] = $59 '"Y" 2nd byte of sync word
RF_Init_Values[24] = $44 '"D" 3rd byte of sync word
RF_Init_Values[25] = $00 '
RF_Init_Values[26] = $70 'utoff fcy = 200KHz, output power = 13dBm 0b000
RF_Init_Values[27] = $BC 'clk out by default 427KHz
RF_Init_Values[28] = $02 '3 bytes payload
RF_Init_Values[29] = $01 'initial MAC ADDRESS, only for test
RF_Init_Values[30] = $5E 'Fix Packet Lenght, 3 bytes preamble, whitening ON, CRC ON, Node ADDR|0x00|0xFF filtering
RF_Init_Values[31] = $00 'FIFO autocreal enable if CRC fails, Write to FIFO in stby mode
and the new code for writing to the part:
Code:
'MRF initialization here
debug "@ MRF init", 10
MRFConfigSel=0 'Select the chip
'Going to try using shiftout before using hardware SPI
for i=0 to 31 'Sets up the index var for data
MRFaddr=(i << 1) 'Shifts address 1 bit to left, automatically gets start,write, and stop bits
SHIFTOUT SDO, SCLK, 1,[MRFaddr,RF_Init_Values[i]] 'send data to register
debug "Addr=",bin8 MRFaddr," Value=",hex2 RF_Init_Values[i],13
next i
MRFConfigSel=1 'Deselect the chip
'Try to read back the 1st 8 registers as a test to see if they were written correctly
MRFConfigSel=0 'Select the chip
for i = 0 to 7 'Sets up address to read
MRFaddr=((i << 1) | $40) 'Shifts left 1 bit, sets $40 bit, automatically gets start, READ, and stop bits
SHIFTOUT SDO, SCLK, 1,[MRFaddr] 'Address to read
SHIFTIN SDI, SCLK, 0,[MRFSPIdata] 'Get data from reg
debug "MRF Config data: i=", dec1 i, " Register ", bin8 MRFaddr, " Data=", hex2 MRFSPIdata,13
next i
MRFConfigSel=1 'Deselect the chip
Then I try to send 3 bytes:
Code:
'Try sending something
debug "Try sending 3 bytes",13
XMIT_EN: i=0 'Register of interest
MRFaddr=(i<<1) 'Gets register address format
MRFConfigSel=0 'Select the chip
SHIFTOUT SDO, SCLK, 1,[MRFaddr,$88] 'send data, TRANSMIT, 915-928, Vtune by tank caps, Enable R1 P1 S1
MRFConfigSel=1 'Deselect the chip
XMIT: MRFDataSel=0
SHIFTOUT SDO, SCLK, 1,[$A1]
MRFDataSel=1
MRFDataSel=0
SHIFTOUT SDO, SCLK, 1,[$B1]
MRFDataSel=1
MRFDataSel=0
SHIFTOUT SDO, SCLK, 1,[$C1]
MRFDataSel=1
XMIT_STDBY:i=0 'Register of interest
MRFaddr=(i<<1) 'Gets register address format
MRFConfigSel=0 'Select the chip
SHIFTOUT SDO, SCLK, 1,[MRFaddr,$28] 'send data, STANDBY, 915-928, Vtune by tank caps, Enable R1 P1 S1
MRFConfigSel=1 'Deselect the chip
and the debug data:
Code:
@ MRF init
Addr=00000000 Value=28
Addr=00000010 Value=8C
Addr=00000100 Value=01
Addr=00000110 Value=63
Addr=00001000 Value=0C
Addr=00001010 Value=03
Addr=00001100 Value=77
Addr=00001110 Value=64
Addr=00010000 Value=32
Addr=00010010 Value=74
Addr=00010100 Value=62
Addr=00010110 Value=32
Addr=00011000 Value=38
Addr=00011010 Value=00
Addr=00011100 Value=19
Addr=00011110 Value=00
Addr=00100000 Value=A3
Addr=00100010 Value=38
Addr=00100100 Value=30
Addr=00100110 Value=00
Addr=00101000 Value=00
Addr=00101010 Value=00
Addr=00101100 Value=53
Addr=00101110 Value=59
Addr=00110000 Value=44
Addr=00110010 Value=00
Addr=00110100 Value=70
Addr=00110110 Value=BC
Addr=00111000 Value=02
Addr=00111010 Value=01
Addr=00111100 Value=5E
Addr=00111110 Value=00
MRF Config data: i=0 Register 01000000 Data=00
MRF Config data: i=1 Register 01000010 Data=00
MRF Config data: i=2 Register 01000100 Data=00
MRF Config data: i=3 Register 01000110 Data=00
MRF Config data: i=4 Register 01001000 Data=00
MRF Config data: i=5 Register 01001010 Data=00
MRF Config data: i=6 Register 01001100 Data=00
MRF Config data: i=7 Register 01001110 Data=00
Try sending 3 bytes
I got my ZENA sniffer but it does not pick up anything in RAW sniffer mode........
How can I check to see if it transmits correctly when I don't know if I can read the registers or see if it transmits?
-Stuck in RF bleakness......
Bookmarks