123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- #include "radio_config.h"
- #include "nrf_delay.h"
- #define PACKET_S1_FIELD_SIZE (0UL)
- #define PACKET_S0_FIELD_SIZE (0UL)
- #define PACKET_LENGTH_FIELD_SIZE (0UL)
- static uint32_t swap_bits(uint32_t inp);
- static uint32_t bytewise_bitswap(uint32_t inp);
- static uint32_t swap_bits(uint32_t inp)
- {
- uint32_t i;
- uint32_t retval = 0;
- inp = (inp & 0x000000FFUL);
- for (i = 0; i < 8; i++)
- {
- retval |= ((inp >> i) & 0x01) << (7 - i);
- }
- return retval;
- }
- static uint32_t bytewise_bitswap(uint32_t inp)
- {
- return (swap_bits(inp >> 24) << 24)
- | (swap_bits(inp >> 16) << 16)
- | (swap_bits(inp >> 8) << 8)
- | (swap_bits(inp));
- }
- void radio_configure()
- {
-
- NRF_RADIO->TXPOWER = (RADIO_TXPOWER_TXPOWER_0dBm << RADIO_TXPOWER_TXPOWER_Pos);
- NRF_RADIO->FREQUENCY = 7UL;
- NRF_RADIO->MODE = (RADIO_MODE_MODE_Nrf_1Mbit << RADIO_MODE_MODE_Pos);
-
- NRF_RADIO->PREFIX0 =
- ((uint32_t)swap_bits(0xC3) << 24)
- | ((uint32_t)swap_bits(0xC2) << 16)
- | ((uint32_t)swap_bits(0xC1) << 8)
- | ((uint32_t)swap_bits(0xC0) << 0);
- NRF_RADIO->PREFIX1 =
- ((uint32_t)swap_bits(0xC7) << 24)
- | ((uint32_t)swap_bits(0xC6) << 16)
- | ((uint32_t)swap_bits(0xC4) << 0);
- NRF_RADIO->BASE0 = bytewise_bitswap(0x01234567UL);
- NRF_RADIO->BASE1 = bytewise_bitswap(0x89ABCDEFUL);
- NRF_RADIO->TXADDRESS = 0x00UL;
- NRF_RADIO->RXADDRESSES = 0x01UL;
-
- NRF_RADIO->PCNF0 = (PACKET_S1_FIELD_SIZE << RADIO_PCNF0_S1LEN_Pos) |
- (PACKET_S0_FIELD_SIZE << RADIO_PCNF0_S0LEN_Pos) |
- (PACKET_LENGTH_FIELD_SIZE << RADIO_PCNF0_LFLEN_Pos);
-
- NRF_RADIO->PCNF1 = (RADIO_PCNF1_WHITEEN_Disabled << RADIO_PCNF1_WHITEEN_Pos) |
- (RADIO_PCNF1_ENDIAN_Big << RADIO_PCNF1_ENDIAN_Pos) |
- (PACKET_BASE_ADDRESS_LENGTH << RADIO_PCNF1_BALEN_Pos) |
- (PACKET_STATIC_LENGTH << RADIO_PCNF1_STATLEN_Pos) |
- (PACKET_PAYLOAD_MAXSIZE << RADIO_PCNF1_MAXLEN_Pos);
-
- NRF_RADIO->CRCCNF = (RADIO_CRCCNF_LEN_Two << RADIO_CRCCNF_LEN_Pos);
- if ((NRF_RADIO->CRCCNF & RADIO_CRCCNF_LEN_Msk) == (RADIO_CRCCNF_LEN_Two << RADIO_CRCCNF_LEN_Pos))
- {
- NRF_RADIO->CRCINIT = 0xFFFFUL;
- NRF_RADIO->CRCPOLY = 0x11021UL;
- }
- else if ((NRF_RADIO->CRCCNF & RADIO_CRCCNF_LEN_Msk) == (RADIO_CRCCNF_LEN_One << RADIO_CRCCNF_LEN_Pos))
- {
- NRF_RADIO->CRCINIT = 0xFFUL;
- NRF_RADIO->CRCPOLY = 0x107UL;
- }
- }
|