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