I am trying to send lots of data through radio (basing on old micro esb project from github, but heavily modified). I need to keep radio IDLE (not DISABLED) when not transmitting, because ramp-up time sometimes is too long and i am loosing data i need to stream. I need to change PACKETPTR value after every transmission. However, I think that some RADIO registers cannot be changed after DISABLED->TXIDLE transition.
Could you specify which registers cannot be modified after ramp-up, if any? Maybe my problem lies somewhere else, but i am observing weird behavior when trying to change some registers after ramp-up - that is why i suspect there is some register latching.
I am using nRF52.
In nRF51 there was something like "Maximum consecutive transmission time". Does it also apply to nRF52?
My program flow is like this:
- configure radio, wait for tx ramp up, stay in TXIDLE
- SPIM transfer triggered by ppi from gpiote (800Hz)
- data from spi is being processed
- setting processed data to one of two buffers used by the radio (setting RADIO PACKETPTR)
- radio task start
- wait for another transfer, step 2.
Throughput of the radio is high enough for 800Hz with my payload, because when i DISABLE the radio after each succesfull transfer and do TXEN (shorted with start) to send the data, i am getting all the packets. But when I do as listed above, I loose about 30-40% of packets. I could go with disabling the RADIO, but I need higher SPIM trigger frequency (1.6kHz), and I am short of about 3 microseconds (using fast ramp-up) then.