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

NRF24LE1 pipe1 to 5 ACK failed to be received

I have tried many different initialize setting, however the ACK could not be received in pine 1 to 5. The PRX can receive all of the 6 pipes. It works for pipe 0 only. Would anyone please help?

My rf_init() of PRX is as below:

RFCE = 0; RFCKEN = 1; RF = 1; delay(1000);

SPI_RW_Reg(WRITE_REG + EN_AA, 0x03f); SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x3f); SPI_RW_Reg(WRITE_REG + SETUP_AW,0x03); SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1f); SPI_RW_Reg(WRITE_REG + RF_CH, 0);
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x0f); SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS0, TX_ADR_WIDTH); SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, TX_ADDRESS1, TX_ADR_WIDTH); SPI_Write_Buf(WRITE_REG + RX_ADDR_P2, TX_ADDRESS2, 1); SPI_Write_Buf(WRITE_REG + RX_ADDR_P3, TX_ADDRESS3, 1); SPI_Write_Buf(WRITE_REG + RX_ADDR_P4, TX_ADDRESS4, 1); SPI_Write_Buf(WRITE_REG + RX_ADDR_P5, TX_ADDRESS5, 1); SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS0, TX_ADR_WIDTH);
SPI_RW_Reg(WRITE_REG + DYNPD, 0x3f); SPI_RW_Reg(WRITE_REG + FEATURE, 0x06);

I set the address 0 of PTX to be

SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS1, TX_ADR_WIDTH);

SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS1, TX_ADR_WIDTH);

The 6 address are as below, the rf_init of PTX is the same as that one in PRX, I have tried different EN_RXADDR, EN_AA and also tried to set RX_PW_P0 as my payload width but the results all the same.

uint8_t const TX_ADDRESS0[TX_ADR_WIDTH] = {0x46,0x47,0x46,0x47,0x46}; uint8_t const TX_ADDRESS1[TX_ADR_WIDTH] = {0x41,0x45,0x49,0x45,0x48}; uint8_t const TX_ADDRESS2[TX_ADR_WIDTH] = {0x42}; uint8_t const TX_ADDRESS3[TX_ADR_WIDTH] = {0x43}; uint8_t const TX_ADDRESS4[TX_ADR_WIDTH] = {0x44}; uint8_t const TX_ADDRESS5[TX_ADR_WIDTH] = {0x45};

Related