This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Carrier On / Off toggle speed

Hello,

I am currently implementing an OOK modulation with the nRF52 -DK and therefore I need to start the radio with a carrier on defined frequency. Obviously there is a way in the nRF via register access and I also make use of the fast ramp-up to increase speed.


For testing purposes I'd like to create a rectangular signal with the lowest period possible and I get this: https://pasteboard.co/HigVOoR.png

According to the spec the carrier is on once the radio reaches the TXIDLE, once in TXIDLE (Ready event) I immediately disable the radio. This should take 4us with 2MBit BLE in which the carrier should stay on, however I measure a carrier of 12-15us instead of 4us. Why is this and is there a way to shorten this time?

My code:

NRF_RADIO->MODECNF0   =
			(RADIO_MODECNF0_DTX_Center << RADIO_MODECNF0_DTX_Pos) |
			(RADIO_MODECNF0_RU_Fast << RADIO_MODECNF0_RU_Pos);
NRF_RADIO->TXPOWER    = (RADIO_TXPOWER_TXPOWER_Neg20dBm << RADIO_TXPOWER_TXPOWER_Pos);
NRF_RADIO->MODE       = (RADIO_MODE_MODE_Ble_2Mbit << RADIO_MODE_MODE_Pos);
NRF_RADIO->FREQUENCY  = 75;
NRF_RADIO->PCNF0 = 0;
NRF_RADIO->SHORTS = 0;

NRF_RNG->TASKS_START = 1;

while(true) {
    NRF_RADIO->TASKS_TXEN = 1;
	for (NRF_RADIO->EVENTS_READY = 0; !NRF_RADIO->EVENTS_READY; );
 	NRF_RADIO->EVENTS_READY = 0;
 	
 	NRF_RADIO->EVENTS_DISABLED = 0;
    for(NRF_RADIO->TASKS_DISABLE = 1; !NRF_RADIO->EVENTS_DISABLED; );
    NRF_RADIO->EVENTS_DISABLED = 0;
}

Best
Paul

Parents Reply Children
No Data
Related