void net_init() { uint8_t addr_array[5] = {0xE7, 0xE7, 0xE7, 0xE7, 0xE7}; RXEN_hi; // enable amp NRF_CE_lo; NRF_WriteRegister(NRF_CONFIG, 0x3C); // Enable CRC and disable TX interrupts NRF_WriteRegister(NRF_EN_AA, 0x0); // Disable auto ACK NRF_WriteRegister(NRF_EN_RXADDR, 0x3F); // Receive Pipe 0 enabled NRF_WriteRegister(NRF_SETUP_RETR, 0); // Retransmits NRF_WriteRegister(NRF_SETUP_AW, 0x03); // Address Width (5 bytes) NRF_WriteRegister(NRF_RF_SETUP, bandwidth | power); // set up NRF_WriteRegister(NRF_RF_CH, channel); // RF Channel NRF_WriteRegister(NRF_RX_PW_P0, 16); // RX Payload Width NRF_WriteRegister(NRF_FEATURE, 0x01); NRF_WriteRegisterMulti(NRF_TX_ADDR, 5, addr_array); NRF_WriteRegisterMulti(NRF_RX_ADDR_P0, 5, addr_array); NRF_WriteRegister(NRF_STATUS, 0x7E); // Clear Interrupts NRF_SendCommand(NRF_FLUSH_TX, 0xFF); NRF_WriteRegister(NRF_CONFIG, 0x0E); recv_setup(); NRF_WriteRegister(NRF_STATUS, 0x70); // clear radio interrupts uint8_t status = NRF_ReadRegister(NRF_STATUS); if (status == 0x0E) { printf("Radio is ready\n"); } else { printf("Radio failed to initialize\n"); } }
void NRF_SetupTX(void) { uint8_t addr_array[5]; NRF_CE_lo; NRF_WriteRegister(NRF_CONFIG, 0x0C); //NRF_WriteRegister(NRF_EN_AA, 0x3F); // AutoAcknowledge NRF_WriteRegister(NRF_EN_AA, 0x3F); NRF_WriteRegister(NRF_EN_RXADDR, 0x3F); // Receive Pipe 0 enabled NRF_WriteRegister(NRF_SETUP_RETR, 15); // Retransmits NRF_WriteRegister(NRF_SETUP_AW, 0x03); // Address Width (5 bytes) NRF_WriteRegister(NRF_RF_SETUP, 0x0F); // RF Setup //NRF_WriteRegister(NRF_RF_SETUP, 0x08); // -28dB NRF_WriteRegister(NRF_RF_CH, NODE_CH); // RF Channel NRF_WriteRegister(NRF_RX_PW_P0, 32); // RX Payload Width NRF_WriteRegister(NRF_FEATURE, 0x01); #if NODE_ID == 1 addr_array[0] = 0xE7; addr_array[1] = 0xE7; addr_array[2] = 0xE7; addr_array[3] = 0xE7; addr_array[4] = 0xE7; #else addr_array[0] = 0xC0 + NODE_ID; addr_array[1] = 0xC2; addr_array[2] = 0xC2; addr_array[3] = 0xC2; addr_array[4] = 0xC2; #endif NRF_WriteRegisterMulti(NRF_TX_ADDR, 5, addr_array); NRF_WriteRegisterMulti(NRF_RX_ADDR_P0, 5, addr_array); //NRF_WriteRegister(NRF_RX_ADDR_P1, 2); NRF_WriteRegister(NRF_STATUS, 0x7E); // Clear Interrupts //NRF_WriteRegister(NRF_CONFIG, 0x0E); // Power Up, Transmitter NRF_SendCommand(NRF_FLUSH_TX, 0xFF); NRF_WriteRegister(NRF_CONFIG, 0x0E); }