там все уже реализовано. читай регистр 0x07 STATUS
6 бит RX_DR Прерываниепо получению пакета. Бит устанавливается в единицу, когда усройство врежиме приняло адресованый ему пакет с совпавшей контрольной суммой. Бит сбрасывается путёмзаписи в него значения 1.Принятый пакет доступен в очереди приёмника, и может быть прочитан командой R_RX_PAYLOAD,либо удалён командой FLUSH_RX.
5 бит TX_DS Прерываниепо успешной отправке пакета. Бит устанавливается в единицу, когдаустройство в режиме передатчика успешно отправило пакет и, если включено автоподтверждение,приняло подтверждение получения. После успешной отправки пакет удаляется из очередипередатчика. Бит сбрасывается путём записи в него значения 1.
4 бит MAX_RT Прерываниепо превышению числа попыток повторной отправки. Бит устанавливается вединицу, когда устройство в режиме передатчика предприняло заданное в регистре SETUP_RETRколичество попыток отправки, но так и не получило подтверждение от удалённого устройства.Передаваемый пакет остаётся в очереди передатчика. Для удаления его можно воспользоватьсякомандой FLUSH_TX. Дальнейшая коммуникация невозможна, пока этот бит установлен. Битсбрасывается путём записи в него значения 1.Пока любой из бит RX_DR, TX_DS, MAX_RT установлен в единицу и соответствующее емупрерывание не запрещено (т.е. соответствующие из бит MASK_RX_DR, MASK_TX_DS,MASK_MAX_RT в регистре CONFIG равны нулю), то на выходе IRQ чипа устанавливается низкийуровень. Для сброса значений этих бит, необходимо записать регистр STATUS с этими битами,установленными в 1.
Еще проще, получив прерывание IRQ прочитать STATUS и отправить его обратно. Это сбросит прерывание и разрешит передачу.