В вашем примере кстати всё очень прозрачно: инициализация - RF12_INIT(включаем модуль (передатчик или приёмник, синтезатор, осциллятор и т.д.), задаём ему несущую частоту, полосу, задаём скорость обмена по радиоканалу, синхрокод...)
передача: посылаются несколько байт 0xAA, для синхронизации, потом синхрокод 0x2DD4, после чего идут данные.
приём: например при инициализации задали что работаем через FIFO, при приёме заданного количества битов после синхрокода выставляется ноль на ножке nIRQ --> считываем данные из приёмника, послав последовательность 0xB000, при этом вернётся 0xXXDD, DD - данные. Можно не ждать ноля на ножке nIRQ, а считывать статус посылая на модуль пакет 0x0000, в статусе вообще много полезной информации (см. даташит), в том числе там же есть бит переполнения FIFO буфера (сбрасывается сразу после чтения статуса). Т.о. можно считывать данные после выставления этого бита.


